Launch Handler API Demo - Online Control App Launch Behavior
Configure how your PWA launches: focus existing or create new. Test with the launch_handler manifest field.
UD5 Toolkit
Tap any vibration button — the icon shakes even on desktop
100-50-100 ms
300-100-300 ms
100-50-200 ms
500-100-200-100-200
50-100-50-100-50-300
Morse pattern
100-100-100-100-100
500-200-500-200-500
30 ms micro-tap
150-30-150-30-150-30-150
navigator.vibrate(). It's primarily used on mobile devices to provide haptic feedback for notifications, alerts, game interactions, and more. The API accepts either a single duration (in milliseconds) or an array of durations defining a vibration-pause pattern.navigator.vibrate(200); — vibrates for 200ms.navigator.vibrate([100, 50, 100]); — vibrate 100ms, pause 50ms, vibrate 100ms.navigator.vibrate(0); or navigator.vibrate([]);if ('vibrate' in navigator) { ... }navigator.vibrate exists as a function (to avoid breaking websites that check for support), it does not produce any haptic feedback. This is a deliberate design decision by Apple. There is currently no workaround for web apps — native iOS apps use UIFeedbackGenerator instead. For cross-platform haptic feedback, consider building a native app or using a PWA on Android.navigator.vibrate(). The array alternates between vibration duration (odd-indexed: 1st, 3rd, 5th...) and pause duration (even-indexed: 2nd, 4th, 6th...). All values are in milliseconds. For example, [300, 100, 300] means: vibrate 300ms → pause 100ms → vibrate 300ms. Keep total duration reasonable (under 5 seconds) for the best user experience. Use our Custom Pattern input above to test your patterns instantly.localhost, the API works fine regardless of protocol.navigator.vibrate(0) or navigator.vibrate([]) to immediately cancel any active vibration. This is useful when the user navigates away, closes a modal, or when you need to interrupt a long vibration pattern. On this demo page, use the red "Stop Vibration Immediately" button to test this functionality.Configure how your PWA launches: focus existing or create new. Test with the launch_handler manifest field.
Compress and decompress text using the browser's native Compression Streams API. See the binary output size.
Query the permission state of camera, microphone, geolocation, and more. See the response and learn the API.
Connect a game controller and see every button press, axis movement, and vibration test. Uses the Gamepad API.
Unified input demo: see pressure, tilt, and type from any pointer. Compare pointerType values. Essential for drawing apps.
Write JavaScript using element.animate() and see the result in a live preview. Compare with CSS keyframes. Debugger included.
Toggle a screen wake lock to prevent the device from dimming or sleeping. See the lock state and learn the API.
Test the experimental Translation API to translate text between languages directly in the browser, without cloud calls. Check support and copy the JavaScript starter.
Decode an image progressively using the ImageDecoder API. See partial results and metadata. Modern alternative to <img>.
Decode individual video frames from a local file using the VideoDecoder API. Step through frames. Cutting‑edge browser feature.
Limit browser gestures on an element: pan‑x, pinch‑zoom, manipulation. Draw on a canvas to test. Mobile dev helper.
Experiment with the Federated Credential Management API. Simulate a sign‑in flow without third‑party cookies. Privacy‑first.
Open a test video in Picture‑in‑Picture mode. Control entering and leaving PiP. Copy the code snippet for your own app.
Request HID devices and list them. Read input reports and send output. For custom hardware and controllers.
Request permission and detect when the user is idle (away from keyboard). See screen lock state. For native‑like apps.
Demonstrate how the Web OTP API automatically reads one‑time codes from SMS (mobile). Simulation with a fake SMS input.
Acquire and release locks across tabs. Prevent race conditions in IndexedDB or localStorage. Visual queue and lock state.
Connect a gamepad and see all button presses and axis movements visually. Check that every input is detected correctly.
Display your effective connection type (4g, 3g, etc.) and downlink speed using the Navigator API. Adapt your app accordingly.
See your device's battery level, charging status, and discharge time using the Battery Status API. Fun utility.
Check current screen orientation and test the lock API. Useful for mobile web apps. Demo with code.
Test the new HTML popover attribute for creating accessible tooltips, menus, and dialogs without JavaScript. Copy code snippets.
See the View Transitions API in action. Cross‑fade and morph between two states. Copy the JavaScript starter code.
Experiment with the Async Clipboard API: read/write text and images from the clipboard. Verify permissions and see demo code.
Test the Web Share API by sharing text, links, and files directly from the browser. Check compatibility and see example code.
Enter an API URL and quickly check its HTTP status code and response time. See response headers and body. Browser fetch.
Pick a method, URL, headers, and body, then send an HTTP request directly from your browser. Debug APIs easily.
Generate random JSON data with customizable fields (users, products, orders). Useful for frontend mocking. All local.
Execute GraphQL queries against any endpoint with variables and headers. Explore schema via introspection. All requests made directly from your browser.
Preview any website inside emulated device viewports (iPhone, iPad, various resolutions). No screenshot, live interaction in an iframe. Local tool.