Measure your reaction time in milliseconds across 5 rounds. Click when the screen turns green. Get median, best, and a rating. No sign-up needed.
Reaction time is the gap between a stimulus appearing on screen and your finger completing the click. This test measures it with performance.now() — the same sub-millisecond clock the browser uses to schedule animations — so the figure you see is constrained only by your display's refresh rate, not by a JavaScript timer. Five rounds are run per session; the median of those five is your score, because a single slow tap caused by a distraction should not define the result.
The green signal appears after a random delay of 2 to 6 seconds. That range is long enough that you cannot time it by feel, which is the property that separates a reaction test from an anticipation test. Every session generates a fresh random sequence, so successive sessions are not correlated.
The timer starts at the exact millisecond the green background is painted, using a setTimeout callback that calls performance.now() immediately before setting state. The stop time is recorded in the same onClick handler before any re-render. On a 60 Hz display the theoretical floor is about 16 ms (one frame), and on a 120 Hz display about 8 ms; results below that floor indicate the display refresh happened to align with the click, not superhuman reflexes.
Human simple reaction time typically falls between 150 ms and 300 ms. Scores below 150 ms are classified as Exceptional or Superhuman, which usually means anticipation rather than reaction. Scores above 400 ms are labelled Keep Practising — common on the first session, particularly on a touchscreen where finger-lift latency adds roughly 30 ms over a mouse click. The session best is preserved in sessionStorage so it survives a page reload within the same tab without sending anything off-device.
Wait for the green flash, then click or press Space. Five rounds are measured; the median is your score.