Gamepad tester online
Test gamepad buttons, sticks, triggers, and vibration.
Connect a gamepad
Plug in a controller or pair one via Bluetooth, then press any button to wake it up. Your browser will detect it automatically — nothing leaves your device.
This gamepad tester reads navigator.getGamepads on every animation frame and mirrors what it finds onto a standard controller layout: four face buttons, a D-pad, two shoulder buttons, two analog trigger bars, Select, Home and Start, and both sticks with a live dot and an optional trail. Every button reports its pressed state and its analog value, so a trigger that only reaches 0.8 is visible before you feel it in a game. Both sticks are measured at rest to get a drift magnitude, from which the tool suggests a deadzone. Rumble is sent through vibrationActuator, and the whole session can be exported as a JSON report.
Key facts about Gamepad tester online
| API used | navigator.getGamepads(), polled inside requestAnimationFrame |
|---|---|
| Poll rate shown | frames per second of the poll loop — tied to the display, typically 60 or 120 |
| Layout mapped | the W3C standard mapping: 17 buttons, 4 axes, D-pad on 12 to 15 |
| Button values | pressed as a boolean plus the analog value, so triggers 6 and 7 read 0.00 to 1.00 |
| Stick axes | axes 0 and 1 for the left stick, 2 and 3 for the right |
| Drift bands | under 0.02 none, under 0.08 minor, 0.08 and above significant |
| Deadzone advice | derived from the measured resting magnitude of each stick |
| Rumble call | vibrationActuator.playEffect with the dual-rumble effect |
| Rumble presets | Gentle, Strong, Dual motor and Heartbeat, with adjustable duration and intensity |
| Device identity | the raw gamepad id string plus its mapping, which is standard or empty |
| Session log | the most recent button presses and axis moves above a 0.5 change |
| Export | a JSON report with id, mapping, tested buttons, press counts and both stick magnitudes |
| Focused drift page | resting drift is measured over a fixed five seconds at /tool/stick-drift-test/, which reports peak, average and 95th-percentile deflection |
What happens to your file
Controller state is read directly from the Gamepad API in this tab and rendered to the page — no input is sent to a server and nothing is stored between visits. The JSON report is assembled in memory, wrapped in a Blob and handed to a temporary object URL, so the download is produced by your own browser and never passes through a network. One consequence of how the API works: a gamepad stays invisible to any web page until you press a button on it, which is a deliberate anti-fingerprinting measure in browsers, not a fault in the controller or the page. Leaving the page also resets any active vibration actuator.
About this tool
- 1
Connect and wake the pad
Plug in the USB cable or pair over Bluetooth, then press any button on the controller. Browsers hide gamepads from a page until a button is pressed, so this step is mandatory even when the pad is clearly connected.
- 2
Pick the right device
If more than one pad is connected, the selector lists each by its id string. Check that the id matches the controller in your hands before you judge any result.
- 3
Press every button
Work around the face buttons, D-pad, shoulders, sticks and the Select, Home and Start cluster. Each one lights up and joins the tested set, and the press counter shows which you have missed.
- 4
Pull the triggers slowly
Triggers 6 and 7 report an analog value. Pull each from rest to full and watch the bar fill: a trigger that jumps straight to 1.00 or stalls short of it has a worn potentiometer or Hall sensor.
- 5
Let the sticks rest for drift
Take your thumbs off both sticks and let them centre. The magnitude under each stick is the distance from perfect zero — that number, not your impression in a game, is the evidence of drift.
- 6
Use the suggested deadzone
When drift is measurable the tool prints a recommended deadzone percentage. Enter that value in the game or in Steam's controller settings to stop the character wandering.
- 7
Fire the rumble presets
Gentle, Strong, Dual motor and Heartbeat drive the weak and strong motors at different magnitudes. Adjust duration and intensity to tell a dead motor from a weak one.
- 8
Export the report
Download the JSON summary if you are documenting a fault. It records the pad id, mapping, which buttons registered, the press counts and both stick magnitudes with four decimals.
| Browser support | Chrome, Edge, Firefox, Opera and Safari 10.1+ all implement the Gamepad API |
|---|---|
| Rumble support | dual-rumble works in Chromium browsers; Firefox and Safari commonly expose no actuator, and the button stays hidden |
| Xbox controllers | wired and Bluetooth pads report the standard mapping on Windows, macOS and Linux |
| DualShock 4 and DualSense | standard mapping over USB and Bluetooth; adaptive triggers and the touchpad are not exposed |
| Switch Pro Controller | detected over USB and Bluetooth, but mapping is often empty, so indexes may not match the drawn layout |
| Generic USB pads | usually report an empty mapping — read the raw axes and button indexes rather than the layout |
| Secure context | the API requires HTTPS, which this page is served over |
| Account or install | none — no signup, no driver, no configuration software |
- A controller that shows nothing is almost always a controller that has not had a button pressed since the page loaded — press A or X first, then reload if it still does not appear.
- Bluetooth pads sometimes enumerate twice, once per protocol; if the layout reacts oddly, switch to the other index in the selector.
- A resting magnitude under 0.02 is normal manufacturing tolerance and needs no deadzone at all.
- Above roughly 0.08 the drift will move a character on its own in most games; that is the point where a stick module replacement is worth it.
- Turn on the stick trail before circling each stick to its rim — a trail that flattens on one side reveals a worn gate, which a static reading misses.
- If the rumble button is missing, the browser reports no actuator for that pad; the motors may still be fine, so retest in a Chromium browser before blaming the hardware.
- The poll-rate figure tracks your display, not your controller: on a 144 Hz monitor it reads near 144, and in a background tab it drops to a few frames per second.
- On a Switch Pro Controller with an empty mapping, ignore the drawn layout and read the raw button index list instead.
- Live standard-mapping layout with face buttons, D-pad, shoulders and both sticks
- Analog trigger bars with exact 0.00 to 1.00 values
- Stick drift magnitude with a suggested deadzone percentage
- Optional stick trail for spotting worn gates
- Rumble presets driving weak and strong motors
- Button coverage tracker with per-button press counts
- JSON report export
- Checking a second-hand controller for stick drift before you pay for it.
- Measuring exactly how far a drifting stick sits off centre so you can set a deadzone instead of replacing the pad.
- Verifying every button after replacing a stick module, a membrane or a shoulder switch.
- Testing whether both rumble motors still fire after a drop.
- Confirming that a new Bluetooth pairing is presenting the standard mapping before configuring a game.
- Documenting a controller fault with a JSON report for a warranty claim.
Put this gamepad tester on your own site
The widget is the same tester with the explanations stripped out. It is free to embed on any site, commercial or not, with no key and no limit. The only condition is that the link under the frame stays.
<iframe src="https://toolchamp.app/embed/gamepad-tester/" width="100%" height="640" loading="lazy" title="Gamepad Tester by ToolChamp"></iframe> <p><a href="https://toolchamp.app/tool/gamepad-tester/">Gamepad Tester by ToolChamp</a></p>
The widget runs entirely in the visitor’s browser, sets no cookies and sends nothing to a server, so it needs no consent banner of its own on your page.
Related tools
View allPart of Hardware testers that run in your browser
Works well with this6
More hardware testers10
More in Gaming10
Related categories2
Updated