On this page
Vibration Test
Fire single pulses, preset patterns and your own custom rhythm through the Vibration API, then confirm by hand whether you felt each one.
- Available — Live on this site right now.
- Browser Tool — Runs in the browser you are reading this in.
- No Install — Nothing to download, no extension, no account.
- Client-Side — Runs entirely on your device. No test data is uploaded.
- Mobile — Built for phone and tablet hardware.
This page explains the tool. The tool itself is one click away and needs no sign-in.
Open Vibration TestWhat is this tool?
The Vibration Test asks your browser to run the haptic motor using the Vibration API — a single call, navigator.vibrate, that takes either a duration in milliseconds or an alternating array of vibrate and pause durations. That is the entire interface the web gives to haptics.
Because the API is write-only, there is no reading to display. The page therefore pairs every attempt with a confirmation step: it asks whether you felt it, and records your yes or no against that attempt in the session history. Your finger is the sensor.
Three preset pulses, a small pattern library and a custom builder cover the useful cases: a short buzz to prove the motor works at all, a rhythm to prove interval timing is honoured, and a long pulse to check the motor sustains rather than stuttering.
How to use it
- Check the API panel firstIt reports whether navigator.vibrate exists, whether the page is in a secure context, and whether your browser and device type are recognised. Supported here means the API is present — not that the motor will necessarily fire.
- Fire a short pulseVibrate 100ms is the simplest possible test. If you feel it, haptics work and everything else on the page is refinement; if you do not, the checks below are where to look before assuming hardware failure.
- Answer the confirmation promptAfter each attempt the page asks whether you felt it. Answering is what turns a triggered attempt into a result — until you do, the history records the attempt as awaiting confirmation, because the browser cannot tell the page whether anything physically happened.
- Try the longer pulses and a patternVibrate 300ms and Vibrate 1 Second show whether the motor sustains cleanly. The Double Pulse runs 100 on, 100 off, 100 on; the Triple Pulse extends that to three; the Heartbeat runs 100 on, 100 off, 200 on, 400 off — a rhythm you can feel the shape of.
- Build a custom patternSet a vibration length, a pause length and a repeat count. The builder clamps vibration and pause to between 10 and 5000 ms each and repeats to between 1 and 10, and it refuses any combination whose total exceeds ten seconds.
- Read the session summaryThe summary counts how many attempts were triggered, how many you confirmed as felt and how many you reported as not felt, and names the last pattern and its outcome. The history keeps the most recent twenty attempts and Clear History empties it.
What the results mean
API support
Whether navigator.vibrate is a function on this device, plus the secure-context flag, detected browser and detected device type. iOS Safari and desktop browsers report unsupported, which is a browser limitation rather than a fault.
State
Ready, vibrating, completed, stopped, not supported or failed. Failed appears when the browser refused the call outright or the pattern exceeded the ten-second cap; stopped appears when you cancelled a running pattern.
Your confirmation
Felt, Not Felt or Not Confirmed against each attempt. This is the only real evidence on the page that the motor moved, which is precisely why it is asked for.
Pattern and total duration
The exact millisecond array that was sent and the sum of its parts. A Heartbeat sends [100, 100, 200, 400] and totals 800 ms — the odd positions are pauses, the even positions are vibrations.
Session summary
Triggered, felt and not-felt counts plus the last pattern and its outcome. A high triggered count with zero felt is the clearest possible signal that the API is accepting calls the hardware is not honouring.
History
The last twenty attempts, each with a timestamp, the pattern name, the raw array, the total duration and your verdict. Useful when a fault is intermittent and you want to show that it worked three times out of ten.
What it can detect
- Whether the Vibration API exists in this browser at all
- Whether the browser accepts a vibrate call, and whether it returns false to refuse it
- Whether the motor physically responds, via your own confirmation — the only route available
- Whether pattern timing is honoured, by feeling a rhythm such as the Heartbeat rather than a single flat buzz
- Whether long pulses sustain or break up, from the one-second preset
- Intermittent haptics, from a history where some attempts were felt and others were not
Limits worth knowing
A browser can only report what the platform gives it. These are the honest boundaries of this page, so a result is never read as more than it is.
- It cannot measure vibration strength, amplitude or frequency. The Vibration API accepts durations and returns nothing — there is no read path at all — which is why the page keeps its own “Can this website measure vibration strength?” section and answers no.
- It cannot assess motor health, wear or expected lifespan, and it cannot tell an ERM motor from an LRA. Those are hardware facts the browser never exposes; the page explains the difference between the two motor types but cannot detect which you have.
- It cannot confirm that vibration happened. The browser reports only that the call was accepted, so your confirmation answer is the measurement — that is the reason the page asks.
- It cannot control intensity or produce Apple's Taptic patterns. Web haptics are on-or-off for a duration; the rich haptics native apps use are not available to a web page.
- It will not work on iPhone or iPad. Safari does not implement the Vibration API on iOS, so no web page on that platform can vibrate the device, and the page's own FAQ states this plainly.
- A total pattern longer than ten seconds is rejected before it is sent, and the builder clamps each vibration and pause to 5000 ms and repeats to ten. This is the page's own safety limit, not a browser rule.
- Nothing is transmitted. The history and summary live in the page for the session only, which the page's data FAQ confirms.
Tips
- Take the phone off silent and out of do-not-disturb before testing. Several Android skins suppress haptics in those modes, and the API will still report success while nothing moves.
- Hold the phone loosely in your palm rather than resting it on a soft surface. A cushion absorbs a 100 ms pulse almost entirely, and a table amplifies it into a buzz that is easier to hear than to feel.
- Use the Heartbeat pattern rather than a single pulse to judge timing. A motor that runs but ignores the pauses feels like one long buzz, and only a rhythm exposes that.
Troubleshooting
My iPhone does not vibrate.
It cannot. Safari on iOS does not implement the Vibration API, so no website can trigger haptics on an iPhone or iPad. This is a platform decision, and the panel will report the API as unsupported.
It says supported but I feel nothing on Android.
Check silent mode, do-not-disturb, and the system haptics or touch-vibration setting, which many skins turn off independently. Then try a 1 second pulse — 100 ms on a well-damped phone is genuinely easy to miss.
The state says failed.
Either the browser returned false and refused the call, or the pattern total exceeded ten seconds. Reduce the duration or repeat count and try again; a plain 100 ms preset is the cleanest way to test whether the refusal is about the pattern.
A long vibration will not stop.
Press Stop Vibration, which calls navigator.vibrate(0) to cancel immediately. Navigating away from the page also stops it.
Can a desktop computer vibrate?
No — there is no motor to drive, so the API is either absent or does nothing. The panel will report the device type as desktop and support as unavailable.
Ready to run it?
Fire single pulses, preset patterns and your own custom rhythm through the Vibration API, then confirm by hand whether you felt each one. Nothing to install, and it opens in this browser.