Controller TestsBrowser test

Gamepad Tester

Test a gamepad or controller online with live buttons, D-pad, triggers, analog sticks, raw axes, mapping, and session coverage through the browser Gamepad API.

  • Direct browser input
  • Gamepad API; no permission prompt
  • No test result history
  • No account or upload
Direct browser API reading

Privacy-first. Tests run locally in your browser. We do not upload keystrokes, pointer paths, or media.

Requires a browser with the Gamepad API. Connect by USB/Bluetooth, focus the tab, then press a physical controller button because browsers may not expose a gamepad until user interaction.

Important

  • This page shows inputs and mapping exposed by the browser Gamepad API. Unobserved controls, raw/non-standard mappings, browser capability limits, or missing haptic interfaces do not by themselves prove controller hardware failure.
Test instrumentController Tests

Connect a controller by USB or Bluetooth, focus this tab, and press a physical controller button so the browser can expose the pad. Choose a controller before Start when several are connected.

No controller selected yet.

No gamepad detected. Connect by USB/Bluetooth, focus the tab, press a physical controller button, then select the controller if multiple appear.

Fullscreen not supported

Controller session

Session
Ready
Status
Ready
Selected controller index
Browser controller ID
Mapping

Select a browser-exposed controller first

Buttons exposed
0
Axes exposed
0
Buttons observed this session
0 / 0

pressed=true or value>0 evidence; not a hardware verdict

Buttons active now
0
Latest Gamepad.timestamp delta

successive selected-pad API timestamps observed in rAF; not USB polling rate or latency

Haptic interface exposure

API exposure does not prove physical motor function

Last connection event
None seen

Gamepad API readings stay in this browser session. This tool does not store Local history or upload gamepad IDs, button indexes, values, axes, or input sequences. Haptic interface exposure is reported only; no vibration test runs here.

How to use

  1. Connect a controller by USB or Bluetooth, keep the page focused, and press a physical controller button so the browser can expose the pad.
  2. If multiple controllers appear, choose the one you want to test before pressing Start.
  3. Press Start, then work through every browser-exposed button. A button stays marked Observed this session after release; analog button values and peaks remain visible.
  4. If the browser reports Standard mapping, test the D-pad, triggers, and both sticks in the semantic view. Otherwise use raw button indexes and raw axis values without assuming Standard Gamepad positions.
  5. Review the button coverage count, untested browser indexes, raw axes, and their session ranges. Stop freezes this session; Reset clears it.
  6. Use Stick Drift Test when you need center drift, dead-zone guidance, or circularity analysis instead of drawing those conclusions from this general tester.

What the result means

  • Browser-exposed buttons are the Gamepad.buttons entries returned to this page.
  • Observed this session means a button index produced pressed=true or value>0 during the running session. It does not prove complete hardware health.
  • GamepadButton.value is useful for analog controls such as triggers. Current and peak values are browser observations only.
  • Standard mapping means the browser remapped the controller to the canonical Standard Gamepad layout. Raw/non-standard mapping keeps button and axis indexes raw.
  • Axes are browser Gamepad.axes values, generally normalized around -1 to 1. Session minimum and maximum show the range observed during this session.
  • Latest Gamepad.timestamp delta is browser API update context, not USB polling rate, input latency, or button-to-screen latency.
  • Haptic interface exposure varies by browser, platform, and controller. Exposed does not prove a motor works; not exposed does not prove the controller lacks vibration.

Limitations

  • The browser Gamepad API exposes a software-visible controller representation, not direct electrical switch, firmware, USB/HID, or calibration telemetry.
  • A user agent may remap, omit, normalize, or reduce exposed controller information.
  • A button not observed in one session can mean it was not pressed, the OS/driver/browser did not expose it, the mapping differs, or the hardware did not report it. The page cannot distinguish all causes automatically.
  • Only mapping="standard" receives canonical Standard Gamepad semantic labels. Other mappings remain raw.
  • Axes and trigger values are browser-reported normalized values; this page does not grade calibration, dead zone, circularity, or physical wear.
  • Gamepad.timestamp behavior and support vary; it is not USB polling rate or controller latency.
  • Haptic API exposure varies. Exposed does not prove a motor works, and not exposed does not prove the controller lacks vibration.
  • Connection and mapping can differ by USB/Bluetooth mode, OS, driver, remapping software, browser, adapter, and controller firmware.

Troubleshooting

No controller appears
Keep the tab focused, press a physical controller button, reconnect USB/Bluetooth, confirm the OS sees the pad, and try another supported browser before assuming hardware failure.
The controller appears but Start is disabled
Select a detected controller first. Start requires one browser-visible selected pad so the session is not recorded against an empty target.
A physical button does not appear under the label I expect
Check Mapping and the raw button index. Standard mapping uses canonical physical positions, while non-standard devices, adapters, Steam Input, DS4Windows, drivers, or vendor software can expose different logical indexes.
A button works when held but looks untested after release
It remains Observed this session after a valid pressed/value sample. Reset starts a new coverage session.
Stick values do not center exactly at zero
This general page only shows raw/current axis evidence. Use Stick Drift Test for controlled rest, dead-zone, and circularity analysis.
One of several connected controllers disconnects
Only loss of the selected controller interrupts its running session. A different controller disconnecting does not invalidate the selected controller test.

Related tools

FAQ

Why does my gamepad not appear in the browser?

Many browsers expose a controller through the Gamepad API only after a physical button press while the tab is focused. Reconnect it, confirm the OS sees it, and try a supported browser.

What does Standard Gamepad mapping mean?

It means the browser applied the canonical Standard Gamepad button and axis layout. Printed legends vary by controller family, and a blank or vendor-specific mapping should remain raw.

Why does Button 0 not always mean the printed A button?

Standard mapping describes a canonical physical position, while Xbox, PlayStation, Nintendo, and other controller families print different legends on that position.

Does an untested button mean it is broken?

No. It only means this browser session did not observe pressed=true or value>0 for that browser-exposed index. The page cannot separate user, browser, driver, mapping, and hardware causes automatically.

Why do I only see raw button and axis indexes?

The browser did not expose Standard mapping. DeviceMetrik intentionally avoids assigning unsupported D-pad, trigger, or stick semantics.

Can this test diagnose stick drift or dead zone?

No. Use Stick Drift Test for focused center, dead-zone, and circularity analysis.

Can this test controller vibration?

No. It only reports whether a haptic interface is exposed by the browser; it does not activate or certify physical motors.