Input devices

Online Gamepad Test

Test any connected controller in the browser. See live button presses, trigger values and analog stick positions.

connected controllersnone detected
No controller detected yet. Connect one by USB or Bluetooth, then press any button on it. Browsers deliberately hide a connected gamepad from a page until its first input, so this is expected rather than a fault.

This online gamepad test uses the browser Gamepad API to show exactly what your controller is sending. Connect a controller, press a button, and it lights up on screen, while triggers show their pressure value and the analog sticks show their live position. It works with common console-style and PC controllers over USB or Bluetooth, and it is the fastest way to confirm every button and axis works before a session or after a repair.

Stick drift is one of the most common controller faults, and this test makes it obvious. Leave both analog sticks untouched and watch their reported position: on a healthy controller the values sit at rest near the centre, but a drifting stick reports movement even when you are not touching it, which is what makes a character wander or the camera creep in games. Because the test shows the raw axis values, you can see small amounts of drift that are hard to notice while playing, and decide whether a stick needs cleaning, recalibrating or replacing.

Every face button, shoulder button, D-pad direction and stick click gets its own indicator, so you can work through the whole controller and confirm nothing is dead or sticking. Analog triggers show a value that rises as you pull them, which lets you check the full range of travel rather than just whether they click at the end. If a controller does not appear at all, most browsers require you to press a button first before they report it, so give it a press to wake up the connection.

The Gamepad API runs entirely in your browser and reads only the controller state, so nothing is uploaded and no game or driver is needed. That makes this a handy, private check when you are buying a used controller, troubleshooting one that feels off, or simply confirming that a new pad is fully working before you rely on it in a match.

How this test works

This test reads the standard Gamepad API through navigator.getGamepads() and polls it on every animation frame, because the API has no events for button and axis changes. Button and axis values come straight from the browser, unmodified and with no deadzone applied, which is why a stick with drift shows a non-zero resting value here even when games hide it. Browsers deliberately withhold connected gamepads from a page until you press a button, so nothing appears until you do. The polling loop stops when the tab is hidden.

How to use the gamepad test

  1. Connect your controller by USB or pair it over Bluetooth.
  2. Press any button so the browser detects the controller.
  3. Work through every button and confirm each one lights up on screen.
  4. Move the analog sticks and watch their live position values.
  5. Leave the sticks untouched and check the values rest near centre to rule out drift.

Reference tables

These are server-rendered, so they are readable without running the test and quotable without running any JavaScript. Where a figure comes from a specification it is cited under the table; where it is our own judgement, the table says so.

What the gamepad test can and cannot tell you
What it measuresWhat it cannot see
Every button and axis value the Gamepad API exposes, liveAnything at all until you press a button: browsers hide gamepads from a page until then, on purpose
Whether the browser applied the standard mappingMeaningful button names when it did not; the raw indexes are all that is left
Resting axis values, which is what stick drift shows up inWhether the cause is a worn potentiometer, dirt or a calibration offset
Trigger travel as a value between 0 and 1Trigger force, rumble, gyro or adaptive-trigger state, none of which the standard mapping carries
Battery level: neverThe Gamepad API exposes no battery information

Compiled by MyGearCheck from the browser APIs each test uses. Every limit listed here is a limit of the browser, not of your hardware.

Standard Gamepad API button mapping, next to the labels printed on Xbox, DualSense and Switch Pro controllers
IndexPosition in the specificationXboxDualSenseSwitch Pro
buttons[0]Bottom button in right clusterACrossB
buttons[1]Right button in right clusterBCircleA
buttons[2]Left button in right clusterXSquareY
buttons[3]Top button in right clusterYTriangleX
buttons[4]Top left front buttonLBL1L
buttons[5]Top right front buttonRBR1R
buttons[6]Bottom left front buttonLTL2ZL
buttons[7]Bottom right front buttonRTR2ZR
buttons[8]Left button in center clusterViewCreateMinus
buttons[9]Right button in center clusterMenuOptionsPlus
buttons[10]Left stick pressed buttonLS clickL3Left stick click
buttons[11]Right stick pressed buttonRS clickR3Right stick click
buttons[12]Top button in left clusterD-pad upD-pad upD-pad up
buttons[13]Bottom button in left clusterD-pad downD-pad downD-pad down
buttons[14]Left button in left clusterD-pad leftD-pad leftD-pad left
buttons[15]Right button in left clusterD-pad rightD-pad rightD-pad right
buttons[16]Center button in center clusterXbox buttonPS buttonHome

Index and position column: W3C Gamepad specification, w3c.github.io/gamepad, read 2026-08-05. The three controller columns translate those positions to the printed labels. Nintendo mirrors its face buttons, which is why index 0 is A on an Xbox pad and B on a Switch Pro. This mapping only applies when your browser reports mapping: "standard"; the test above tells you whether it does.

Standard Gamepad API axis mapping
IndexWhat it reportsRange
axes[0]Horizontal axis for left stick (negative left, positive right)-1 to 1
axes[1]Vertical axis for left stick (negative up, positive down)-1 to 1
axes[2]Horizontal axis for right stick (negative left, positive right)-1 to 1
axes[3]Vertical axis for right stick (negative up, positive down)-1 to 1

W3C Gamepad specification, w3c.github.io/gamepad, read 2026-08-05. A stick at rest should sit close to 0.00 on both of its axes.

Frequently asked questions

My controller is connected but not detected. What now?

Most browsers only report a gamepad after it sends its first input, for privacy reasons. Press any button on the controller and it should appear immediately. If it still does not, reconnect it and make sure the browser tab is focused.

How do I test for analog stick drift?

Let go of both sticks and watch the axis values. On a good controller they rest near the centre position. If a value keeps reporting movement while you are not touching the stick, that stick is drifting and may need cleaning, recalibration or replacement.

Which controllers are supported?

Any controller your browser exposes through the Gamepad API, which covers most popular console-style and PC controllers connected over USB or Bluetooth. Exact button labels can vary by model, but presses and axis values are always shown.

Why does nothing appear until I press a button?

Browsers deliberately hide connected gamepads from a page until you press a button, as a privacy measure against fingerprinting. It is a browser rule, not a fault in the controller or the test.

What does standard mapping mean, and why does it matter?

It means the browser recognised your controller and mapped it to the layout the W3C Gamepad specification defines, so button numbers correspond to known positions. When it reports anything else, the numbers on screen are raw indexes with no reliable meaning, and the test says so instead of showing labels it cannot back up.

Can the test see my controller's battery level?

No. The standard gamepad mapping carries buttons and axes and nothing else, so battery, rumble, gyroscope and adaptive triggers are all invisible to any browser.

What resting value counts as drift?

This test treats a consistent reading above 0.10 on an axis as drift. That threshold is ours, chosen because one tenth of full deflection sits well above normal jitter and well below a deliberate movement; no specification defines one.

Does it work over Bluetooth as well as USB?

Yes, the API makes no distinction. If a controller reads worse over Bluetooth than on a cable, that difference is real and points at the connection rather than the sticks.

Guides for this test

The test shows you what is happening. These explain what to do about it.

More hardware tests

The closest tests to this one are the rest of the input devices group. Working through a whole machine instead? The full check runs everything in order and ends in one report.

Everything else in the suite:

All 11 MyGearChecktests ->