Controller Tester
Connect a controller and press any button to wake it. Every button, trigger, and analog axis updates live, so stick drift shows up as a number, not a feeling.
No permissions. A connected controller; press any button to wake it up.
No controller detected yet
Connect a controller by USB or Bluetooth, then press any button. Browsers hide gamepads until you interact with one.
Sticks should rest near 0.00 and reach ±1.00 at the edges; a stick that rests at 0.05-0.15 has drift. Triggers report 0 to 1 as you squeeze. If a controller shows "unknown" mapping, the buttons are still testable, just numbered instead of named.
Frequently Asked Questions
How do I test for stick drift?
Let go of both sticks and read the axis values. A healthy stick rests within about ±0.05 of 0.00. Anything beyond that at rest is drift, and if a game has no dead-zone setting you'll feel it as slow, unwanted movement. Also push each stick to the edge in every direction: it should reach close to ±1.00 all the way around, and a stick that tops out at 0.85 on one side has a worn sensor.
My controller is connected but nothing shows up.
Browsers deliberately hide gamepads until you press a button on them, as a privacy measure. Press any button. If it still doesn't appear, the OS hasn't recognized the controller -- check Bluetooth pairing or try a different USB cable; some charge-only cables carry no data.
Does this work with a PS5 DualSense, Xbox Series controller, or Switch Pro?
Yes, over USB or Bluetooth on Windows, macOS, Linux, and Android. All three report the standard mapping, so buttons show their real names. Adaptive triggers and haptics can't be tested from a browser; button, trigger value, and stick readings can.
Buttons are numbered instead of named.
The controller reported a non-standard mapping, so the browser can't tell which physical button is which. Every button still registers; you just match numbers to what you pressed.