Dead zone test with your own stick

Open the sticks panel, drag the dead-zone slider, and watch what survives. The bright dot is what your controller reports; the pale dot is what is left after the threshold you chose. The tables underneath are the geometry behind it — how much travel each shape removes, and what a scaled response gives back.

No controller yet

Press any button on your controller

A connected pad stays invisible to this page until you use it. That is the specification working as designed, not a fault — see the note below the tool.

Device report

id
waiting for input
mapping
—
index
—
buttons
—
axes
—
vibrationActuator
—

Vibration

Left stick — axes [0] [1]

raw
0.000, 0.000
magnitude
0.000
after dead zone
0.000, 0.000

Right stick — axes [2] [3]

raw
0.000, 0.000
magnitude
0.000
after dead zone
0.000, 0.000

The bright dot is the raw report; the pale dot is what survives the dead zone you picked. The faint line is the last 180 samples.

Three shapes, and why the square one feels wrong

A dead zone is a region around the stick's centre whose inputs are forced to zero. There are three implementations in common use, and they behave differently enough that you can feel which one a game used.

The axial version zeroes each axis independently — if (|x| < d) x = 0, and the same for y. It is the version everyone writes first because it is one line per axis. It also carves a square hole out of a round stick, and that is where the trouble starts. The radial version zeroes the whole vector when its magnitude falls inside the radius, which keeps the region round but makes the output jump discontinuously from 0 to the radius at the boundary. The scaled radial version keeps the round region and rescales what is left, so the output starts at 0 exactly on the boundary and still reaches 1 at full deflection.

How much travel each shape actually removes

This is pure geometry and it produces a result that surprises people. A circular dead zone of radius d removes an area of πd² from a stick whose full travel covers an area of π, so the fraction lost is exactly d². A square dead zone of the same half-width covers (2d)² = 4d², so it removes 4d²/π. Divide one by the other and the d cancels: a square dead zone always removes 4/π ≈ 1.2732 times as much of your stick as a circular one of the same size, at every radius, with no exceptions.

Dead-zone geometry on the unit disc. Generated arithmetic — every cell is computed when this site is built and asserted individually in the test suite. No controller was involved in producing any of it.
Dead zone d Circular: travel removed Square: travel removed Square's diagonal reach Axis travel left
0.05 0.25% 0.32% 0.0707 0.95
0.08 0.64% 0.81% 0.1131 0.92
0.10 1.00% 1.27% 0.1414 0.90
0.15 2.25% 2.86% 0.2121 0.85
0.20 4.00% 5.09% 0.2828 0.80
0.25 6.25% 7.96% 0.3536 0.75
0.30 9.00% 11.46% 0.4243 0.70

The fourth column is the one that explains the complaint. A square dead zone's corners sit d√2 from the centre, so at d = 0.15 the square silently swallows diagonal pushes all the way out to 0.2121 — 41.4% further than it swallows straight-up pushes. Players describe this as the stick feeling "notchy" or "stuck to the axes", and they are describing a real, measurable asymmetry rather than a worn part. At that same radius the square costs 2.86% of the stick against the circle's 2.25%.

What a scaled dead zone gives back

The scaled radial curve maps an input magnitude r to (r − d) / (1 − d), clamped to zero below the boundary. Every value in the grid below comes out of that one expression.

Scaled-radial output for a given input magnitude, by dead-zone size. Generated, and asserted cell by cell.
You push to… d = 0.05d = 0.10d = 0.15d = 0.20d = 0.25
0.2 0.1580.1110.0590.0000.000
0.4 0.3680.3330.2940.2500.200
0.6 0.5790.5560.5290.5000.467
0.8 0.7890.7780.7650.7500.733
1.0 1.0001.0001.0001.0001.000

Two things fall out of the grid. Every column reaches exactly 1.000 on the bottom row, so a scaled dead zone costs you nothing at full deflection regardless of size — the common worry that "a big dead zone means I cannot turn fast" is simply not true of this shape. And the mid-range is compressed rather than clipped: at half deflection with d = 0.15 you get 0.412, not 0.5, because the surviving range has been stretched to cover the whole output span.

Two drags of the slider, and you have your number

Say your left stick rests at x = 0.02, y = −0.01 — a magnitude of about 0.022. Set the slider here to 0.00 and the pale dot sits slightly off centre and trembles. Raise it to 0.05 and the pale dot snaps to the middle and stays there. You have found a working dead zone in two moves, and you now know something more useful than any recommended value: yours needs about 0.05, and a game offering 0.10 as its floor is discarding travel you did not need to lose. Read the same stick with the stick drift test for a proper minute-long figure; this slider only gives you a glance.

Why this page has no "recommended" column

Every controller's resting offset is different, drifts over its lifetime, and interacts with whatever dead zone the driver already applied. A table of recommended values would be a table of numbers invented to look authoritative. The geometry above is the part that is the same for everyone; the part that is specific to you is upstairs in the live panel, where it belongs.

One caveat worth carrying into any test: what you see here is your stick after the browser has sampled it, and the browser samples on its own schedule — 4 ms in Chromium. Fast flicks near the dead-zone boundary can therefore look coarser here than they are in a game reading the device more directly. For dead-zone work that hardly matters, since you are looking at resting and slow-moving values. It matters more on the analog trigger test, where the interesting behaviour happens during a fast squeeze.

Questions people actually ask

What is a good dead zone value?

There is no single answer, and any page that gives you one is guessing on your behalf. The right value is the smallest one that keeps your own stick still, which is why this page pairs the slider with your live input instead of printing a recommendation. Measure your resting offset on the stick drift test, then set a dead zone slightly above it. A stick that rests at 0.03 wants a very different number from one that rests at 0.00.

Why does my stick feel dead on diagonals but fine on the axes?

That is the signature of an axial — square — dead zone. Zeroing each axis independently carves out a square region, and the corners of that square reach further from the centre than its edges do: exactly √2 times further. With a dead zone of 0.15 the diagonal blind spot extends to 0.212 of full deflection, so a genuine diagonal push of that size produces nothing at all while the same push straight up would register.

Does a dead zone lose me any range at the top?

With a plain radial dead zone, yes — the output jumps from 0 straight to the dead-zone radius at the boundary, and you never get the smooth start. A scaled radial dead zone fixes both problems by stretching the surviving range back over the full 0–1 span: output starts at 0 exactly on the boundary and still reaches 1 at full deflection. The response table on this page shows what each dead-zone size returns at each input magnitude.

Is the dead zone in the game or in the controller?

Often both, stacked. Controller firmware or the driver may apply one before any application sees the axis, and the game then applies its own on top. That stacking is why a stick can read a flat 0.000 in a browser test yet still feel loose in a game with a low dead-zone setting — you are looking at the value after the first dead zone and the game is looking at the same value after two.

Can I set a dead zone of zero?

You can, and this page lets you drag the slider to 0.00 to see what happens. On a healthy stick the result is a faint permanent tremor in the readout; on a worn one it is continuous movement. Zero is genuinely correct for input that gets integrated instead of applied directly — some fighting-game and rhythm setups prefer it — but for camera control it hands every scrap of noise straight to the view.

Keep testing

Test the rest of the desk