Controller Vibration Test
This controller vibration test plays dual rumble through the Gamepad API and tries trigger rumble when the actuator accepts it. If you feel nothing, the page tells you whether the browser offered an actuator at all. A missing actuator is not proof the motor is dead.
- Strong and weak motors, plus duration
- A three-pulse pattern you can feel
- Trigger rumble when the browser supports it
{"waiting":"Press any button on the controller. Browsers hide gamepads until you press a button on this tab.","noApi":"This browser does not expose the Gamepad API, so the live tester cannot read inputs. The written checks on this page still apply.","insecure":"This page is not a secure context, so the browser will not share gamepads. Open the site over HTTPS.","privacy":"Inputs stay in this browser. Nothing is uploaded.","checkAgain":"Check again","layout":"Button labels","layoutAuto":"Match the connected pad","layoutPs":"PlayStation","layoutXbox":"Xbox","layoutNintendo":"Nintendo","layoutGeneric":"Numbers","player":"Controller","buttons":"Buttons","face":"Face","dpad":"D-pad","shoulders":"Shoulders and triggers","center":"Center and sticks clicks","extra":"Other buttons","sticks":"Sticks","leftStick":"Left stick","rightStick":"Right stick","up":"Up","down":"Down","left":"Left","right":"Right","stickHint":"Up on the plot is up on the stick. The numbers keep the browser’s sign: positive Y is usually down.","offset":"Offset","deadzone":"Inner deadzone","radial":"Radial","axial":"Axial","shape":"Deadzone shape","afterDeadzone":"After deadzone","inside":"Inside deadzone","measureDrift":"Measure drift (3s)","release":"Release both sticks and hold them still.","measuring":"Measuring resting offset…","trace":"Trace circularity","tracing":"Push the stick around the outer gate.","stopTrace":"Stop trace","vibration":"Vibration","strong":"Strong motor","weak":"Weak motor","duration":"Duration","play":"Play vibration","pulse":"Pulse three times","triggerRumble":"Try trigger rumble","rumbleMissing":"This browser did not offer a vibration actuator for the selected controller. Chrome and Edge usually do; Firefox and Safari often do not.","rumbleSent":"Vibration command sent.","rumbleFailed":"The browser rejected the vibration command.","triggerUnsupported":"Trigger rumble is not available on this actuator. Dual rumble still ran if the browser accepted it.","rate":"Browser-observed rate","sampleAge":"Sample age","moveStick":"Move a stick to measure the update rate.","rateNote":"This is how often the browser hands us a new sample. It is not the controller’s USB poll rate.","ageNote":"How old the newest sample is when the page draws it. This is not display lag and not in-game lag.","ageUnavailable":"This browser’s gamepad timestamp cannot be compared with the page clock.","gyro":"Motion","requestHid":"Request DualSense access","hidIntro":"Gyro, accelerometer, touch position, and battery are not part of the standard Gamepad reading. Chrome and Edge on desktop can request a DualSense or DualShock 4 over WebHID.","hidMissing":"WebHID is not available here. Use Chrome or Edge on a desktop computer, connect the pad by USB, and try again. Buttons and sticks above still work through the Gamepad API.","hidEmpty":"No device was selected.","hidOk":"The browser allowed access to {name}. This version confirms the device and does not stream gyro values yet, so it cannot show a wrong motion number. Buttons and sticks above stay on the Gamepad API.","hidDenied":"The browser blocked or cancelled device access. Gamepad readings are unaffected.","raw":"Raw data","rawEmpty":"Raw values appear here after a controller connects.","checkup":"Full checkup","startCheckup":"Start full checkup","resetMarks":"Reset marks","stepButtons":"Buttons","stepSticks":"Sticks","stepTriggers":"Triggers","stepRumble":"Rumble","stepDone":"Review","checkupIdle":"A short pass over buttons, both sticks, both triggers, and vibration.","checkupButtons":"Press every face button, the D-pad, bumpers, menu buttons, and both stick clicks.","checkupSticks":"Rotate each stick out to the gate.","checkupTriggers":"Pull both triggers fully.","checkupRumble":"Play vibration, then say whether you felt it.","feltYes":"I felt it","feltNo":"I felt nothing","checkupSkipRumble":"This pad has no vibration actuator in this browser, so that step is skipped.","announcePress":"{label} pressed","modelLink":"This looks like {name}.","openModel":"Open the model page","presetNote":"Labels are locked to this page’s layout. Change “Button labels” if they do not match the pad in your hands.","mappingStandard":"standard mapping","mappingOther":"non-standard mapping","healthy":"Healthy","borderline":"Borderline","drift":"Drift","couldNotMeasure":"Could not get a still sample. Rest the controller on a table and try again.","suggested":"Suggested inner deadzone","coverageLow":"Keep tracing the outer edge. Too few sectors were filled to score the gate.","noPadSelected":"No controller is selected.","slotsLabel":"Connected controllers","noneConnected":"None connected yet","focusDrift":"This page focuses on stick drift. Every other check is still here.","focusDeadzone":"This page focuses on deadzone and calibration. Every other check is still here.","focusVibration":"This page focuses on vibration. Every other check is still here.","focusPolling":"This page focuses on the browser-observed update rate. Every other check is still here.","focusLatency":"This page focuses on sample age and input timing. Every other check is still here.","focusGyro":"This page focuses on motion. Buttons and sticks still use the Gamepad API.","focusButtons":"This page focuses on buttons. Sticks, triggers, and vibration are still here.","names":{"edge":"DualSense Edge","dualsense":"DualSense","ds4":"DualShock 4","joycon":"Joy-Con","switchpro":"Switch Pro Controller","bitdo":"8BitDo pad","deck":"Steam Deck or Steam Input device","series":"Xbox Series controller","xone":"Xbox One controller","xbox":"Xbox controller","nintendo":"Nintendo controller","generic":"generic PC gamepad"}}This page focuses on vibration. Every other check is still here.
Inputs stay in this browser. Nothing is uploaded.
Press any button on the controller. Browsers hide gamepads until you press a button on this tab.
This is how often the browser hands us a new sample. It is not the controller’s USB poll rate. How old the newest sample is when the page draws it. This is not display lag and not in-game lag.
Buttons
Face
D-pad
Shoulders and triggers
Center and sticks clicks
Sticks
Up on the plot is up on the stick. The numbers keep the browser’s sign: positive Y is usually down.
Vibration
Motion
Gyro, accelerometer, touch position, and battery are not part of the standard Gamepad reading. Chrome and Edge on desktop can request a DualSense or DualShock 4 over WebHID.
Full checkup
- Buttons
- Sticks
- Triggers
- Rumble
- Review
A short pass over buttons, both sticks, both triggers, and vibration.
Raw data
Raw values appear here after a controller connects.
How to run the vibration test
- Select the pad. If more than one controller is connected, pick its slot first.
- Play a short rumble. Default strength is enough to feel. Raise the strong motor if the pad is on a soft surface.
- Try the pulse. Three bursts are easier to distinguish from a fan or a speaker than one long buzz.
- Read the actuator line. “Command sent” means the browser accepted it. “No actuator” means this browser will not rumble, even if a game will.
Hold the pad or rest it on a hard table. A cushion eats small motors. System volume does not matter: rumble is not audio. The DualSense page explains why a DualSense haptic buzz in a PS5 game feels richer than this dual-rumble call.
Dual rumble and trigger rumble
Dual rumble is the pair of spinning motors in the handles. The strong magnitude usually drives the larger motor and the weak magnitude the smaller one. Trigger rumble asks the actuator to buzz the triggers. Xbox Series impulse triggers and some other pads support it in Chromium. Adaptive trigger resistance on a DualSense, the kind that pushes back, is not this call and is not available through the standard Gamepad API.
When vibration does not work
- Firefox and Safari often expose no vibrationActuator. Buttons can be perfect and rumble still absent.
- Bluetooth on Linux sometimes drops rumble until the right Xbox or Sony driver is in use.
- Steam Input can disable rumble for a game or a desktop layout.
- A phone may block gamepad haptics while its own vibration mode is off.
- The OS “game controllers” panel can have rumble turned down.
How to read a rumble failure
If this page sends the command and you feel it, the motors work. If a game on the same PC is silent and this page is silent too, suspect the pad, the cable, or the OS driver. If this page says there is no actuator and a native game still rumbles, the browser is the limit. Switch to Chrome or Edge before you buy a new controller.
Feel is the confirmation. The page cannot hear the motor. During the full checkup it asks whether you felt the pulse, and that answer stays on this device.
Frequently asked questions
Why does my DualSense feel weaker here than on a PS5?
PS5 games drive the voice-coil haptics. The Gamepad API plays classic dual rumble. Both can be “working” and feel different.
The test says the command was sent, but I feel nothing.
Check Steam Input, the OS rumble slider, Bluetooth versus USB, and whether the pad is muted by a system setting. Then try another browser. A sent command only proves the browser accepted the call.
Can I test the adaptive triggers?
Not with the standard Gamepad call. Trigger rumble is a buzz. Adaptive resistance is a firmware feature outside this test. The gyro page’s WebHID path is the direction that kind of feature needs, and this version does not drive it.