Check the connection and selected device, then repeat the failed check: a button never changes.
Gamepad test
Verify exposed gamepad buttons, axes, triggers and neutral positions from the browser Gamepad API.
Also known as: gamepad test, controller test, controller tester, joystick test, stick drift test. Free, online, and no download required.
Press any button on the gamepad to expose it to the browser.
What the gamepad test checks
| Check | How it is measured | Fails when |
|---|---|---|
| Connection | The page waits for a button event before reading navigator.getGamepads. | A previously active pad disconnects during the run. |
| Buttons | Pressed and analogue values are sampled once per animation frame. | A physical control never changes its exposed value. |
| Axes | Stick axes retain two decimal places and record neutral dead-zone spread. | An axis remains far from zero at rest. |
If something failed
Check the connection and selected device, then repeat the failed check: a stick drifts at rest.
Check the connection and selected device, then repeat the failed check: the gamepad disconnects.
How to read the result
How the gamepad test works
Browsers hide a gamepad until the user presses a control, so the idle state says Press any button and never reports an absent device prematurely. Once exposed, one animation-frame loop reads buttons and axes into refs, tracks the set of proven controls and publishes at no more than the display frame rate. A disconnect event moves the harness to device-lost.
What the result can establish
Move both sticks through their full range, release them to neutral, press every exposed button and squeeze analogue triggers slowly enough to observe intermediate values.
Measurement limits
The page samples the Gamepad API at the display frame rate. A 60 Hz page sample is not the controller report rate, and browser mappings may rename or omit vendor-specific controls.
Gamepad test questions
Why does the controller test show nothing until I press a key?
Browsers hide connected gamepads until the user presses a control, which prevents pages from fingerprinting your hardware silently. That is why the idle state asks for any button rather than reporting that no controller is connected.
How does this stick drift test actually show drift?
Each axis is sampled once per animation frame and its resting value is kept to two decimal places, alongside the spread observed while the stick is untouched. A stick that reads consistently away from zero at rest, with a tight spread, is drifting rather than being nudged.
Does this controller tester work with PlayStation and Xbox pads?
Any pad the browser exposes through the Gamepad API is supported, which covers most modern USB and Bluetooth controllers. Browser mapping may rename or omit vendor-specific controls, so an unlabelled extra button is a mapping gap rather than a hardware fault.