Skip to main content

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.

Free & unlimitedWorks offline

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 positions are read from the Gamepad API in this tab and drawn to the page. Nothing is uploaded and nothing is stored.

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

Key facts about Stick drift test
API usednavigator.getGamepads(), read inside requestAnimationFrame
Sticks readaxes 0 and 1 as the left stick, axes 2 and 3 as the right, per the W3C standard mapping
Measurement windowfive seconds, fixed — roughly 300 samples at 60 Hz and 720 at 144 Hz
Reported per stickpeak, average and 95th-percentile deflection, as a percentage of full travel
Deflection formulathe Euclidean distance of the stick from perfect centre, clamped to 100%
Verdict bandsunder 2% none, under 8% minor, 8% and above significant
Suggested deadzonethe peak reading rounded up plus two points, capped at 30%
Dead-zone overlaya draggable 0–30% ring drawn on the plot, so you can see what a game would throw away
Movement guarda stick that passes 50% of travel during the window is reported as held, not drifting
Disconnect guarda pad that vanishes mid-measurement cancels the run instead of reporting a short sample
Per-controller notesDualSense, DualShock 4, Xbox/XInput, Switch Pro and Joy-Con, Steam Input, and unrecognised pads
Stick trailthe 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. 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. 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. 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. 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. 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. 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. 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. 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.

Specs & compatibility
Browser supportChrome, Edge, Firefox, Opera and Safari 10.1+ implement the Gamepad API
Secure contextthe API requires HTTPS, which this page is served over
Xbox and XInput padsstandard mapping on Windows, macOS and Linux; the pad applies a small hardware deadzone before the browser sees anything
DualShock 4 and DualSensestandard mapping over both USB and Bluetooth; adaptive triggers, touchpad and gyro are not exposed
Switch Pro and Joy-Conoften report an empty mapping, so confirm which plot reacts before reading a number from it
Steam Input and DS4Windowspresent a virtual pad with their own curve already applied — close them first or you are testing the software
Sample ratetied to requestAnimationFrame, so it follows your display refresh rate, not the controller's report rate
Account or installnone — 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.
The page reports resting deflection as a percentage of full stick travel. Below 2 percent is inside normal manufacturing tolerance on every controller: leave it alone. Between 2 and 8 percent is minor — you will notice it in menus and in slow aiming, and a small deadzone hides it completely. At 8 percent and above the drift will move your character or your camera on its own in any game with a tight default deadzone, and at that point you are choosing between a large deadzone, which costs precision near centre, and replacing the stick module.
Browsers deliberately hide connected gamepads from a web page until a button is pressed on one, so that a page cannot silently enumerate your hardware for fingerprinting. Press any face button while this tab has focus and the pad appears immediately. If it still does not, check that it is paired to this computer rather than to a console, try the wired connection, make sure no other application has claimed it exclusively, and on Safari confirm that the pad is one of the models it recognises.
Because one frame is not evidence. A stick can read 0.00 on one frame and 0.06 on the next, depending on where the wiper happens to sit and how the analogue-to-digital conversion rounds it. Sampling every animation frame for a fixed window turns that into a distribution: the average tells you where the stick rests, the peak tells you the worst case, and the 95th percentile tells you what it does almost all the time. A high peak with a low average is an intermittent jump, which needs a different fix from a stick that sits permanently off centre.
It measures what the browser is given, which is already past any deadzone applied in the controller's firmware or by the operating system, but before any deadzone a game applies. So it sees more than a game does and less than an oscilloscope on the potentiometer would. In practice that is the useful layer: if this page shows measurable drift, every game will see it too unless its own deadzone is larger. If this page shows a flat zero on all four axes, the pad is probably applying a hardware deadzone of its own, which is common on Xbox controllers.
No — the browser is reporting an empty mapping for it rather than the standard one. When mapping is standard, axes 0 and 1 are the left stick and 2 and 3 are the right, and the drawing is correct. When it is empty, the browser passes through whatever axis order the device reports, and that order varies by pad and by operating system. Move each stick once and see which plot moves; the measurement is still completely valid, you just have to know which plot belongs to which stick.
Sometimes, and it is worth trying first because it is free. A calibration routine tells the controller or the operating system where centre is, so it can correct an offset — which is exactly the fault when both sticks sit off centre in the same direction, or when a stick has been knocked. It cannot fix a worn potentiometer track, which is what causes most drift on well-used pads: there the resting position moves around rather than sitting at a consistent offset, and you will see that here as a high peak with a jumpy trail. Clean the stick base with compressed air and isopropyl alcohol before concluding the module needs replacing.
View all

Part of Hardware testers that run in your browser

Updated

We use anonymous analytics to improve ToolChamp. No personal data is stored or sold. Privacy Policy