Gamepad tester

Press a button and watch it happen on a real photo of your controller, not a diagram. Every button, stick, trigger and both rumble motors, checked live in the browser. Works with PS5, Xbox, Switch Pro and PC pads. No install, no account.

Waiting for a controller Plug it in or pair it, then press any button.
Live preview

Each input lights up on the photo as you press it.

Buttons0 / 17
Sticks0 / 2
Triggers0 / 2
RumbleNot run

Buttons

0 / 17 tested

Triggers

Vibration

Device

Runs in your browser. Nothing is uploaded. Controller not detected?

How does the tester work?

Your browser exposes connected controllers through the Gamepad API. This page reads that stream continuously and shows it twice: on a photo of the controller, where each button lights up as you press it, and in the panel on the right, which gives the exact value of every input. Triggers report their analog position from 0 to 100%, so you can see whether one sweeps smoothly or jumps, and sticks report exact coordinates rather than a direction.

The progress row under the photo counts what you have covered: 17 buttons, 2 sticks, 2 triggers and the rumble. Press every button, sweep both triggers, roll each stick to its edge in every direction, run the vibration test, then let go of everything. Any input still active at rest is flagged as stuck.

How are buttons numbered?

Under standard mapping the browser gives every controller the same numbering, whatever is printed on the buttons. That is why a tester shows "button 0" rather than A or ✕:

IndexXboxPlayStationNintendo
0A✕ CrossB
1B○ CircleA
2X▢ SquareY
3Y△ TriangleX
4 / 5LB / RBL1 / R1L / R
6 / 7LT / RTL2 / R2ZL / ZR
8 / 9View / MenuShare / Options− / +
10 / 11LS / RS clickL3 / R3Stick click
12 to 15D-pad up, down, left, right
16Xbox buttonPS buttonHome

The numbers follow the position of a button, not its letter. Nintendo's A and B, X and Y are physically swapped compared with Xbox, so a Switch Pro Controller can feel wrong in a game that assumes Xbox labels.

What do common problems mean?

Nothing is detected

Press any button: browsers hide a controller from a page until it sends an input. If it still does not appear, follow the controller detection checklist, which goes through the connection, Windows and remapping apps such as Steam Input and DS4Windows.

An input stays active when you are not touching it

That is a stuck button or a drifting stick, and the panel highlights it. To measure how far a stick drifts, use the stick drift test. For causes, cleaning and repair, see controller care and stick drift.

The mapping says "non-standard"

The browser could not match your controller to the common layout, so the numbers may not match the table above. The controller still works, but games and overlays can show the wrong buttons. Wrong buttons on the overlay covers the fixes.

A trigger jumps straight to 100%

Analog triggers should sweep smoothly. A trigger that snaps to full is being read as a digital button, which usually means a non-standard mapping or a pad that never had analog triggers.

Controller checks out? Put it on stream.

Turn it into a live, transparent input overlay for OBS, Streamlabs or any app that accepts a browser source. Designing it is free.

Build my overlay

What cannot the tester tell me?

Everything here is read after the operating system and the driver, through the same API a browser game uses. That is what software receives, with some limits:

  • A dead zone applied by the driver cannot be told apart from one built into the controller.
  • It confirms that an input responds, not how fast. The latency test measures the report rate.
  • It shows that a stick drifts, not by how much. The stick drift test measures it.
  • Silence from the vibration test does not prove the motors are dead. The browser must expose them: according to MDN compatibility data (October 2026), Chrome (since version 68) and Edge support vibration, as does Safari on macOS since version 16.4, while Firefox and Safari on iPhone and iPad do not. Support also varies with the controller and the connection, so try a USB cable in Chrome before blaming the hardware.

FAQ