Controller TestsBrowser test

Gamepad Tester

Test a gamepad or controller online with live buttons, D-pad, analog triggers, sticks, raw axes, mapping, multi-controller selection, and browser-supported vibration.

  • 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 the Gamepad API. Standard buttons, sticks, D-pad, and analog triggers appear only when the device, OS, connection, and browser expose them. Vibration is separately capability-dependent; vendor features such as adaptive-trigger resistance, controller audio, motion sensors, battery status, light bars, firmware, and console-native behavior are not promised here.

Important

  • This page shows inputs, mapping, and haptic controls exposed by the browser Gamepad API. Unobserved controls, raw/non-standard mappings, browser capability limits, or missing vibration 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

Vibration check

Select a controller to check vibration support

A click requests one 300 ms dual-rumble effect with bounded light and strong components. No effect starts automatically.

Last request: Not requested

A completed browser request does not prove physical motor health. If nothing is felt, browser/platform support, connection mode, driver, firmware, controller behavior, or hardware may be involved.

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

Vibration control exposure
—

API exposure does not prove physical motor function

Last connection event
None seen

No account or download is required. Gamepad API readings and vibration request state stay in this browser session. This tool does not store Local history or upload gamepad IDs, button indexes, values, axes, or input sequences.

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. When Vibration control exposed appears, optionally choose Test vibration to request one short, bounded effect on the selected controller. Stop vibration can preempt an active request.
  7. 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.
  • Vibration control exposed means the selected controller path offers a compatible browser haptic actuator. A Completed request records API completion, not a physical motor-health verdict.

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 and effect support vary by browser, OS, connection, driver, firmware, and controller. Exposed or Completed does not prove a motor works, and Not exposed does not prove the controller lacks vibration.
  • Generic browser testing does not calibrate a controller or expose DualSense adaptive-trigger resistance, controller microphone/audio, gyro, battery health, light-bar control, vendor firmware, PS3 pressure-sensitive button behavior, or console-native behavior.
  • 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.
Vibration control is unavailable or no vibration is felt
Vibration control is not exposed in every browser/controller path. Try the intended USB/Bluetooth mode, current driver and firmware, or another supported browser. A completed request cannot distinguish platform support from physical hardware behavior.

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?

When the selected controller exposes a compatible haptic actuator, Test vibration requests one short, bounded dual-rumble effect. Completed describes the browser request only; it does not certify physical motors or diagnose why nothing was felt.

Can this calibrate a PS5 or other controller?

No. Generic Gamepad API values do not perform firmware calibration or persistent controller changes. Controller-specific calibration requires a separate protocol, safety review, and product responsibility.