Gamepad Tester

Inspect connected gamepads, button presses, axes, and browser mapping using the Gamepad API.

Direct browser API readingPrivacy-first

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

Requires a browser with the Gamepad API. Press a button after connecting.

Important

  • Browser-reported button and axis values only. Mapping gaps are not proof of a broken controller.

Connect a controller, then press any button so the browser can detect it. Values are browser-reported. Standard mapping labels are hints only — vendor-private layouts are not guaranteed.

Buttons

B0
0
B1
0
B2
0
B3
0
B4
0
B5
0
B6
0
B7
0
B8
0
B9
0
B10
0
B11
0
B12
0
B13
0
B14
0
B15
0
B16
0

D-pad & triggers

L2 / LT

R2 / RT

Left stick

Right stick

Fullscreen not supported

Browser-reported pad state

Session
Ready
Status
Ready
Mapping
Observed update interval

selected pad only — not hardware Hz

Haptic capability
Buttons pressed
0
Last event
None seen

How to use

  1. Connect a controller via USB or Bluetooth.
  2. Focus this tab and press any button so the browser detects the pad.
  3. Select among multiple pads if more than one is connected.
  4. Watch button highlights, axis values, and the observed update interval.

What the result means

  • Button and axis values are browser-reported Gamepad API readings.
  • Observed update interval is timestamp delta during rAF polling — not true hardware polling rate.
  • Missing mapping or buttons can be browser/OS limits, not proof of damage.

Limitations

  • Vendor-specific buttons may be unmapped.
  • Haptic detection only checks API presence, not physical motors.
  • Cannot report exact controller latency.

Troubleshooting

No gamepad appears
Press a physical button while the tab is focused. Some browsers only enumerate pads after user input.
Axes look inverted or swapped
Browsers expose different mappings. Compare with another browser before concluding hardware failure.

Related tools

FAQ

Is the update interval my controller’s Hz?

No. It is an observed browser timestamp interval, not certified hardware polling rate.