The FPS problem hiding behind a clean rest
Stick drift is famous because it happens while you are idle. Snapback happens at the worst possible moment: you flick to track, let go, and the camera keeps going the other way for a frame or two. In a plot of live position it looks like a tiny bounce. In Valorant or Apex it looks like you cannot stop on a head.
Hardware people talk about return springs, dashpots, and firmware that “adds” a snap to make the stick feel clicky. Software people talk about raw input versus a game’s own acceleration. A browser cannot see firmware, but it can see the Gamepad axes through a release. That is the measurement.
The detector, in plain language
Every sample is shifted by the rest you captured in the centre step. We wait until radius ≥ 0.7 (you actually went out), then radius ≤ 0.2 (you let go). For 250ms after that crossing we project the stick onto the opposite of the outbound direction. The maximum of that projection is overshoot. A return that settles at rest without crossing the far side scores near zero and is not flagged. A release that punches through to −0.28 on a rightward flick reports 28% overshoot and is flagged.
You need one event per stick to complete the step. Messy flicks can be repeated; we keep the events from the current capture window. Mark the stage incomplete if a broken spring will not return at all — that is also information.
What to do with a high number
Snapback is not scored, because a sloppy flick can fake a spike. If both sticks show large overshoot with slow, committed releases, the return path is the suspect: spring, tension disc, or firmware. A deadzone large enough to hide snapback will also hide fine aim, so it is a poor fix. Module replacement or a pad with a damped return is the usual hardware answer. Compare with drift and circularity before you buy anything — they fail independently.