Gamepad Test

Connect a controller and press a button to see pressed states and analog values (triggers 0–1) in real time. Stick drift is measured as the offset from centre while untouched, and rolling the rim shows how round the circle is.

On-device・No uploadMobile friendlyWorks offline

Your files and input are processed only inside your browser on this device and are never uploaded to our servers.

No controller found

Connect a controller, keep this page open and press any button. Browsers do not expose a controller until you press something on the page. If it never appears, try the sample to explore the screen.

Connected controllers
#IDMappingButtonsAxesStatus
—

Browsers expose up to 4 controllers. For a non-standard mapping the diagram is replaced by raw button and axis numbers.

Connect / disconnect log

No connect or disconnect events since this page was opened.

Buttons
ButtonAnalog valuePressesLast pressed
—
Axes (raw values)
Axis
—
Sticks

Take your hands off both sticks and press “Measure for 3 s”. The offset from the centre (0–1) while untouched is summarised. The label uses the 95th percentile so that a single spiky frame does not count.

Press “Start recording” and roll each stick slowly around its rim once or twice. Roundness is the shortest radius ÷ the longest radius over the part of the rim reached (magnitude 0.85 or more).

Left stick

Position (X, Y)
—
Largest offset
Not measured
Average offset
—
Average direction (X, Y)
—
Dead zone estimate
—
Roundness
No rim data yet

Right stick

Position (X, Y)
—
Largest offset
Not measured
Average offset
—
Average direction (X, Y)
—
Dead zone estimate
—
Roundness
No rim data yet

An estimate of a value that would hide this offset. It differs from each game’s own setting.

Closer to 1 is rounder. Many controllers have a squarish gate, so a value below 1 is not necessarily a fault.

Input update interval (estimate)
Browser polling interval (median)
Appears once you operate it
Polling rate
—
Interval between value changes (median)
—
Value update rate (rough)
—

Min – max: —

The browser reads the controller on each animation frame (requestAnimationFrame), so on a 60 Hz screen about 16.7 ms is the finest it can see. This is not the controller’s own report rate (e.g. 125 Hz or 1000 Hz). It is estimated while you keep moving a stick.

Vibration test

No controller is connected.

Mostly Chrome / Edge with supported controllers. It may not work depending on the browser, OS or connection (wired or Bluetooth).

Controller input is only counted on this page — nothing is stored or sent.

How to use

  1. Connect the controller over USB or Bluetooth, keep this page open and press any button. Browsers do not expose a controller until you press something on the page.

  2. Check the ID, mapping (standard or not), button and axis counts under “Connected controllers”, then see pressed buttons and analog values in the diagram and the table. Switch between Xbox and PlayStation labels.

  3. To check drift, take your hands off both sticks and press “Measure for 3 s”. The largest and average offset from the centre while untouched are shown.

  4. To see the circle shape, press “Start recording” and roll each stick slowly around its rim once or twice. Roundness (shortest radius ÷ longest radius) and the part of the rim reached are shown.

  5. “Input update interval” estimates the polling interval while you keep moving a stick. If vibration is supported, “Vibrate” lets you check the motors.

What it does

Drift as numbers

Collects both sticks for 3 seconds and shows the largest offset, the average offset and the average direction from the centre (0–1) while untouched. The label uses the 95th percentile (so one spiky frame does not count): under 0.05, under 0.15 or more; 0.5 or more is flagged as “probably touched” so you can retry.

Circle shape (roundness)

Splits the rim path (magnitude 0.85 or more) into 36 directions and reports the shortest ÷ longest of the per-direction maximum radius. If less than 70% of the rim was reached, it says so.

Diagram and table of every input

Standard-mapping controllers get a diagram with switchable Xbox / PlayStation labels showing presses, trigger analog values and stick positions, plus press counts and last-pressed times. Non-standard mappings can still be checked by raw button and axis numbers.

Estimated update interval

Estimates the update rate from the animation-frame polling interval and the median interval between value changes. It is not the controller’s own report rate.

Up to 4 controllers, connect and disconnect

Lists up to the 4 controllers browsers expose and logs connect and disconnect events. If nothing connects, a sample controller lets you explore the screen.

Use cases

  • Check with numbers whether a stick moves a character or cursor by itself (drift)
  • Confirm that a specific button or trigger on a PS5, PS4 or Xbox controller responds
  • See whether the triggers (L2/R2, LT/RT) change smoothly from 0 to 1
  • Inspect a second-hand or repaired controller without launching a game
  • Find out why a controller with a non-standard mapping gets its buttons mixed up in games

Capability matrix

FeatureSupportNotes
Live display of buttons, triggers and sticksSupported—
Drift measurement (offset while untouched)PartialA rough reading at the time of measurement; it cannot say whether the stick is faulty
Dead zone estimatePartialAn estimate of a value that hides the offset; it differs from each game’s setting
Vibration testPartialOnly browsers and controllers with vibrationActuator; may fail depending on browser, OS or connection
Input update intervalPartialAn estimate from browser polling; the controller’s own report rate (Hz) cannot be measured
Gyro, accelerometer, touchpad, adaptive triggersNot supportedNot exposed by the Gamepad API
More than 4 controllers at onceNot supportedBrowsers expose at most 4

Limits & notes

  • By browser design a controller is not exposed until a button is pressed while this page is open. If it does not show up, press a button.
  • The values you can read vary with browser, OS, connection (wired, Bluetooth, dongle) and driver. The same controller can report different button numbers or mappings.
  • The drift numbers cover the 3 seconds while your hands were off the sticks. They alone cannot show that the controller is faulty.
  • Roundness below 1 is normal for many controllers because their rim is squarish. Treat it as a rough guide.
  • Browsers may stop reading input while the page is in the background.
  • On phones, a controller may not be recognized, so a PC browser is recommended.

Privacy & safety

Controller input is only counted on this page — nothing is stored or sent, and results disappear when you close the page.

FAQ

My controller does not show up
Browsers only expose a controller after a button is pressed while the page is open. Connect it and press any button. If it still does not appear, try another USB port or cable, reconnect Bluetooth, or use another browser such as Chrome or Edge.
How do I read the drift result?
Take your hands off both sticks, press “Measure for 3 s” and look at the largest offset. Under 0.05 is practically none; 0.15 or more may move things depending on the game and its dead zone (XInput’s default dead zones are about 0.24 / 0.27). Games often apply a dead zone, so this alone cannot prove a fault.
Is the dead zone estimate the same as the game setting?
No. It is only an estimate of a value that would hide the measured offset. Each game or app has its own dead zone setting, which differs from it.
Can I test a PS5 controller?
Connect it over USB or Bluetooth and press a button. Chrome and Edge usually expose it with the standard mapping, and you can switch the labels to PlayStation. The touchpad, gyro and adaptive triggers are not available through the Gamepad API.
The vibration test says it cannot be tried
Vibration depends on the browser, OS, controller and connection. It mostly works in Chrome or Edge with supported controllers.
Is anything sent anywhere?
No. Everything is counted on this page only and never stored or sent.

Last updated: