Skip to the tool
CALCPARK

Gamepad Tester

Test an Xbox, PlayStation or any USB/Bluetooth controller in your browser: live button, trigger and stick readings, an adjustable deadzone and a 3-second drift test.

Runs on your device
Loading the tool…

How to use it

  1. Plug in or pair the controller, open this page and press any button. The controller’s name and mapping appear in the Controller panel.
  2. Press every button and trigger and watch the Buttons grid; triggers show their travel as a percentage.
  3. Move each stick: the dot in the stick circle follows it, and the figures under the circle show the raw values and the values after the deadzone.
  4. Take your hands off the sticks and press “Measure drift (3 s)”. Compare the offset with your deadzone; adjust the deadzone to the value your game uses and measure again.
  5. Use “Test rumble” to check the vibration motors where the browser supports it (Chrome and Edge).

Example

A controller reports the right stick resting at X +0.300, Y −0.010 over 180 readings. The offset is √(0.300² + 0.010²) = 0.300, three times a 0.10 deadzone, so the verdict is “exceeds the deadzone – the stick rests off-centre”. The left stick averages +0.007, −0.003 with a maximum excursion of 0.020: “within the deadzone – resting at centre”.

How the readings are interpreted

offset        = √(meanX² + meanY²)             mean of all samples in 3 s
max deviation = max √(x² + y²) over the samples
centred : max deviation ≤ deadzone
drift   : offset > deadzone
jitter  : offset ≤ deadzone but max deviation > deadzone
after deadzone: 0 inside the circle, otherwise (|v| − dz) / (1 − dz) along the same direction

Values come straight from the browser’s Gamepad API, polled once per animation frame (typically 60–120 times a second). The “standard” mapping is the W3C layout – 17 buttons and four axes in a fixed order – which is why Xbox and PlayStation names can be shown side by side; a controller without that mapping gets a numbered generic view. A button counts as pressed when the browser flags it or an analogue value reaches 50%. Browsers do not expose battery level, gyroscopes or the DualSense touchpad, and Firefox and Safari do not expose rumble.

Sources: W3C Gamepad specification – standard mapping, MDN – Gamepad API.

This is a tester, not a repair or calibration tool: it cannot change the controller’s own calibration, and the drift figures are a snapshot from the browser rather than a laboratory measurement. Input latency is not measured.

Questions

My controller is connected but nothing shows up. Why?
Press a button on it – browsers only list a gamepad after the page has seen input from it. If it still does not appear, check that no other app (a game, Steam, a remapping tool) has exclusive access, try a different USB cable or port, and make sure the page is open over https.
What is stick drift and is my controller faulty?
Drift is when a stick reports movement while untouched, usually because the potentiometer has worn or picked up dirt. A resting offset larger than the deadzone used by your games is what you notice as a character creeping or a camera turning. A small offset inside the deadzone is normal manufacturing tolerance.
Which deadzone should I enter?
Use the value from the game or system you play on: console system menus and most PC games sit between 0.10 and 0.25. If a stick only drifts below that value, raising the in-game deadzone hides the problem; if it drifts above it, the stick module usually needs cleaning or replacing.
Why do the Xbox and PlayStation names both appear?
With the standard mapping the browser places the face buttons in the same slots for every controller: slot 0 is A on Xbox and Cross on PlayStation, slot 1 is B/Circle, and so on. The label shows both so you can match whichever pad you hold.