Gamepad tester
Gamepad tester
Plug the controller in and press any button โ browsers keep a gamepad invisible until it sends its first input, so nothing appears before that.
Inputs that answered
0inputs
Press every button and push both sticks to their edges. Anything that never lights up is not reaching the browser at all โ check the cable, the dongle and the driver before blaming the pad.
- Buttonsโ
- Axesโ
- Controllerโ
- Mappingโ
Nothing appears until you press a button โ browsers hide a controller from a page until you use it.
One gear check a month
MonthlyOne thing a month worth measuring before it fails properly โ a mic that reset itself, a stick that drifts, a switch sending two clicks. Two sentences and the test.
Try also
How do I test a controller in the browser?
The Devicedial gamepad tester reads your controller through the browser’s Gamepad API and shows every button and axis it reports, live. Press any button first: browsers deliberately hide connected controllers from a page until you use one, so an idle pad looks like no pad at all.
Once it appears, each button carries its index from the Standard Gamepad mapping โ 0 to 16 โ and the two triggers show an analog value between 0.00 and 1.00 rather than a simple pressed flag. Sticks report two axes each, running from -1 to +1 in both directions, so the resting value tells you whether the stick centers properly.
What this page adds is the number behind the dot. A stick that looks centered can still sit at 0.08, and a face button that registers twice on one press is a switch beginning to fail. Both are visible here before a game makes them obvious.
The index numbers on screen are not arbitrary. A controller the browser recognizes is reported in the Standard Gamepad mapping, which fixes what every position means regardless of what is printed on the buttons. This is that map.
| Index | Standard Gamepad control | Xbox label | PlayStation label |
|---|---|---|---|
| 0 | Bottom face button | A | Cross |
| 1 | Right face button | B | Circle |
| 2 | Left face button | X | Square |
| 3 | Top face button | Y | Triangle |
| 4 | Left shoulder | LB | L1 |
| 5 | Right shoulder | RB | R1 |
| 6 | Left trigger (analog) | LT | L2 |
| 7 | Right trigger (analog) | RT | R2 |
| 8 | Select / back | View | Create |
| 9 | Start | Menu | Options |
| 10 | Left stick press | LS | L3 |
| 11 | Right stick press | RS | R3 |
| 12 | D-pad up | โ | โ |
| 13 | D-pad down | โ | โ |
| 14 | D-pad left | โ | โ |
| 15 | D-pad right | โ | โ |
| 16 | Guide / home | Xbox button | PS button |
Index 16 is optional and several browsers withhold it, so a home button that never lights up here is usually the browser, not the pad. Everything from 0 to 15 should respond on a working controller.
If the sticks are what brought you here, the stick drift test puts a number on their resting position instead of a dot on a graph. For the other half of a gaming setup, the keyboard tester shows how many keys register at once and the mouse tester checks buttons and scroll wheel.
Frequently asked questions
Why does the tester show nothing until I press a button?
Browsers hide connected gamepads from a page until you use one. Reporting every device the moment a page loads would hand out a fingerprint of your hardware, so the Gamepad API only exposes a controller after it sends its first input. Press any button, move a stick, and the pad appears. The same rule means the page has to be focused and served over HTTPS.
Why are my buttons numbered wrong?
Because your controller is not being mapped to the Standard Gamepad layout. When the browser recognizes a pad it reports its mapping as standard, and the indices mean what the table on this page says. When it does not โ common with older, generic or adapter-connected controllers โ the mapping comes back empty and the numbers are whatever the device’s own descriptor lists, in its own order.
Do the triggers report how far they are pressed?
Yes. Buttons 6 and 7 in the standard mapping are analog: each carries a value from 0.00 to 1.00 alongside the pressed flag, so you can watch a trigger travel instead of just fire. A trigger that jumps straight from 0 to 1, or that never reaches 1.00 at full pull, is worn โ and that is invisible in any game reading only the pressed flag.
The tester sees my controller but my game does not.
That is almost always the driver layer, not the pad. Windows exposes controllers through both XInput and DirectInput and many games read only one, while Steam Input can capture a controller exclusively and hand the game a virtual one instead. Close overlay software, check the game’s controller setting, and unplug any second pad โ a game usually binds to player one and stops looking.
Does it work over Bluetooth, and with PlayStation, Xbox or Switch pads?
Any controller the operating system has paired shows up here, wired or wireless, whatever the badge on it. What changes is the mapping: first-party Xbox and PlayStation pads usually map to the standard layout, while Switch pads and third-party clones often do not. Bluetooth adds a few milliseconds of latency, so use a cable if you are chasing input lag rather than broken buttons.
Can this test rumble or the gyro?
Rumble works in the browsers that expose a vibration actuator, so a pad that stays silent there has either no motors or no driver support. Gyro and accelerometer data does not appear at all: motion sensors are not part of the standard gamepad and reach games through platform drivers this page cannot see. Everything here is buttons and axes, which is where nearly every controller fault lives.
How the test works
The page polls navigator.getGamepads() once per animation frame and draws whatever the browser
returns. Buttons arrive as an array where each entry has a pressed flag and an analog value from
0.00 to 1.00; axes arrive as floats normalized to the range -1 to +1, not as degrees or as a
count of millimeters of travel. Axis 0 and axis 1 are the left stick’s horizontal and vertical
deflection, axes 2 and 3 the right stick, with -1 up and left, +1 down and right.
Index numbers only mean what the table below says when the browser reports the controller’s mapping
as standard; on an unrecognized pad the indices follow the device’s own descriptor and the labels
no longer apply. Polling happens entirely in your browser โ no controller data is stored or sent
anywhere.
Sources:
What a failing controller looks like first
A face button that counts twice. The switch under it bounces as it closes, and the browser receives two presses where your thumb made one. In a game it reads as a dropped input or an accidental double action, and it gets worse with use.
A trigger that stops short. Pull it all the way and watch the analog value: anything that peaks at 0.90 has a worn potentiometer, and games that scale acceleration to trigger travel will feel slower than they should.
A stick that no longer returns to zero. This is the common one, and it starts small. A resting value of 0.05 is invisible in most games and 0.20 is not, so the useful question is not whether the stick drifts but by how much โ which is what the stick drift test measures.