Stick Drift Test
This stick drift test measures how far each stick sits from center when you are not touching it. Run the 3-second sample, read Healthy, Borderline, or Drift, and take the suggested deadzone to the calibration page if you are not ready to replace the module.
- Samples both sticks for 3 quiet seconds
- Verdict plus a suggested inner deadzone
- Works for any pad the browser can see
{"waiting":"Press any button on the controller. Browsers hide gamepads until you press a button on this tab.","noApi":"This browser does not expose the Gamepad API, so the live tester cannot read inputs. The written checks on this page still apply.","insecure":"This page is not a secure context, so the browser will not share gamepads. Open the site over HTTPS.","privacy":"Inputs stay in this browser. Nothing is uploaded.","checkAgain":"Check again","layout":"Button labels","layoutAuto":"Match the connected pad","layoutPs":"PlayStation","layoutXbox":"Xbox","layoutNintendo":"Nintendo","layoutGeneric":"Numbers","player":"Controller","buttons":"Buttons","face":"Face","dpad":"D-pad","shoulders":"Shoulders and triggers","center":"Center and sticks clicks","extra":"Other buttons","sticks":"Sticks","leftStick":"Left stick","rightStick":"Right stick","up":"Up","down":"Down","left":"Left","right":"Right","stickHint":"Up on the plot is up on the stick. The numbers keep the browser’s sign: positive Y is usually down.","offset":"Offset","deadzone":"Inner deadzone","radial":"Radial","axial":"Axial","shape":"Deadzone shape","afterDeadzone":"After deadzone","inside":"Inside deadzone","measureDrift":"Measure drift (3s)","release":"Release both sticks and hold them still.","measuring":"Measuring resting offset…","trace":"Trace circularity","tracing":"Push the stick around the outer gate.","stopTrace":"Stop trace","vibration":"Vibration","strong":"Strong motor","weak":"Weak motor","duration":"Duration","play":"Play vibration","pulse":"Pulse three times","triggerRumble":"Try trigger rumble","rumbleMissing":"This browser did not offer a vibration actuator for the selected controller. Chrome and Edge usually do; Firefox and Safari often do not.","rumbleSent":"Vibration command sent.","rumbleFailed":"The browser rejected the vibration command.","triggerUnsupported":"Trigger rumble is not available on this actuator. Dual rumble still ran if the browser accepted it.","rate":"Browser-observed rate","sampleAge":"Sample age","moveStick":"Move a stick to measure the update rate.","rateNote":"This is how often the browser hands us a new sample. It is not the controller’s USB poll rate.","ageNote":"How old the newest sample is when the page draws it. This is not display lag and not in-game lag.","ageUnavailable":"This browser’s gamepad timestamp cannot be compared with the page clock.","gyro":"Motion","requestHid":"Request DualSense access","hidIntro":"Gyro, accelerometer, touch position, and battery are not part of the standard Gamepad reading. Chrome and Edge on desktop can request a DualSense or DualShock 4 over WebHID.","hidMissing":"WebHID is not available here. Use Chrome or Edge on a desktop computer, connect the pad by USB, and try again. Buttons and sticks above still work through the Gamepad API.","hidEmpty":"No device was selected.","hidOk":"The browser allowed access to {name}. This version confirms the device and does not stream gyro values yet, so it cannot show a wrong motion number. Buttons and sticks above stay on the Gamepad API.","hidDenied":"The browser blocked or cancelled device access. Gamepad readings are unaffected.","raw":"Raw data","rawEmpty":"Raw values appear here after a controller connects.","checkup":"Full checkup","startCheckup":"Start full checkup","resetMarks":"Reset marks","stepButtons":"Buttons","stepSticks":"Sticks","stepTriggers":"Triggers","stepRumble":"Rumble","stepDone":"Review","checkupIdle":"A short pass over buttons, both sticks, both triggers, and vibration.","checkupButtons":"Press every face button, the D-pad, bumpers, menu buttons, and both stick clicks.","checkupSticks":"Rotate each stick out to the gate.","checkupTriggers":"Pull both triggers fully.","checkupRumble":"Play vibration, then say whether you felt it.","feltYes":"I felt it","feltNo":"I felt nothing","checkupSkipRumble":"This pad has no vibration actuator in this browser, so that step is skipped.","announcePress":"{label} pressed","modelLink":"This looks like {name}.","openModel":"Open the model page","presetNote":"Labels are locked to this page’s layout. Change “Button labels” if they do not match the pad in your hands.","mappingStandard":"standard mapping","mappingOther":"non-standard mapping","healthy":"Healthy","borderline":"Borderline","drift":"Drift","couldNotMeasure":"Could not get a still sample. Rest the controller on a table and try again.","suggested":"Suggested inner deadzone","coverageLow":"Keep tracing the outer edge. Too few sectors were filled to score the gate.","noPadSelected":"No controller is selected.","slotsLabel":"Connected controllers","noneConnected":"None connected yet","focusDrift":"This page focuses on stick drift. Every other check is still here.","focusDeadzone":"This page focuses on deadzone and calibration. Every other check is still here.","focusVibration":"This page focuses on vibration. Every other check is still here.","focusPolling":"This page focuses on the browser-observed update rate. Every other check is still here.","focusLatency":"This page focuses on sample age and input timing. Every other check is still here.","focusGyro":"This page focuses on motion. Buttons and sticks still use the Gamepad API.","focusButtons":"This page focuses on buttons. Sticks, triggers, and vibration are still here.","names":{"edge":"DualSense Edge","dualsense":"DualSense","ds4":"DualShock 4","joycon":"Joy-Con","switchpro":"Switch Pro Controller","bitdo":"8BitDo pad","deck":"Steam Deck or Steam Input device","series":"Xbox Series controller","xone":"Xbox One controller","xbox":"Xbox controller","nintendo":"Nintendo controller","generic":"generic PC gamepad"}}This page focuses on stick drift. Every other check is still here.
Inputs stay in this browser. Nothing is uploaded.
Press any button on the controller. Browsers hide gamepads until you press a button on this tab.
This is how often the browser hands us a new sample. It is not the controller’s USB poll rate. How old the newest sample is when the page draws it. This is not display lag and not in-game lag.
Buttons
Face
D-pad
Shoulders and triggers
Center and sticks clicks
Sticks
Up on the plot is up on the stick. The numbers keep the browser’s sign: positive Y is usually down.
Vibration
Motion
Gyro, accelerometer, touch position, and battery are not part of the standard Gamepad reading. Chrome and Edge on desktop can request a DualSense or DualShock 4 over WebHID.
Full checkup
- Buttons
- Sticks
- Triggers
- Rumble
- Review
A short pass over buttons, both sticks, both triggers, and vibration.
Raw data
Raw values appear here after a controller connects.
How to run the drift test
- Rest the pad. Put the controller on a table. Take your thumbs off both sticks.
- Press Measure drift. The tester collects about 3 seconds of samples whose radius stays under 0.45.
- Read both sticks. Left and right are scored separately. The worse radius sets the verdict.
- Decide. Under 0.06, leave it. Between 0.06 and 0.12, raise the deadzone. Over 0.12, plan a repair or a larger deadzone.
Close Steam Input’s extra deadzone, or any remapper, before you sample. Otherwise you measure the software layer. USB is the cleaner connection for a number you will compare later. The live offset is not the verdict: a thumb on the stick is supposed to move the dot.
What is stick drift?
The stick’s sensor should report zero at rest. Potentiometer sticks wear, collect debris, or lose their center, so they report a small vector forever. Games turn that vector into camera movement or walking. Hall-effect sticks avoid most of this wear. The browser cannot see which sensor you have; it can see the offset.
Joy-Con drift is the famous case. DualSense, DualShock 4, and the standard Xbox sticks are potentiometers too, and they drift for the same physical reason. Model notes are on each controller page.
Reading your results
| Max resting radius | Verdict | What it feels like |
|---|---|---|
| Under 0.06 | Healthy | Invisible in almost every game. |
| 0.06–0.12 | Borderline | Shows up in games with a tiny deadzone. |
| Over 0.12 | Drift | You will see it. Deadzone or repair. |
The suggested inner deadzone is about 1.25 times the worse radius, clamped between 0.05 and 0.30. It is a starting point for the game’s slider, not a command to the hardware. Repeat the sample if the line says the stick never sat still.
Drift vs deadzone
A deadzone hides drift. It also hides your first millimeters of aim. If the sample is Healthy, a large deadzone only makes the stick feel late. If the sample is Drift, a deadzone slightly above the radius is the honest software fix while you decide on a repair. Set that shape on the deadzone test.
How to fix stick drift
- Repeat the sample on USB with remappers off, so you know the offset is in the pad.
- Set the in-game deadzone just above the measured radius.
- If the pad is under warranty, use the maker’s repair path. Nintendo, Sony, and Microsoft have all handled stick issues differently over time, so check the current policy for your region.
- On a DualSense Edge, swap the stick module. That is the supported fix. The standard DualSense module is soldered or clipped depending on the repair guide you trust; a shop can do it.
- Skip “blow into the stick.” Moisture makes potentiometers worse. Skip random calibration downloads.
The longer repair choices are in How do you fix stick drift?. Per-model notes live on the library pages linked below.
Drift test by controller
The same sample works on every pad. The cause and the repair differ. Open the model you have, then come back here and run the sample.
Frequently asked questions
What resting radius counts as stick drift?
On this tester, over 0.12 is Drift, 0.06 to 0.12 is Borderline, and under 0.06 is Healthy. These are practical bands for the Gamepad API range, not a factory spec.
Should I hold the stick during the test?
No. Rest the controller and leave both sticks alone. If the radius jumps because you are touching it, the sample waits or asks you to try again.
Can a deadzone permanently fix drift?
It hides the offset in software. The sensor is unchanged, and a large deadzone costs fine aim. Replace the module when the radius keeps climbing.