About

Justin Hill built ReactionTestTimer to provide a fast, accurate, and accessible way to measure reaction time. Every benchmark on this site is backed by published research.

Our Methodology

Reaction time is easy to measure badly and hard to measure well. Browsers introduce timing noise from rendering, garbage collection, and input processing, so we take extra steps to keep our numbers accurate.

High-Precision Timing

We use performance.now() instead of Date.now(). It reports time in fractions of a millisecond and isn't affected by the system clock changing, which makes it a much more reliable stopwatch for short intervals.

Syncing With the Screen

We start the timer inside a requestAnimationFrame callback, which fires right before the browser paints the next frame. This lines up our timestamp with the moment the stimulus actually appears on screen, instead of the moment our code merely decided to show it.

Why This Matters

Without these steps, a reaction time test can be off by tens of milliseconds -- enough to make a fast reaction look average, or an average one look impressive. We built this site so the number you see is one you can trust.

Explore the Tests