How it works
It shows live everything the controller reports to the browser: each button with its analog value and a press counter, the triggers as bars that fill up, both sticks with their exact position and a trace of their path. It works with Xbox, PlayStation and Nintendo controllers, and with any gamepad, steering wheel or joystick, USB or Bluetooth, that the system recognizes.
The two most common faults of a used controller are drift, when the released stick doesn't return to the center, and buttons that stop responding or bounce. With the stick at rest, the distance from the center should be close to zero; the circularity test, completed by rotating the stick along the edge, also measures whether its travel reaches all directions evenly.
Examples
axes[0] = 0.0784 · axes[1] = -0.1137r = 0.138A stick that, untouched, rests at this distance from the center has drift: in a game with a small dead zone the camera or the character moves on its own.XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE = 78497849 / 32767 ≈ 0.24This is the dead zone Microsoft suggests for the left stick in XInput. Drift below this value goes unnoticed in games that use it, but not in those that shrink it to gain precision.buttons[7].value = 0.42RT · R2 · ZR → 42 %Xbox and PlayStation triggers are analog and report how far they are pressed. The ZL and ZR of the Nintendo Pro Controller are digital: they only go from 0 to 1.Use cases
- Check whether a stick has drift before claiming the warranty, replacing the module or buying a used controller.
- Verify the buttons of a repaired or freshly cleaned controller one by one, using the counter to detect double presses.
- Confirm that a Bluetooth controller is properly paired and that the system recognizes it before launching a game.
- See which button and axis numbers a steering wheel, arcade stick or flight stick reports, to configure them in an emulator.
- Check that the vibration motors work.
Frequently asked questions
Why doesn't my controller show up?
For privacy, the browser doesn't show any controller until you press a button with the page open and in the foreground. If it still doesn't appear, check that the system sees it: on Windows, run joy.cpl to open the game controllers. Programs such as Steam, DS4Windows or reWASD can hide the original controller and present a virtual one in its place.
How do I know if the stick has drift?
Release the stick and look at the r value, which is the distance from the center. A healthy stick stays within a few hundredths; if it goes above 0.1 untouched, or the dot moves by itself, there is drift. Push it to the edge and release it several times: if it returns to different places, the spring or the potentiometer is worn out.
What does the circularity error measure?
As you rotate the stick along the edge, the tool stores the farthest point it reached in each of 36 directions and calculates how far, on average, it deviates from a perfect circle. A high value means that in some directions the stick doesn't reach the maximum or exceeds it. Some controllers widen the diagonals on purpose, so it is best to compare two controllers of the same model before drawing conclusions.
What does it mean that the mapping is non-standard?
The browser knows the layout of the most common controllers and presents them all with the same button order, which is what makes drawing them possible. When it doesn't recognize a model, it hands over the buttons and axes in the order the device reports them; they still work, but without names. With another browser or over another connection, USB instead of Bluetooth, the same controller is sometimes recognized.
Why don't the vibration buttons appear?
They only appear when the browser offers vibration for that controller. Chrome and Edge offer it for most Xbox and PlayStation controllers; other browsers, some Bluetooth connections and many generic controllers don't expose it even if the controller has motors.
Can I measure the controller's latency or polling rate?
Not accurately. The browser doesn't notify the page every time the controller changes: the page queries it once per screen frame, so it never sees more changes per second than the monitor's refresh rate. Measuring the real polling rate requires tools that read the device directly.