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 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.
| You push to… | d = 0.05 | d = 0.10 | d = 0.15 | d = 0.20 | d = 0.25 |
|---|---|---|---|---|---|
| 0.2 | 0.158 | 0.111 | 0.059 | 0.000 | 0.000 |
| 0.4 | 0.368 | 0.333 | 0.294 | 0.250 | 0.200 |
| 0.6 | 0.579 | 0.556 | 0.529 | 0.500 | 0.467 |
| 0.8 | 0.789 | 0.778 | 0.765 | 0.750 | 0.733 |
| 1.0 | 1.000 | 1.000 | 1.000 | 1.000 | 1.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.