Gamepad / 01

Buttons.

Connect a controller and press any button to wake the browser. Standard-mapping controllers (Xbox, PS5, modern generic) light up exactly. Triggers (L2/R2) show their analog 0–1 value.

Notes

Method: window.addEventListener('gamepadconnected') + Gamepad API polling at requestAnimationFrame. We display index 0 only — connect multiple controllers and use the selector. Triggers report .value (0–1) rather than just .pressed.

No controller connected — press any button
Active controller
Identifier
—
Mapping
—
Buttons
—
Axes
—
Rumble
—
Frequently asked

How does this gamepad button test work?

We listen for the browser's gamepadconnected event and then poll navigator.getGamepads() inside a requestAnimationFrame loop. Each button reports its pressed state and, for analog inputs like triggers, a value between 0 and 1. Xbox, PlayStation 5 DualSense, Switch Pro and most modern USB or Bluetooth controllers expose a standard mapping, so the layout matches your physical pad exactly. Everything runs locally — no inputs are sent off your machine.

My controller is not detected. What should I do?

Browsers only register a gamepad after the first input — press any button or move a stick to wake it. If nothing happens, confirm the controller appears in Windows Settings → Devices → Bluetooth or in macOS Game Controllers. Use a wired connection to rule out Bluetooth pairing problems. Chrome and Edge have the broadest Gamepad API support; Safari supports it from version 14.1. Disable Steam Input if Steam is running, because it captures the controller before the browser can see it.

Why are some buttons mapped to the wrong place?

Non-standard controllers fall back to a raw mapping where button indexes do not match the labelled positions. The Gamepad API exposes a mapping string — if it reads empty rather than 'standard', your browser does not recognise the device profile. Try a different USB port, switch from XInput to DirectInput mode if your pad has a toggle, or update the driver. On Windows, the Xbox Accessories app can also remap face buttons; reset its profile to defaults to see the true hardware layout.

What is a good result for this test?

Every face button, shoulder, trigger, D-pad direction and stick click should register the instant you press it and release the instant you let go. Triggers should sweep smoothly from 0.00 to 1.00 with no jumps or stuck values. If a button lights up without input, it has stiction or a worn membrane. If a trigger never reaches 1.00, its potentiometer is dirty or worn. Rumble should feel both motors clearly when you click Test rumble.

How is this different from the analog stick test?

This page focuses on digital buttons, bumpers, triggers and rumble. For analog stick drift, deadzone shape and full rotational range, use devicecheckonline.com/gamepad/sticks — it plots live position, records traces and highlights the worst-case offset at rest. Run both tests when troubleshooting a controller; a pad can have perfectly working buttons but suffer from stick drift, or vice versa.