Skip to content

Human performance · Reaction

Reaction Time Test

This reaction time test measures how quickly you respond to a visual signal, in milliseconds. It runs entirely in your browser: press start, wait for the signal to appear after a random delay, then respond as fast as you can.

A session takes well under a minute and consists of five valid attempts. At the end you get your average, your fastest attempt of the session, and a personal best stored on this browser.

  • 5 valid attempts
  • Under a minute
  • No permissions required

Session in progress

Valid attempts: 0 of 5
Latest
Session average
Session best
Personal best

Saved in this browser after your first valid attempt

False starts and cancelled attempts are excluded from every metric.

Your result

What your result means

Your reaction time is reported in milliseconds: Testpartout measures browser-observed response time, from its frame-aligned start reference — the moment the test commits the signal state for the next frame — to the moment your input event arrives. Lower is faster.

A single attempt says very little. Attention drifts, you blink, you anticipate — that is why Testpartout asks for five valid attempts and reports the average as the headline number. The session best shows the peak you reached, not what you can repeat.

  • The average of your five valid attempts is the most useful figure. Treat the best attempt as your ceiling, not your typical performance.
  • Comparisons are only meaningful against yourself, on the same device, browser and input method. Switching from a wired mouse to a touchscreen changes the number even if your reflexes are identical.
  • The measurement includes your response plus display latency, input-device latency, browser scheduling and whatever else your system is doing. A busy machine reads slower.
  • Testpartout does not show a percentile or a global average, because no real aggregated data exists yet. When it does, it will be based on measured results — never on estimates.

Procedure

How the test works

  1. 01

    Start an attempt

    Tap or click the test area, or press Space or Enter while it is focused. The area switches to its waiting state.

  2. 02

    Wait for the random delay

    Each attempt waits between 1.5 and 4.5 seconds. The interval is regenerated every time, so the signal cannot be anticipated or rhythm-timed.

  3. 03

    React to the signal

    The area changes and reads TAP NOW. Respond with a tap, a click or the Space key — whichever you prefer, as long as you keep it consistent.

  4. 04

    Read the attempt

    The elapsed time is shown immediately in milliseconds, along with which attempt you are on. You start the next attempt yourself.

  5. 05

    Repeat five times

    The session needs five valid attempts. False starts and attempts cancelled by leaving the tab do not count and are simply repeated.

  6. 06

    Get your session result

    Testpartout reports the average of the five valid attempts, the fastest of them, and your personal best on this browser.

Methodology

How Testpartout measures this

The method below is exactly what the code on this page does — nothing is described that is not implemented.

What the implementation does

  • A session is five valid attempts. Nothing is reported until at least one valid attempt exists.
  • Each attempt uses a freshly randomised waiting interval between 1500 ms and 4500 ms.
  • Timing uses the high-resolution monotonic clock, performance.now(), not the wall clock, so clock adjustments cannot distort a measurement.
  • When the waiting interval elapses, a single animation frame is scheduled. Inside that same frame the signal state is committed to the DOM synchronously and the start timestamp is read immediately afterwards, so the visual transition and the start of timing are frame-aligned rather than tied to the moment the delay timer fired.
  • On input, the timestamp is captured before any state update, storage write or re-render. Pointer input (mouse, touch, pen) is measured on pointerdown and keyboard input on keydown for Space or Enter with key repeats ignored — never on click, pointerup or keyup.
  • A response arriving before the signal is a false start: no value is recorded, the attempt counter does not advance, and you repeat that attempt.
  • If the tab becomes hidden or the window loses focus during an attempt, that attempt is cancelled rather than recorded, because frame timing outside the foreground is not trustworthy. You then start the next attempt yourself; an interrupted attempt is never silently resumed.
  • The reported average is the arithmetic mean of the valid attempts; the session best is their minimum. Values are stored at full precision and displayed as whole milliseconds.
  • Your personal best is kept in this browser's local storage only, and only when a valid attempt is faster than the stored value.

Limits of a browser measurement

  • This is browser-observed response time. Timing is frame-aligned browser timing using performance.now(); the absolute number also contains display latency, input-device latency, browser scheduling and system load, and Testpartout cannot isolate those from your own response.
  • Display refresh rate quantises the signal: on a 60 Hz screen the signal can only appear on a ~16.7 ms boundary, which adds variance no software can remove.
  • Wireless and Bluetooth peripherals typically add latency compared with wired ones, and it is not constant.
  • Power-saving modes, background tabs, downloads and heavy pages all shift results, usually upwards.
  • This is a browser-based reaction measurement, not a laboratory or clinical instrument. It is useful for comparing your own sessions under similar conditions.

