Testing methodology
Every number on this site comes from readings your browser makes available through the Gamepad API. This page explains how each one is calculated and where it stops being reliable.
The data source
A single animation-frame loop reads navigator.getGamepads() and feeds every panel on the page. No other source of data is used, and nothing is inferred from the controller's brand.
Because the loop runs in step with your display, the sampling rate is capped by your browser and monitor. On a 60 Hz display, roughly 60 samples per second are possible.
Stick drift
The drift test records the resting position of both sticks for a fixed period, typically nine seconds, while you do not touch the controller. For each sample it computes the radial distance from the reported centre: the square root of x squared plus y squared.
From that series it reports the current, average, median, peak and 95th percentile offsets, plus the mean X and Y position and a jitter figure derived from the spread between samples. The 95th percentile is used for verdicts because it ignores isolated spikes while still reflecting a steady offset.
Verdict bands: under 0.01 Healthy, 0.01 to 0.04 Minor deviation, 0.04 to 0.08 Potential stick drift, above 0.08 Significant stick drift. These are GamePadTestLab ranges chosen to be useful to players. They are not manufacturer warranty thresholds, and the tolerance is adjustable so you can apply your own.
Recommended deadzone
The recommendation is your measured resting noise plus a safety margin, rounded to a usable value. It is derived only from your controller's readings in this browser session.
It is a starting point, not a universally correct setting. Games apply their own deadzone shapes and scaling, so the value that feels right in one title may need adjusting in another.
Buttons
The button test marks each index as detected the first time the browser reports it pressed. Progress is counted against the number of buttons the browser says the controller exposes, not against an assumed layout.
Any button held for more than twelve seconds is flagged as potentially stuck. A missing button is reported as untested rather than broken, because remapping software, mapping differences and cables all cause false negatives.
Triggers
Trigger values are read as analog inputs between 0 and 1. The test records the resting value, the maximum reached, the travel between them, the difference between left and right, and a history curve of the pull.
Verdicts describe travel and resting behaviour only. Browsers and firmware differ in how trigger position is reported, and adaptive trigger resistance on a DualSense is not accessible to a web page at all.
Circularity and range
While you rotate a stick, the page records the radial distance of every sample and assigns it to one of sixteen directional sectors. It reports the minimum and maximum radius reached and how many sectors received a strong reading.
Controllers legitimately report different range shapes — some square, some clipped at the diagonals. The purpose of this test is to find missing directions and asymmetry between the two sticks, not to award marks for roundness.
Update rate
The page counts how often the controller's reported timestamp changes and converts the intervals into a frequency, reporting average and peak Hz, median and average interval, jitter and sample count.
This is a browser-observed update rate. It is limited by browser scheduling, display refresh rate, operating system behaviour and Bluetooth timing, and it cannot confirm a hardware polling rate such as 1000 Hz.
Health score
Each completed category is scored from 0 to 100 and combined using fixed weights: stick drift 38, buttons 24, triggers 16, stick range 14, vibration 4 and browser update stability 4. Only categories that were actually measured are included, and the weights are renormalised across them.
Grades: 90 and above Excellent, 78 to 89 Good, 60 to 77 Fair, below 60 Needs Attention. Confidence is High when at least four core categories were measured, Medium at two or three, Low below that.
Anything your browser does not support is labelled Not available in this browser and is never counted as a failure.
What this site cannot do
It cannot repair stick drift, recalibrate a controller, read firmware, measure battery health, control adaptive triggers or haptics, or certify hardware for warranty purposes.
It reports what a browser can see. Where a browser sees nothing — vibration on many combinations, gyro, touchpad coordinates — the page says so plainly instead of guessing.
Privacy
All processing happens in your browser. Stick coordinates, button states and reports are never transmitted. Saved reports are stored in this browser's local storage and can be deleted at any time with Clear Test History.