Stick drift test
Measure how far a resting analog stick sits from centre, as a percentage of full travel, over a fixed five-second window.
Connect a controller
Plug in a pad or pair it over Bluetooth, then press any button on it. Browsers hide idle gamepads from a page on purpose, so the press is what makes it appear — nothing about the controller is sent anywhere.
Stick drift is a number, not an impression, and this page produces the number. It reads both analog sticks through the Gamepad API on every animation frame, draws each one as an XY plot with a dead-zone ring you can drag, and then measures: put the controller down, press the button, and for five seconds every frame of resting position is sampled. What comes back is the peak deflection, the average and the 95th percentile, each as a percentage of full stick travel, with a verdict band and the in-game deadzone that would swallow it. Buttons, triggers and rumble are a different job and stay on the full gamepad tester; this page does one thing, because a single frame of stick data is not evidence and a five-second distribution is.
Key facts about Stick drift test
| API used | navigator.getGamepads(), read inside requestAnimationFrame |
|---|---|
| Sticks read | axes 0 and 1 as the left stick, axes 2 and 3 as the right, per the W3C standard mapping |
| Measurement window | five seconds, fixed — roughly 300 samples at 60 Hz and 720 at 144 Hz |
| Reported per stick | peak, average and 95th-percentile deflection, as a percentage of full travel |
| Deflection formula | the Euclidean distance of the stick from perfect centre, clamped to 100% |
| Verdict bands | under 2% none, under 8% minor, 8% and above significant |
| Suggested deadzone | the peak reading rounded up plus two points, capped at 30% |
| Dead-zone overlay | a draggable 0–30% ring drawn on the plot, so you can see what a game would throw away |
| Movement guard | a stick that passes 50% of travel during the window is reported as held, not drifting |
| Disconnect guard | a pad that vanishes mid-measurement cancels the run instead of reporting a short sample |
| Per-controller notes | DualSense, DualShock 4, Xbox/XInput, Switch Pro and Joy-Con, Steam Input, and unrecognised pads |
| Stick trail | the last 90 sampled positions drawn as a polyline, which shows a worn gate a static reading misses |
What happens to your file
Stick positions are read from the Gamepad API inside this tab and drawn straight to the page. Nothing is uploaded, nothing is written to storage, and no measurement survives a reload — close the tab and the samples are gone. One thing to know about how the API works, because it looks like a bug: a browser hides every connected gamepad from a page until you press a button on one, which is a deliberate anti-fingerprinting measure. Until that press, the page cannot see that a controller exists at all, which is exactly the point. The only device details the page reads are the id string and the axis values the browser hands over, and neither leaves the tab.
About this tool
- 1
Wake the controller
Plug in the cable or pair over Bluetooth, then press any button while this tab has focus. Browsers hide idle gamepads from a page on purpose, so the button press is what makes the pad appear — this step is mandatory even when the controller is obviously connected.
- 2
Check the axis order
Move the left stick and confirm the left plot reacts. On a pad that reports an empty mapping, which is common for Switch Pro controllers and generic USB pads, the axis order is whatever the device sends and may not match the drawing.
- 3
Close anything that remaps
Steam Input, DS4Windows, reWASD and similar tools present a virtual controller with their own deadzone and response curve already applied. Shut them down, or the number you measure describes the software rather than the stick.
- 4
Put the controller down
Set it flat on a desk and take your hands off completely. Resting the thumbs lightly on the sticks is enough to move the reading, and the page will flag a stick that crosses 50 percent of travel as held rather than drifting.
- 5
Run the five-second measurement
Press the button and leave the pad alone until the countdown finishes. Every animation frame in the window is sampled, which is why the result is a distribution rather than one number you happened to catch.
- 6
Read the three figures
Peak is the worst frame, average is the resting position, and the 95th percentile is what the stick does almost all the time. A high peak with a low average means an intermittent jump; a high average is a stick that sits off centre permanently.
- 7
Set the deadzone
If drift is measurable the page suggests a percentage. Drag the dead-zone ring to that value and check that the resting dot sits inside it, then enter the same figure in the game's controller settings or in Steam's per-game configuration.
- 8
Test the moving case too
Circle each stick out to its rim a few times, release, and measure again. A stick that reads clean at rest but drifts after movement is the classic Joy-Con symptom, and the trail line will show a flattened side where the gate is worn.
| Browser support | Chrome, Edge, Firefox, Opera and Safari 10.1+ implement the Gamepad API |
|---|---|
| Secure context | the API requires HTTPS, which this page is served over |
| Xbox and XInput pads | standard mapping on Windows, macOS and Linux; the pad applies a small hardware deadzone before the browser sees anything |
| DualShock 4 and DualSense | standard mapping over both USB and Bluetooth; adaptive triggers, touchpad and gyro are not exposed |
| Switch Pro and Joy-Con | often report an empty mapping, so confirm which plot reacts before reading a number from it |
| Steam Input and DS4Windows | present a virtual pad with their own curve already applied — close them first or you are testing the software |
| Sample rate | tied to requestAnimationFrame, so it follows your display refresh rate, not the controller's report rate |
| Account or install | none — no signup, no driver, no configuration software |
- Under 2 percent of travel is normal manufacturing tolerance on every controller ever made — that is not drift, and adding a deadzone for it only costs you precision.
- A reading of exactly 0.000 on all four axes usually means the pad is applying its own hardware deadzone, not that it is perfect; Xbox controllers do this.
- Measure twice, once cold and once after twenty minutes of play. Some sticks drift only once the plastic has warmed up.
- If both sticks drift by a similar amount in the same direction, suspect a calibration offset rather than two failed modules — recalibrating in the console or OS may clear it.
- Compressed air and isopropyl alcohol around the stick base fix a surprising share of drift caused by dust on the potentiometer contacts; try that before buying a replacement module.
- Record the peak figure and the controller id for a warranty claim. Vague reports get rejected; a measured percentage does not.
- Hall-effect replacement modules do not wear the way potentiometers do, which is why a repaired pad often measures better than it did new.
- A stick that drifts only in one direction and recovers when you tap the housing is usually a loose connector, not a worn sensor.
- Live XY plot per stick with a draggable 0–30% dead-zone ring
- Fixed five-second resting measurement, sampled every animation frame
- Peak, average and 95th-percentile deflection as percentages of full travel
- Verdict band and a suggested in-game deadzone
- Movement guard that rejects a run where the stick was held
- Per-controller notes for DualSense, DualShock, Xbox, Switch Pro and Steam Input
- Stick trail showing worn gates that a static reading misses
- Checking a second-hand controller for drift before paying for it.
- Turning a suspicion into a measured percentage for a warranty claim or an RMA.
- Finding the smallest deadzone that hides the drift, instead of replacing the pad.
- Verifying that a Hall-effect stick module you fitted actually measures better than the one it replaced.
- Deciding whether a controller is worth repairing or is past the point where a deadzone can hide it.
- Confirming that a cleaning with compressed air and alcohol actually moved the numbers.
Related tools
View allPart of Hardware testers that run in your browser
Works well with this5
More hardware testers10
More in Gaming10
Related categories3
Updated