Reaction Time Test
{{ summaryTitle }}
{{ summaryLine }}
| Measure | Included | All correct | Copy |
|---|---|---|---|
| {{ row[0] }} | {{ number(row[1]) }} | {{ number(row[2]) }} |
| Attempt | Cue / response | Time (ms) | Outcome / inclusion | Copy |
|---|---|---|---|---|
| {{ row.trial }} | {{ row.onset_ms === null ? '—' : row.cue }} / {{ row.response === null ? '—' : row.response }} | {{ number(row.rt_ms) }} | {{ row.outcome.replace('_', ' ') }} {{ row.reason }} |
No response intervals to plot.
Loading response timeline.
| Attempt | Onset callback (ms) | Frame stamp (ms) | Raw event stamp (ms) | Relative event (ms) | Handler clock (ms) | Last frame gap (ms) | Input / clock | Copy |
|---|---|---|---|---|---|---|---|---|
| {{ row.trial }} | {{ number(row.onset_ms) }} | {{ number(row.raf_ms) }} | {{ number(row.event_raw_ms) }} | {{ number(row.event_ms) }} | {{ number(row.handler_ms) }} | {{ number(row.frame_ms) }} | {{ row.input }} / {{ row.clock }} |
| Started (UTC) | Median (ms) | Test | Input methods | Attempts | Included | Mean (ms) | SD (ms) | Best (ms) | False starts | Anticipations | Wrong | Timeouts | Interrupted | Timing errors | Extra cutoffs (ms) | Response window (ms) | Copy |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ number(row.included.median_ms) }} | {{ row.mode === 'simple' ? 'Simple' : 'Choice ' + row.choices }} | {{ row.input_methods.map((method) => method === 'key' ? 'keyboard' : method).join(' / ') || 'none' }} | {{ row.attempts }} | {{ row.included.count }} | {{ number(row.included.mean_ms) }} | {{ number(row.included.sd_ms) }} | {{ number(row.included.best_ms) }} | {{ row.counts.false_start }} | {{ row.counts.anticipation }} | {{ row.counts.wrong }} | {{ row.counts.timeout }} | {{ row.counts.interrupted }} | {{ row.counts.timing_error }} | {{ row.min_ms + ' / ' + row.max_ms }} | {{ row.window_ms }} |
Observed frame cadence: {{ ms(values.cadence.frame_ms) }} ({{ number(values.cadence.observed_hz) }} callbacks/s), median of {{ frames.length }} frame intervals. This cannot reveal input-device or display latency.
Similar tools
- Aim Trainer Practise pointer aim with repeatable target sequences and compare your speed and hit accuracy across sessions saved in your browser.
- CPS Test Measure clicks per second in a timed browser trial, compare pace and consistency, and filter near-duplicate presses when checking switch bounce.
- Number Memory Test Practise recalling digits in forward or reverse order and see your longest exact span, with saved sessions for comparing your own results.
- Gamepad Test Test your gamepad for stick drift, missed buttons and trigger range, with suggested deadzones and a local report of the recorded evidence.
Pressing a button after a light appears combines detecting the signal with making a movement. Visual reaction time is the interval between a visual stimulus and the required motor response, usually expressed in milliseconds. One second contains 1,000 milliseconds. The number describes performance on a particular task, so the cue and the response matter when comparing results.
- Simple reaction time
- One known signal calls for one known response. The main uncertainty is when the signal will appear.
- Choice reaction time
- Different signals call for different responses. The person must identify the signal and select the matching response, so a choice task asks more than simply detecting that something appeared. The number of possible responses changes the selection demand and must stay the same for a useful comparison.
Waiting helps separate reacting from guessing. The foreperiod is the pause before the stimulus. Varying that pause makes a rehearsed countdown less useful, although it cannot eliminate anticipation. A press before the signal is a false start and cannot measure a reaction to that signal. An unusually early press just after it may also be anticipatory, which is why reaction-time results need an explicit rule for excluding early responses.
Even with identical cues, attention can fluctuate, fatigue can affect performance and practice can make the response more familiar. Repeated attempts reveal variation that a single fast press hides. Trying to reduce the time can also bring more guesses or wrong responses, so speed needs to be considered alongside errors.
The median describes the middle of the ordered response times, while the mean averages every retained time. A particularly slow response can pull the mean upward much more than the median. The best time describes only the fastest retained attempt. Spread, the difference between the slowest and fastest times, helps show how widely a session varied. A slow response alone does not reveal whether attention, movement or the timing setup caused the delay.
Computer timing includes delays around the human response. A display must refresh and process an image before the cue becomes visible. After a press, the input device must detect and report it; sampling and polling determine when those checks or reports occur. Browser scheduling adds further timing uncertainty. Changing a screen, keyboard, mouse or touchscreen can therefore change the recorded number even when the person's response has not changed.
For practice and informal comparisons, repeated sessions on the same device, display, browser and response method are more useful than comparing isolated scores from different setups. Keeping the task and conditions consistent reduces avoidable differences, but does not calibrate the hardware. A browser result is an observed interval for that setup, not an absolute measure of human reaction speed or a clinical assessment.
How to Use This Tool:
A fresh setup uses Simple mode with 10 attempted trials. Keep one response method throughout the session and keep the test window in focus.
- Choose Simple for one response tile, or Choice for 2 to 4 targets. In Choice, the physical keys run left to right as F / J for two targets, D / F / J for three, and D / F / J / K for four. Rest one finger on each mapped key, or use the targets directly with a pointer.
- Set a different session length only if needed. In Advanced, a blank Attempted trials override uses 10; a whole number from 1 to 30 replaces it. Leave both optional cutoffs at 0 for a session without optional filtering. Extra response time adds 0 to 5,000 ms to the default 5,000 ms response window.
If Check settings appears, clear the trial override and reset both optional cutoffs and Extra response time to 0 to restore valid defaults.
- Select Start. After Checking frames, the stage shows Wait. A cue is scheduled after a random wait of 1 to 3 seconds. Respond only when GO appears. In Simple, press the tile with a mouse, touch or pen, or press Space or Enter. In Choice, press the key below the lit target or press that target directly. A focused Choice target also accepts Space or Enter.
- Choose Next trial after feedback, or release the previous key and make a fresh Space or Enter press. Held keys do not add responses. Each recorded response, error or interrupted attempt uses one trial slot.
If the session becomes Paused, return focus to the test and choose Continue for a fresh attempt. An interruption on the final attempt finishes the session. Stop ends the session with the attempts already recorded; an attempt in progress is kept as interrupted.
- Read Session result when the stage shows Finished. Check both the median and how many responses were included out of the recorded attempts before comparing another session.
Interpreting Results:
The main result is the median of the included responses. Ten attempted trials do not guarantee ten usable times. A lower median accompanied by more wrong responses, anticipations or exclusions needs a closer look before it suggests better performance.
- Session statistics compares Included with All correct. Included applies the optional cutoffs. All correct ignores those cutoffs, but still excludes false starts, anticipations, wrong responses, timeouts, interruptions and timing errors. Error-count rows describe the whole session in both columns.
- Trial times retains every attempt and its reason. If the summary says No included times, it means no response qualified, not that the reaction time was zero. Check the reasons. If optional cutoffs excluded otherwise correct responses, setting both cutoffs to 0 restores those responses to the summary; otherwise, begin another session and address the recorded errors.
- Response timeline shows recorded intervals in attempt order and distinguishes included from excluded times. A false start, interruption or timeout without a recorded response has no interval to plot. Check the trial table for the complete attempt count.
Timing trace provides browser timestamps for the cue, frames and response, including when the response was processed. Raw and relative response timestamps can have different clock origins, so their numerical difference is not a device-latency measurement. The trace helps inspect the timing evidence, but cannot establish the physical display or input-device delay.
In Session comparison, compare runs with the same mode, target count, input method, attempt count, cutoffs and response window. Treat a session that mixes keyboard and pointer input separately. Keep your own note of the device and browser, because the saved summaries identify input methods rather than the hardware model. Repeated comparable runs provide more context than selecting only the fastest run.
Technical Details:
A recorded response interval needs a defined starting point and endpoint. Here, the starting timestamp is taken immediately before the browser changes the cue during a scheduled frame. It is a proxy for visual onset: it does not detect the moment light actually reaches the eyes. The endpoint is the browser timestamp for the beginning of a fresh key press or primary pointer press, rather than its release.
Formula Core
The recorded interval is the response timestamp minus the cue timestamp, with both expressed in milliseconds on the same relative clock. The random wait precedes the cue timestamp and is not part of this interval. Each attempt selects a delay uniformly from 1,000 ms up to, but not including, 3,000 ms. The cue changes on the first scheduled frame at or after that delay, so the visible wait can be slightly longer.
Here, r is the recorded interval. The two timestamps mark the browser's cue change and response event, so display and input latency remain in the result. The separately recorded time at which the response was processed is not substituted for the response timestamp. Incompatible timing evidence produces a timing error instead of an estimated interval.
Which attempts qualify
Interruptions and timing failures are excluded first. For a recorded response, early timing is checked before target correctness. The response window, W, is the default 5,000 ms plus any added response time, e, from 0 to 5,000 ms.
This gives a window from 5,000 to 10,000 ms. The following rules determine the outcome before optional cutoffs are considered.
| Condition | Outcome | Time summaries |
|---|---|---|
| Response timestamp cannot be used reliably | Timing error | Excluded |
| Hidden tab, lost window focus, Stop during an attempt, or excessive frame gap | Interrupted | Excluded |
| No response before the attempt times out | Timeout | Excluded |
| Response before the cue is recorded | False start | Excluded |
| Recorded interval from 0 ms to below 100 ms, regardless of target | Anticipation | Excluded |
| Recorded interval greater than W | Timeout | Excluded |
| Recorded interval from 100 ms through W, wrong target | Wrong response | Excluded |
| Recorded interval from 100 ms through W, matching target | Correct | Eligible; optional cutoffs decide inclusion |
Exactly 100 ms passes the anticipation rule, and a captured response exactly at the response-window boundary passes the deadline rule. The fixed under-100-ms exclusion follows a convention used in visual psychomotor vigilance research. It is not a physiological minimum, and using it does not make this short session equivalent to the research protocol.
Optional lower and upper cutoffs each accept 0 to 10,000 ms. Zero disables that extra boundary. An enabled lower cutoff keeps times equal to or above it; an enabled upper cutoff keeps times equal to or below it. The lower cutoff cannot exceed an enabled upper cutoff. These rules apply only to correct responses and cannot restore an anticipation or another error. There is no additional automatic trimming of slow correct responses within the response window.
Every recorded attempt remains available with its outcome, even when excluded. If focus is lost during the initial frame check, before an attempt has begun, the check pauses without adding an attempt. Resuming after an interrupted attempt starts a new random wait rather than reusing the old cue.
How session statistics are calculated
Let n be the number of qualifying times and xi each time in milliseconds. The same calculations are performed separately for the Included and All correct sets. The mean adds those times and divides by their count.
For the median, sort the times from smallest to largest. With an odd count, take the middle time. With an even count, average the two middle times. In the equation below, yj means the time at position j in that sorted list.
The best time is the minimum and the slowest is the maximum. Their difference gives the spread, also in milliseconds.
Population standard deviation, σ, describes variation around the mean and is also expressed in milliseconds. It uses the mean squared deviation across this set, dividing by n, rather than the sample-estimation divisor n − 1.
The variance, v, is this mean squared deviation, measured in squared milliseconds.
These calculations require at least one qualifying time. With just one, the mean, median, best and slowest coincide, while spread and standard deviation are zero. That zero does not demonstrate consistency across repeated responses.
Classification and arithmetic use the recorded values before display rounding. The main median is displayed to one decimal place; tables show whole numbers without a decimal and other values to one decimal place. For example, 99.999 ms can display as 100.0 while remaining an anticipation. Decimal places do not establish timing accuracy, and browsers may reduce timestamp precision for privacy or security.
Worked example: one slow response
An illustrative seven-attempt Choice session contains four correct times of 240, 260, 280 and 1,200 ms, plus a false start, a wrong response at 360 ms and an anticipation at 0 ms. Only the four correct times enter either timing summary when optional cutoffs are off. Their sum is 1,980 ms, so the mean is 495 ms; the middle pair, 260 and 280 ms, gives a median of 270 ms.
| Included statistic | No optional cutoff | Upper cutoff 300 ms |
|---|---|---|
| Responses | 4 | 3 |
| Mean | 495 ms | 260 ms |
| Median | 270 ms | 260 ms |
| Best | 240 ms | 240 ms |
| Slowest | 1,200 ms | 280 ms |
| Spread | 960 ms | 40 ms |
| Population SD | 407.3 ms | 16.3 ms |
Setting Exclude correct times above to 300 ms after the session removes the 1,200 ms response from Included. All correct still reports the original mean of 495 ms and median of 270 ms, and the excluded attempt remains visible. The lower included figures come from selecting different observations, not from making any response faster. These values illustrate arithmetic, not a performance benchmark.
Frame cadence and interruption limits
The initial frame check collects 24 browser frame intervals. Let d be their median spacing in milliseconds. The displayed rate, f, in callbacks per second is calculated from that spacing.
A frame gap during an attempt interrupts it when the gap is greater than the larger of 100 ms and four times the initial median spacing. Equality alone does not trigger this rule. The frame check observes browser scheduling; it does not measure the screen's physical refresh rate or calibrate input and display latency. No estimated hardware delay is subtracted from a reaction time.
Privacy and Saved Sessions:
Response timing and statistics are processed in your browser without uploading the measurements to a results service. Taking the test does not request camera, microphone or location permission. Displaying the chart can require a download from a third-party content provider, so local calculation is not a guarantee of offline availability.
- The most recent 20 completed session summaries are kept in this browser's local storage when it is available. A stopped session with recorded attempts can also be saved. Summaries include the start time, task settings, input methods, attempt and error counts, and summary statistics. Changing optional cutoffs after completion recalculates the current result and updates its saved summary if that entry is still present; earlier summaries retain their recorded settings.
- Detailed trial records and timing traces remain only for the current session. Reloading or starting a new session clears them. Export those details before leaving if you need to keep them. The page address carries setup settings, not recorded responses or saved history.
- Clear saved sessions in Advanced clears this test's comparison history while keeping the current result on screen. If the browser cannot clear stored entries, a warning explains that they may return after reload. Browser storage can also be unavailable or cleared. If saving is unavailable, comparisons remain in the current tab; if saved history is malformed or incompatible, it is left untouched until cleared. Check the storage message and export any comparison you need to retain.
References:
- High Resolution Time Level 3, W3C.
- Maximizing Sensitivity of the Psychomotor Vigilance Test (PVT) to Sleep Loss, Mathias Basner and David F. Dinges, Sleep 34(5), 2011, pages 581–591.