Non-standard: This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

The playEffect() method of the GamepadHapticActuator interface makes the hardware play a specific vibration pattern.


playEffect(type, params)



A string representing the desired effect. This can vary depending on the hardware type. Possible values are "dual-rumble" or "vibration".


An object to describe a desired haptic effect.

Expected values are:


The duration of the effect in milliseconds.


The delay in milliseconds before the effect is started.


Rumble intensity of the low-frequency (strong) rumble motors, normalized to the range between 0.0 and 1.0.


Rumble intensity of the high-frequency (weak) rumble motors, normalized to the range between 0.0 and 1.0.

Note: A new call to playEffect() overrides a previous ongoing call.

Return value

A promise that resolves with true when the playEffect successfully completes.


const gamepad = navigator.getGamepads()[0];

gamepad.vibrationActuator.playEffect("dual-rumble", {
  startDelay: 0,
  duration: 200,
  weakMagnitude: 1.0,
  strongMagnitude: 1.0,


No specification found

No specification data found for api.GamepadHapticActuator.playEffect.
Check for problems with this page or contribute a missing spec_url to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

Browser compatibility

BCD tables only load in the browser

See also