The Navigator.vibrate() method pulses the vibration hardware on the device, if such hardware exists. If the device doesn't support vibration, this method has no effect. If a vibration pattern is already in progress when this method is called, the previous pattern is halted and the new one begins instead.

If the method was unable to vibrate because of invalid parameters, it will return false, else it returns true.  If the pattern leads to a too long vibration, it is truncated: the max length depends on the implementation.

Syntax

var successBool = window.navigator.vibrate(pattern);
pattern
Provides a pattern of vibration and pause intervals. Each value indicates a number of milliseconds to vibrate or pause, in alternation. You may provide either a single value (to vibrate once for that many milliseconds) or an array of values to alternately vibrate, pause, then vibrate again. See Vibration API for details.

Passing a value of 0, an empty array, or an array containing all zeros will cancel any currently ongoing vibration pattern.

Examples

window.navigator.vibrate(200); // vibrate for 200ms
window.navigator.vibrate([100,30,100,30,100,30,200,30,200,30,200,30,100,30,100,30,100]); // Vibrate 'SOS' in Morse.

Specifications

Specification Status Comment
Vibration API Recommendation Linked to spec is the latest editor's draft; W3C version is a REC.

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung Internet
Basic supportChrome Full support 32Edge ? Firefox Full support 16
Notes
Full support 16
Notes
Notes Until Firefox 26 included, when the vibration pattern was too long or any of its elements too large, Firefox threw an exception instead of returning false (bug 884935).
Notes From Firefox 32 onwards, when the vibration pattern is too long or any of its elements too large, it returns true but truncates the pattern (bug 1014581).
Full support 11
Prefixed
Prefixed Implemented with the vendor prefix: moz
IE No support NoOpera No support NoSafari No support NoWebView Android Full support 4.4.3
Notes
Full support 4.4.3
Notes
Notes Beginning in version 55, this is not supported in cross-origin iframes.
Notes Beginning in version 60, this method requires a user gesture. Otherwise it returns false.
Chrome Android Full support 32
Notes
Full support 32
Notes
Notes Beginning in Chrome 55, this is not supported in cross-origin iframes.
Notes Beginning in Chrome 60, this method requires a user gesture. Otherwise it returns false.
Edge Mobile ? Firefox Android Full support 16
Notes
Full support 16
Notes
Notes Until Firefox 26 included, when the vibration pattern was too long or any of its elements too large, Firefox threw an exception instead of returning false (bug 884935).
Notes From Firefox 32 onwards, when the vibration pattern is too long or any of its elements too large, it returns true but truncates the pattern (bug 1014581).
Full support 14
Prefixed
Prefixed Implemented with the vendor prefix: moz
Opera Android Full support Yes
Notes
Full support Yes
Notes
Notes Beginning in Opera 47, this method requires a user gesture. Otherwise it returns false.
Safari iOS No support NoSamsung Internet Android ?

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.
Requires a vendor prefix or different name for use.
Requires a vendor prefix or different name for use.

See also

Document Tags and Contributors

Last updated by: adamchainz,