About PadTest

PadTest is a controller tester that runs entirely in your browser. It reads the Gamepad API, draws what it finds, and stops there. There is no account, no upload, no server-side component and no analytics on your inputs — the page is static files, and the readings never leave the tab they were produced in.

What it does

It shows all 17 canonical buttons and 4 canonical axes live, plus anything your controller reports past them. Triggers get a continuous value rather than a light, because that is where their faults hide. Sticks get plotted coordinates with a dead-zone overlay you can drag. There is a drift meter that samples your untouched sticks for a timed run, an update-rate meter, and a vibration check.

Where the numbers come from

The index tables are transcribed from the W3C Gamepad specification. We fetched the source of the Editor's Draft from the specification's own repository and read the button and axis table cells directly, so the position wording on the site is theirs, word for word. The specification is published free; none of it was paywalled or taken second-hand.

A handful of figures are not in the specification because it leaves them to the browser — the 4 ms gamepad sampling interval, the 11.76% analog press threshold, the assignments that put a touchpad click or a capture button at index 17, and the per-controller mapper tables. Those were read from Chromium's published source, and every page that prints one names the file it came from. They describe Chromium, which Chrome and Edge are built on. We did not trace Firefox's or Safari's equivalents to a conclusion, so this site makes no claims about them — the cells are absent rather than guessed.

The dead-zone and quantisation tables are arithmetic. They are computed when the site is built and every published cell is asserted individually in the test suite, which runs as part of the build. If a formula changed and a table stopped matching, the build would fail before the page could ship.

What we could not measure, and what we did instead

We do not own a game controller. Nothing on this site is a measurement of any controller's polling rate, stick drift, trigger resolution or latency, because we had no hardware to measure and no interest in publishing numbers that merely look plausible. Several things you might expect to find here — a table of drift figures by model, a ranking of controllers by polling rate — are absent for exactly that reason.

What we built instead are instruments. The drift meter and the update-rate meter measure your device and show you your number, with the method stated and the limitations attached. That is more useful than a table we invented, and it has the considerable advantage of being true.

Where a number needs a word attached to it — is 0.037 of drift a lot? — we publish a band scale and label it plainly as a scale this site defined. Nobody standardised those boundaries. We chose them so the same reading always gets the same label, and every page that shows a band name says so on the same page.

What it cannot do

  • It cannot see inputs a controller keeps to itself — pairing buttons, most profile switches, gyros and touchpad surfaces.
  • It cannot read a device's true USB polling rate, because the browser samples on its own schedule and a page only ever sees the slower of the two.
  • It cannot prove a stick is healthy from an all-zero drift run, because a dead zone applied upstream produces an identical result. The tool reports that case as inconclusive.
  • It cannot tell you whether a fault is the controller, the cable, the adapter or the port. Change one variable at a time.
  • It cannot promise anything about a pad reporting an empty mapping, including that our own index tables apply to it.

Corrections

If something here is wrong, we would rather know. Every factual claim on this site is supposed to be traceable to a specification section, a named source file, or arithmetic you can redo yourself — and the ones that are not are supposed to say so out loud. A claim that cannot be checked is a bug. The contact page explains how to report one.

Keep testing

Test the rest of the desk