Gamepad Tester: Check Every Button, Stick, Trigger and Motor in the Browser
A controller fails slowly. First one button needs a harder press, then a stick stops returning to center, and by the time you notice in a game you have already lost a match to it. A gamepad tester turns those invisible faults into something you can see: every input arrives as a tile that lights up, a dot that moves, or a number that should read zero and does not.
This page walks through what the tester shows, how the browser reports controller data, what the numbers mean, and which faults each reading points at. Everything described here is measured by the page itself, in the browser, with nothing installed and nothing uploaded.
What a gamepad tester actually measures
The browser exposes a connected controller as an object with three useful parts: a list of buttons, a list of axes, and an identifier string. Each button reports whether it is pressed and, if it is analog, a value between 0 and 1. Each axis reports a position between minus one and plus one. There is no event for a button changing state, so the page asks the device for a fresh snapshot every frame and compares it with the previous one.
That design has one consequence worth knowing: a snapshot is idle data, not an action. The tester cannot tell whether a button press reached a game, only whether the controller reported it to the browser. In practice that is exactly what you want when diagnosing hardware, because it removes the game, the driver settings and the remapping layer from the picture.
The page redraws only when something changes. A controller sitting untouched reports the same snapshot sixty times a second, and re-rendering identical state would burn a processor core for no benefit, so the tester compares a cheap signature of the frame first: pressed flags, button values rounded to two decimals, axes rounded to three.
The standard mapping, explained
Most modern controllers follow an agreed index order called the standard mapping. It is what lets the same browser code drive an Xbox pad, a DualSense and a Switch Pro controller without a lookup table per model. The tester prints the mapping the device claims, and the grid is numbered from zero upward so you can compare against any documentation that uses indices.
| Index | Standard control | Typical behavior |
|---|---|---|
| 0 | Bottom face button | A on Xbox, cross on PlayStation |
| 1 | Right face button | B on Xbox, circle on PlayStation |
| 2 | Left face button | X on Xbox, square on PlayStation |
| 3 | Top face button | Y on Xbox, triangle on PlayStation |
| 4 and 5 | Shoulder buttons | Digital, pressed or not |
| 6 and 7 | Triggers | Analog, filled bar from 0 to 1 |
| 8 and 9 | Back and start | Digital |
| 10 and 11 | Stick clicks | Digital, also used as extra buttons |
| 12 to 15 | D-pad | Four directions, digital |
| 16 | Guide or home | Present on some pads only |
Seventeen entries is the full set. A pad that does not follow the standard order reports whatever it actually has, and the grid grows or shrinks to match. Non-standard pads are common over Bluetooth on Windows, where a generic driver sometimes claims the device before the vendor driver does.
Reading axis values and catching drift
Each stick produces two axes, horizontal and vertical, usually four axes in total. The tester groups them in pairs and draws one circle per pair, with a dot that mirrors the physical position of the stick. Under the circle the raw values print to four decimals.
Those four decimals are the point. A game applies a deadzone, often somewhere between 0.1 and 0.25, which ignores small movement so a slightly worn stick does not drag the camera. That deadzone also hides the first stage of wear, which is exactly the stage worth catching:
| Resting value | What it usually means |
|---|---|
| 0.0000 | A healthy stick, centered and stable |
| 0.0100 to 0.0500 | Early wear, still inside most deadzones |
| 0.0500 to 0.1500 | Drift that many games will show as slow movement |
| Above 0.1500 | Movement without input in most titles |
| Value that keeps changing | A noisy sensor, a failing potentiometer, or a loose magnet |
Pull the stick to its edge and the value should approach plus or minus one. A stick that reaches only 0.82 does not have full range, which costs turning speed in racing games and aim speed in shooters. A stick that jumps from 0.6 straight to 1.0 with nothing in between has a worn resistive track rather than a smooth sweep.
Hall effect sticks, which use a magnet and a sensor instead of a resistive track, usually hold a very tight center for years, but they are not immune: a magnet that shifts after a drop produces a constant offset, and the readout shows it immediately.
Analog buttons and triggers
Triggers are the second place where a controller degrades quietly. In the standard mapping they occupy indices 6 and 7 and report a value, not just a pressed flag. The tester draws a fill bar inside the tile, so a trigger with a shortened travel shows up as a bar that never reaches the top.
Two patterns are worth knowing. A trigger that jumps to 1 after a few millimeters of travel has a collapsed spring or a sensor that lost its lower range. A trigger that tops out around 0.6 to 0.8 has either a mechanical stop, a bent arm, or a calibration offset that a driver update may fix. Both look identical in a game, where the input is often treated as binary above a threshold.
Face buttons that report values also get a bar, because some pads make them pressure sensitive. On a pad where they are plain switches the bar simply jumps between 0 and 1, which is not a fault.
Vibration and the second motor
When the controller exposes a vibration actuator that supports the dual-rumble effect, the tester shows a button that plays half a second of rumble with a strong low-frequency component at 0.8 and a weak high-frequency component at 0.4. The two motors are separate parts, and a single failed motor is easy to miss in a game because the other one still shakes.
The button appears only when the actuator is reported. Keyboards, arcade sticks, cheap clones and most pads connected through a compatibility layer do not expose one, and some browsers do not pass force feedback through at all. A missing button is therefore information about the device and the browser, not a broken page.
Why the controller does not show up
Browsers deliberately wait for a user gesture before exposing a gamepad, because a page could otherwise fingerprint the hardware silently. The control flow is:
- Connect the device by cable or by pairing it over Bluetooth.
- Press any button or move a stick once. This is the gesture that lets the page see the pad.
- If the page was reloaded after the pad was already connected, press a button again. A refresh often does not re-fire the connect event until the first input arrives.
If nothing appears after that, the usual causes are, in order of frequency: the device paired but Windows assigned it to another profile, the browser is running without permission for game controllers, the cable carries power only and no data, or the pad is in a mode that presents itself as a keyboard.
Wireless pads that sleep after a few minutes drop out of the list and return when you press a button. The tester follows that: the card disappears and comes back without a reload.
Four controllers at once
The browser exposes a fixed list of four slots. Connect more than four devices and the extra ones simply are not visible, which is a platform limit rather than a page limit. The tester draws one card per occupied slot and prints the slot number plus the device id string, so two identical pads remain distinguishable.
That is useful when checking a set: four pads side by side, press the same button on each, and compare which tiles light up. The id string also tells you what the browser thinks the device is, which is the first thing to check when a controller works in one application and not another.
Which browsers expose the Gamepad API
Support is broad but not identical, and the differences matter more for vibration than for buttons.
| Platform | Buttons and axes | Vibration | Notes |
|---|---|---|---|
| Chrome and Edge on Windows | Yes | Usually yes | Best coverage for Xbox pads |
| Chrome on Linux | Yes | Limited | Force feedback depends on the driver |
| Chrome on Android | Yes | Sometimes | Bluetooth pads often work as standard |
| Firefox | Yes | Partial | Mapping for some pads differs |
| Safari on macOS | Yes | Partial | Some pads need a prior button press in another app |
The safe assumption is that buttons and axes work everywhere the API exists, and that vibration is a bonus which depends on the device, the operating system and the browser version together.
What the numbers say about a used controller
When buying a used pad, the test takes about two minutes and answers the questions that photos cannot:
- Press every button in the grid. A tile that never lights up is a dead switch, a broken trace or a worn contact pad.
- Leave both sticks alone and read the values. Anything that settles away from 0.0000 is drift, and the size of the number tells you how soon it will be a problem.
- Roll each stick around the edge and watch the dot. It should trace a smooth circle and reach the edge in every direction, not flatten at one corner.
- Pull each trigger slowly. The bar should rise evenly from 0 to 1 without jumps or a plateau.
- Press the vibration button if it appears. Both motors should be felt, one as a heavy shake and one as a fine buzz.
A pad that passes all five is in good electrical shape. A pad that fails one is not necessarily unusable, since deadzones, remapping and repairs exist, but the failure will not go away on its own.
Frequently asked questions
Does the tester need an internet connection?
Only to load the page. The Gamepad API is local to the machine, so once the page has loaded it keeps working with the network disconnected, and no input data leaves the device.
Why do the axis values differ from what a game shows?
Games remap, invert and apply deadzones before using the values. The tester prints raw positions with no processing, which is why a stick that feels centered in a game can still read 0.03 here.
Can I test a controller on a phone?
Yes, with a Bluetooth pad paired to the phone. Chrome on Android exposes the device, and the layout shrinks to a single column, though vibration support varies by phone and pad.
What does the mapping label mean?
It shows whether the device follows the agreed index order. When it says standard, the tile numbers match every other standard pad; when it is empty, the indices come from the device itself and may be in any order.
Why did my controller disappear after a few minutes?
Wireless pads sleep to save battery. The browser drops them from the list and the card vanishes; pressing a button wakes the pad and the card returns without a reload.
Is a value of 0.02 on a resting stick a problem?
Not immediately. It is inside the deadzone of most games, so nothing moves. It is worth watching over months: drift tends to grow, and a value that doubles is the point to consider a replacement module or a calibration.
Can the tester damage the controller?
No. It only reads what the device reports, plus the optional vibration request, which is the same effect a game sends. There is no firmware write and no calibration command involved.
Do wired and wireless pads behave the same?
In the browser, yes, once connected. The difference is latency and reliability: a cable does not sleep, while Bluetooth drops out and reconnects, which shows up as the card disappearing and returning.
Summary
A gamepad tester answers a narrow question well: what exactly does this controller report right now. Buttons light up or they do not, sticks print four decimals that should read zero, triggers fill to the top or stop short, and the rumble test proves both motors still work. Run the same five checks on a new pad, on a used one before you buy it, and on the controller you keep blaming for missed inputs, and the answer stops being a guess.
USA · SO reputation 19908 · Badges: 20🥇76🥈101🥉 · SO member since 2010