Gamepad Tester
Press a button and the page shows what your browser says the controller is sending: every button index, lit while it is held and left marked once it has registered, every axis drawn against a dead zone you choose with the two sticks named where the browser maps the pad to the standard layout, and a list of the buttons that have never reported at all. Each axis carries two numbers, the raw position and the same position after the dead zone, because a stick that rests at 0.05 reads as perfectly centred once a dead zone of 0.08 is applied, and that gap is exactly what drift looks like. Copy report writes the whole session out as plain text for a support thread.
No controller yet. Connect one by cable or Bluetooth, then press any button on it: browsers keep a controller hidden from a page until a button is pressed, so this screen stays empty until you do.
Nothing appears until the controller sends something: browsers keep a pad hidden from a page until a button on it is pressed.
The standard mapping, position by position
When the browser reports standard, the numbers below are fixed by the Gamepad specification and mean the same thing on every pad: they name a position, not a brand. When it reports anything else, the buttons are shown as numbers here, because naming them would be a guess. Peaks are the largest value this session has seen from your controller.
| Index | Shown as | Xbox | PlayStation | Where it sits | Peak seen |
|---|---|---|---|---|---|
| 0 | A | A | Cross | bottom button, right cluster | not yet |
| 1 | B | B | Circle | right button, right cluster | not yet |
| 2 | X | X | Square | left button, right cluster | not yet |
| 3 | Y | Y | Triangle | top button, right cluster | not yet |
| 4 | LB | LB | L1 | top left shoulder | not yet |
| 5 | RB | RB | R1 | top right shoulder | not yet |
| 6 | LT | LT | L2 | bottom left shoulder, analogue trigger | not yet |
| 7 | RT | RT | R2 | bottom right shoulder, analogue trigger | not yet |
| 8 | Back | Back or View | Share or Create | left button, centre cluster | not yet |
| 9 | Start | Start or Menu | Options | right button, centre cluster | not yet |
| 10 | L3 | L3 | L3 | left stick pressed in | not yet |
| 11 | R3 | R3 | R3 | right stick pressed in | not yet |
| 12 | Up | D-pad up | D-pad up | top of the direction pad | not yet |
| 13 | Down | D-pad down | D-pad down | bottom of the direction pad | not yet |
| 14 | Left | D-pad left | D-pad left | left of the direction pad | not yet |
| 15 | Right | D-pad right | D-pad right | right of the direction pad | not yet |
| 16 | Guide | Xbox button | PS button | centre of the centre cluster | not yet |
Common questions
- Why does nothing show up until I press a button?
- Because the browser will not tell a page that a controller exists until you press something on it. That is a deliberate privacy rule: the list of devices attached to your machine is a way to recognise you, so browsers hold it back until you act. The controller can be plugged in, paired, and lighting up, and this page still sees nothing. Press any button, or move a stick far enough to count as input on some browsers, and the whole reading appears at once.
- What is a dead zone, and what does changing it here do?
- A dead zone is how much stick movement a game agrees to ignore, so that a controller resting slightly off centre does not walk your character across the room. Changing the number here changes nothing on the controller and nothing in any game: it changes the second column on this page, which shows what a game using that setting would act on. Values inside the zone become exactly 0, and values outside are rescaled so the edge of the zone reads 0 and a full push still reads 1. At a dead zone of 0.08, a raw 0.05 reads 0.00 and a raw 0.54 reads 0.50. Anything from 0 to 0.9 is accepted; past 0.9 there is so little travel left that the figure would jump from 0 to 1 with nothing in between.
- How do I tell stick drift from a dead zone?
- Let go of the stick completely and read the raw column, not the zoned one. A stick at rest should sit at 0.00, or within a thousandth or two of it. If the raw number sits at 0.04 or 0.12 while your hand is nowhere near the pad, that is drift, and the thin marker on the bar will sit off the centre line even when the filled bar shows nothing. This is why both numbers are on the screen: a page that only showed the dead-zoned value would report a drifting stick as perfectly centred, which is the failure people come here to find.
- Can this fix, calibrate or remap my controller?
- No, and nothing on the web can. A page is only allowed to read the values a controller sends; it cannot write a calibration back to the device, change which physical button sends which number, or adjust a dead zone stored in the hardware. What this page gives you is the evidence: which buttons register, what the sticks actually report at rest and at full travel, and a plain text report you can paste into a warranty claim or a forum thread. Calibration itself belongs to your operating system, your console, or the manufacturer's own utility.
- What do the button numbers mean, and why is index 0 called A?
- When the browser reports the mapping as standard, the numbers are fixed by the Gamepad specification and mean a position rather than a brand: index 0 is the bottom button of the right hand cluster, which is A on an Xbox pad and Cross on a PlayStation pad. The table further down the page names every position in all three ways. When the browser reports any other mapping, or none, the numbers are whatever the device chose to send, so this page shows them as numbers and does not name them, because a name there would be a guess printed as a fact.
- Why does my trigger show a value between 0 and 1?
- Because it is an analogue control. On a standard mapping, buttons 6 and 7 are the two bottom shoulder triggers, and they report how far they are pulled rather than just pressed or not. The key for a partly pulled trigger fills from the bottom in proportion to that value, and the Pressed now line gives the figure to two decimals. A trigger that jumps straight from 0.00 to 1.00 with nothing in between is reporting as a plain switch, which usually means the browser mapped the pad without analogue triggers.
- Does anything get uploaded, and what is remembered?
- Nothing is uploaded. The reading is taken from your browser's own gamepad list, in the page you are looking at, and there is no account and no upload step. The only thing kept between visits is the dead zone number, in this browser's local storage; clearing site data removes it. The controller's name, the button values and the report are never stored anywhere, and the report only leaves the page when you press Copy report and paste it somewhere yourself.
- The page says it cannot see any controller at all. What now?
- Check three things in order. First, press a button on the pad while this tab is in front, since the browser reveals nothing until you do. Second, make sure the controller is in the right mode: several pads can present themselves as a keyboard or a mouse, and in that mode there is no gamepad for the browser to report. Third, if the page is embedded inside another site, the framing page can withhold gamepad access, so open this page on its own. If the readout says the browser offers no Gamepad API at all, a current Chrome, Edge, Firefox, Safari or Opera will.
These are the values your browser reports for the controller, read many times a second. The browser hides controllers until you press a button, so nothing appears until then. Raw values are shown beside the dead-zoned ones, and this page cannot calibrate, remap or repair a controller.