Methodology
This page documents exactly how each test is timed and scored, where the measurement loses precision, and what the anonymous statistics we publish do and do not contain. It exists because a test that oversells its own accuracy is not much use to anyone — if you are going to compare your score against something, you should know what the score is made of.
How timing is taken
All timing uses the browser's high-resolution clock,
performance.now(). Two properties matter here. It is
monotonic, so it cannot jump backwards if the system clock is adjusted
mid-test. And it is measured from page load rather than wall-clock time,
which removes a class of error that Date.now() would
introduce.
Browsers deliberately reduce the resolution of this clock as a defence against timing-based attacks, so the practical granularity is not the microsecond figure the API suggests. We report whole milliseconds because that is the honest level of precision, and any digit beyond it would be decoration.
Every measurement happens in your browser. There is no server round-trip in any timing path — network latency cannot affect your score.
Reaction time test
Procedure. Five rounds, averaged.
- You click to arm the pad. The round begins.
- The pad waits a random interval before turning lime. The interval is drawn uniformly between 1.5 and 4.0 seconds.
- The moment the pad changes, a timestamp is taken. Your click takes a second timestamp. The difference, rounded to the nearest millisecond, is that round's result.
- After a 700 ms pause the next round arms automatically.
Why the delay is random. A fixed delay is learnable within two rounds. You would end up timing an internal count rather than reacting to a signal, and the test would measure rhythm rather than reaction.
False starts. If you click before the pad turns, the round is discarded and retried. It is not recorded as a very fast score, and it does not add a penalty. Both alternatives corrupt the measurement: counting early clicks rewards guessing, and penalising them measures your lapse rather than your reaction. Discarding is the only option that leaves the remaining data clean.
Scoring. Your reported result is the arithmetic mean of the five rounds, rounded to the nearest millisecond. Your best round is the minimum. The mean is the figure worth tracking; the minimum is largely luck.
CPS test
Procedure. A fixed window of 5, 10, or 30 seconds.
- The timer starts on your first click, not when the page loads. Tests that start counting when ready silently charge you for your own reaction time.
- Every click on the pad is counted, including the first one that started the clock.
- When the window expires the pad stops accepting input immediately, so a late click cannot inflate the total.
Scoring. Total clicks divided by the mode duration, rounded to two decimal places. No smoothing, no peak detection, no discarding of slow stretches.
Aim test
Procedure. A fixed 30-second window.
- The timer starts on your first click.
- A target appears at a uniformly random position within the field. Hitting it spawns the next one elsewhere.
- A click that lands on the field but not on the target is recorded as a miss.
Scoring. Accuracy is hits divided by total attempts (hits plus misses), expressed as a whole-number percentage. Average time per target is the mean interval from a target appearing to it being hit, rounded to the nearest millisecond. Misses do not contribute to the timing average — only successful acquisitions do.
Random spawn positions are deliberate: a predictable pattern would let you pre-aim, which turns an aim test into a rhythm test.
The grading scale is ours, not a standard
The arcade ranks — Sleepy Sloth through Arcade Legend — are thresholds we chose. They are informed by commonly reported ranges, but they are not derived from a published scale and no external body endorses them. A different site with different thresholds is not wrong; it is using different thresholds.
Treat the rank as flavour and the underlying number as the measurement.
Error we cannot remove
Your score includes your equipment. None of the following is separable from the result, and no browser test can subtract it:
| Source | Typical contribution |
|---|---|
| Display refresh wait | ~8 ms average at 60 Hz; ~3.5 ms at 144 Hz |
| Display processing | Varies; can be substantial on televisions |
| Mouse polling | ~4 ms at 125 Hz; ~0.5 ms at 1000 Hz |
| Switch debounce | Mainly affects rapid repeated clicking |
| Browser event handling | Events may be coalesced or dropped under heavy input rates |
| System load | Variable; widens your spread rather than shifting your average |
Stacked together, the difference between a poorly configured setup and a tuned one is comfortably in the tens of milliseconds — which is why the same person can score 30–50 ms apart on two machines in the same room, and why cross-site comparison does not work. There is more detail in refresh rate, input lag, and your test score.
What we do not claim
- These are not clinical or cognitive assessments. They are games. Nothing here should be used to evaluate anyone's health, fitness to drive, or capability.
- We do not measure reflexes. A reflex is involuntary and routed through the spinal cord. Every test here measures a voluntary reaction. See reaction time versus reflex.
- Scores are not comparable across sites. Different tests count differently — when the timer starts, whether the final click counts, whether mouse-down or full click events are used.
- A single session is not a measurement of you. Five rounds averages within-session noise; it does not characterise a person.
The anonymous statistics
When you complete a test, one anonymous record is sent to us so we can publish aggregate distributions. This is the only thing we store on our servers.
Each record contains exactly six values: which test, the test mode, the score, a device category (desktop, mobile, tablet, or unknown), a two-letter country code supplied by our network provider, and the time the record was created.
It does not contain your IP address, your browser's user-agent string, cookies, account identifiers, or any value that could identify you or link two of your visits together. The device category is derived from the user-agent and then the user-agent is discarded; it is never stored. Records carry no identifier, so they cannot be traced back to an individual — which also means we cannot locate or delete an individual record on request. Full detail is in our privacy policy.
Quality controls. Submissions outside plausible ranges are rejected before storage — for example, a CPS value above 30 or a reaction time under 80 ms. The submission endpoint is rate limited. At aggregation time we additionally remove outliers, and we will document the specific rule used on the statistics pages themselves rather than applying it silently.
Every published figure will state its sample size and collection period. Collection began on 29 July 2026, so early figures will be drawn from small samples and labelled as such. We would rather publish a small honest number than a large vague one.
Corrections
If we find an error in a test's timing or scoring, we will fix it and note the change here rather than quietly adjusting numbers. If a change makes historical statistics incomparable with new ones, we will say so on the affected page.
Found something wrong? Tell us via the contact page. Corrections to this page are welcome and will be credited in substance if not by name.