Privacy

What happens to your data

This section describes the behaviour of the code on this page, not an intention.

  • The measurement happens entirely in your browser. No result is sent to a server in this version of the test.
  • The five attempts of a session live in page memory and disappear when you leave or reload the page.
  • Only your personal best is stored locally, in this browser: the best time in whole milliseconds, the input method used, and the moment it was achieved.
  • No account, no sign-in and no email are required or offered here.
  • The test requests no microphone, camera, location or device permission of any kind.
  • No identifier, fingerprint or hardware profile is created or stored. Clearing your browser storage removes the personal best and nothing else.

Troubleshooting

If the test does not behave as expected

The test does not respond

Click or tap directly inside the test area first — for keyboard use it must be focused, which you can do with Tab. Space and Enter work only while it is focused. If the page has become unresponsive after a long session, reload it; nothing but the personal best is lost.

Space scrolls the page instead

That happens when the test area is not focused, so the key reaches the page instead. Tab to the area (or click it once) and the Space key is captured by the test.

Results look unusually slow

Close heavy tabs and downloads, leave power-saving or battery-saver mode, and prefer a wired mouse or keyboard over a Bluetooth one. A single slow attempt is normal; five consistently slow ones usually point at system load or peripheral latency.

Results vary a lot between attempts

Some variation is inherent: human reaction time fluctuates from attempt to attempt, and display refresh and browser scheduling add their own spread. That is precisely why the headline metric is the average of five attempts.

I keep getting “Too soon”

You responded before the signal appeared. Because the delay is re-randomised every attempt, guessing the rhythm does not work. Wait until the area actually changes and reads TAP NOW.

My attempt was cancelled

Switching tab or window during an active attempt cancels it, so a distorted time is never recorded. Nothing is counted against you — keep this tab in the foreground and repeat the attempt.

Factors

Common factors that affect reaction-time results

These do not indicate a fault. They are the reasons two honest measurements of the same person can differ.

Display refresh and latency

A higher refresh rate shows the signal sooner and more precisely. Panel processing, overdrive and TV picture modes can add several milliseconds on top.

Input method

Mouse, touchscreen, stylus and keyboard have different debounce and polling behaviour. Keep the same one within a session and between sessions you want to compare.

Wireless peripherals

Bluetooth mice and keyboards usually add latency compared with wired or low-latency wireless receivers, and it varies with interference and battery level.

System and browser load

Background CPU work, many open tabs, video calls and updates delay the frame the signal is drawn in and the delivery of your input event.

Attention and fatigue

Fatigue, attention, input devices, display latency and browser or device conditions can all affect the result, and a browser cannot separate their contributions.

Changing device between sessions

A laptop trackpad, a phone screen and a desktop with a gaming mouse are three different measurement setups. Compare like with like.

FAQ

Frequently asked questions

What does a reaction time test measure?
It measures browser-observed response time in milliseconds: from the point where the test commits the visual signal for the next frame to the moment your input event arrives. That interval includes your own response plus display latency, input-device latency and browser scheduling, so it describes a whole chain rather than isolating your nervous system.
Why does my reaction time change between attempts?
Human reaction time naturally fluctuates with attention, fatigue and anticipation, and the browser adds its own variance through frame timing and scheduling. This is why Testpartout asks for five valid attempts and reports the average rather than judging a single try.
Does monitor refresh rate affect the result?
Yes. The signal can only become visible when a frame is drawn, so a 60 Hz display quantises it to roughly 16.7 ms steps, while a 144 Hz display quantises to about 7 ms. Higher refresh rates therefore tend to produce slightly lower and more consistent numbers.
Is a mouse faster than touch or keyboard?
They behave differently rather than one being universally faster: polling rates, debounce handling and how you hold the device all contribute. Testpartout records which input method your personal best was achieved with, so you can compare sessions that actually used the same setup.
Why did I get “Too soon”?
You responded during the waiting interval, before the signal appeared. That attempt is discarded rather than recorded as an impossibly fast time, it does not count towards the five valid attempts, and it cannot affect your average, session best or personal best.
Does Testpartout upload my reaction time?
No. The whole measurement runs in your browser and no result leaves the page. The attempts of a session exist only in memory, and just your personal best is saved in this browser's local storage.
Why don't I see a percentile or a global ranking?
Because we do not have real aggregated data yet, and we will not invent it. Showing a made-up distribution or a plausible-looking “faster than X%” badge would be worthless. Percentiles will appear only once they are computed from genuine measured results.