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.

Written by Joseph Sanusi

Software Developer - GamePadTestLab

Last updated: 16th October 2026

Published test records

The PS4 and PS5 controller pages include unedited browser-report screenshots from documented individual tests. Each caption separates what the report visibly shows from context that was not recorded, such as connection method, browser, operating system and remapping-software state.

A report is evidence of that one browser-visible reading at that time. It does not establish hardware polling rate, latency, long-term reliability or universal compatibility.

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 browser animation frames, the sampling rate is capped by your browser, display refresh rate, operating system scheduling and background load. 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 offset, arithmetic average, median, peak and 95th percentile offsets, plus the mean X and Y centre position and a jitter figure from standard deviation. The 95th percentile is the value below which about 95% of collected resting offsets fall, so it reflects typical high-end neutral movement without allowing one isolated spike to dominate.

Verdict bands use the current implementation thresholds: up to 0.01 Healthy, up to 0.04 Minor deviation, up to 0.09 Potential stick drift, and above 0.09 Significant stick drift. These are GamePadTestLab diagnostic ranges for browser-visible readings, not manufacturer warranty thresholds, and the tolerance control lets you inspect the result with a stricter or looser band.

Recommended deadzone

The recommendation is calculated from the larger left/right 95th-percentile resting offset. The current formula is: p95 x 1.35 + 0.01, rounded to the nearest 0.005 and clamped between 0.02 and 0.35.

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 sample points. Samples inside radius 0.35 are ignored for range analysis. Remaining points are assigned to one of sixteen directional sectors, and a sector counts as covered when a sample in it reaches at least radius 0.75.

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.

Stick drift score is 100 minus worst p95 offset multiplied by 900, clamped to 0-100. Button score is detected buttons divided by expected buttons. Trigger score uses average maximum travel, then subtracts penalties for non-zero rest and left/right imbalance. Stick range combines 16-sector coverage for 80% of its score and maximum radius for 20%. Browser update stability caps credit at 125 Hz and subtracts a jitter penalty.

Grades: 90 and above Excellent, 78 to 89 Good, 60 to 77 Fair, and below 60 Needs Attention. Confidence is High when all four core categories were measured, Medium at two or three, and Low below that.

Anything your browser does not support is labelled Not available in this browser and is never counted as a failure.

Future first-party testing fields

Future hardware records should include controller model, connection, operating system, browser and version, firmware if known, sample duration, sample count and date tested.

Those records can later hold measured detection, mapping, trigger range, neutral drift, average offset, P95, maximum deviation, recommended deadzone, circularity, vibration availability, observed Gamepad API update frequency and known quirks. Until Joseph supplies real measurements, these fields remain intentionally unpopulated.

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.

View the documented reports

DualShock 4 test records show four PS4 browser reports, while the DualSense test record shows one PS5 browser report with its documented limitations.