Test every button, stick, trigger, and rumble motor on your controller, right here in the browser.
Checking for a controller…
No controller detected
Connect a controller by USB or Bluetooth, then press any button or move a stick — most browsers won't notice it until you do.
The diagram mirrors a standard controller layout. A black outline means that input is at rest. An orange glow means the browser is reading it as pressed right now — the harder an analog input like a trigger is pushed, the more of it fills with orange.
Each stick reports an X and Y value between −1 and 1, with 0 in the centre. The dot on the diagram moves with the stick; the numbers on the right give the exact reading. If a number sits noticeably away from 0.00 while the stick is untouched, that stick has drift.
L2 and R2 are analog on most controllers, reporting how far they're pressed as a percentage rather than simply being pressed or not. That percentage shows up two ways: as a fill on the diagram, and as a precise bar and number in the Triggers panel.
Every button your controller reports appears here by raw index, whether or not it has a place on the diagram. This is the most useful view for unusual or off-brand controllers, extra paddle buttons, or anything that doesn't follow the standard layout.
"Pulse light" and "Pulse strong" send a short rumble command to the controller. Support depends on both the controller's hardware and the browser, so a "not supported" result here doesn't always mean the hardware lacks a rumble motor.
Plug in over USB, or pair over Bluetooth in your system settings first. Chrome, Edge, and Firefox all support the controller out of the box once it's paired.
Pair the controller in your device's Bluetooth settings, then open this page in Chrome. Other Android browsers vary in their support.
Pair an MFi or Bluetooth controller in Settings, then open this page in Safari. iOS has supported the same Gamepad API since version 14.5.
Plug in over USB or pair over Bluetooth, then use Chrome or Firefox. Some distros need a one-time udev rule for certain Bluetooth controllers to be recognised by the OS at all — if the controller isn't visible at the system level, it won't be visible here either.
Press a button or move a stick — many browsers won't register a controller until they see its first input. If it still doesn't appear, confirm it's paired or plugged in at the OS level first, and try a different browser.
Check the exact reading in the Button matrix or Analog sticks panel. A worn stick often shows a resting value away from 0.00 (drift); a button that reads inverted is usually a controller or driver quirk rather than something this page can fix.
Confirm the controller has a rumble motor at all, then try a different browser — haptic support varies more between browsers than almost anything else in the Gamepad API.
Sign in to your account