Controller Calibration and Deadzone Test
Controller calibration, in the only sense a browser can do safely, means measuring the resting offset and choosing an inner deadzone that swallows it. This page applies that deadzone live, radial or axial, so you can see the value a game would keep. It does not write centers into the controller.
- Radial and axial inner deadzones
- Suggestion comes from the drift sample
- No firmware writes
{"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 deadzone and calibration. 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 deadzone test
- Sample drift first. Run the 3-second measure on the stick panel. The slider jumps to the suggestion.
- Pick a shape. Radial ignores a circle around center. Axial ignores each axis separately, which is what many games do.
- Watch the square marker. The dot is the raw stick. The square is the value after the deadzone. Inside the ring, the square sits at center.
- Copy the number into the game. Game sliders use percents or 0–1. 0.10 here is 10% of full tilt.
Start from a real sample, not from a number you saw in a video. A Healthy pad does not need a 0.20 deadzone. A Drift pad is not fixed by a 0.05 deadzone. The stick drift test is the measurement; this page is the setting.
Inner deadzone, outer deadzone, axial and radial
The inner deadzone is the hole in the middle. The outer deadzone, which some games call an anti-deadzone range, is how early the stick reaches “fully deflected.” This tester visualizes the inner zone, because that is the one that hides drift. Radial mode uses the distance from center. Axial mode uses X and Y on their own, so a stick can be inside the deadzone on X and outside it on Y.
Suggested deadzone from your drift sample
After a successful 3-second sample, the suggestion is 1.25 times the larger resting radius, never below 0.05 and never above 0.30. Below 0.05, most games already ignore the noise. Above 0.30, you have given up too much aim and a repair is the better plan. You can still drag the slider.
Hardware calibration vs an in-game deadzone
An in-game deadzone is reversible and local to that game. Hardware calibration rewrites the center the pad reports to every game. DualSense tools that do this use WebHID or a vendor utility and can make a pad worse if the stick was not actually centered when you wrote the value. PadTester does not send that write. Use the maker’s official tool if you truly need a hardware center, and keep a note of the previous behavior.
- Turn off Steam Input, DS4Windows-style remappers, and in-game deadzones while you measure.
- Measure again after you turn them back on. The second number is what the game will see.
- Do not install a “calibrator” from an ad. Official tools come from the company that made the pad.
Frequently asked questions
Does this page calibrate the controller permanently?
No. It only shows how an inner deadzone would treat the live axes. Nothing is written to the pad.
What is a normal deadzone?
For a Healthy sample, 0.05 to 0.08 is plenty on most games. Raise it only to clear the radius you measured.
Radial or axial?
Use the shape your game uses. If you do not know, radial is the clearer picture of “distance from center,” and axial matches a lot of PC titles that deadzone X and Y separately.