Hit it the moment
it turns yellow.
Five rounds. The wait is random, so you cannot guess it; jump early and that round is a foul. Then we take your number apart and show you how much of it was never you.
Finish five rounds and this fills in with what your own numbers say.
Your five, in the order you ran them
The four figures above squeeze five rounds into four numbers, and the order goes missing. Here it is back: one dot per round, left to right, milliseconds up the side. The dashed line across is your median.
Run the five and your own rounds land here, in order.
Some of that was the screen
Your screen does not light up the instant the code says to. It waits for its next refresh — and we are timing yours right now, from the real gaps between frames on this page.
This splits your fastest clean round. It is an upper bound on the screen’s share, not a measurement of your brain.
Two rounds that are the same number
That repaint interval is also the finest difference this page can see. We are still timing it — once it lands, the exact figure replaces this sentence.
Finish the five and your rounds get sorted here, with the gap between each neighbouring pair measured against that repaint interval.
Take away any one round
Every row below drops one of your rounds and works both figures out again from the ones left standing. Whichever column moves less is the one a single bad round has least hold over.
This needs at least three clean rounds — with fewer, taking one away does not leave a middle to find.
What this actually measured
- The clock starts when the pixels change, not when the code decides to change them. We take the timestamp inside the browser’s own paint callback, so the wait for the next refresh is included in your number rather than hidden from it.
- The wait is random, between 1.2 and 4.2 seconds, redrawn every round. Without that you would be timing your prediction, not your reaction — which is why hitting early is recorded as a foul instead of a very fast round.
- Fouls do not count towards any figure above. They are shown because a run with three fouls in it is a different run from a clean one, and hiding them would flatter you.
- The middle number is the median, not the average. One bad round — a notification, a sneeze — drags an average of five a long way. The median barely moves.
- The refresh figure is measured, not looked up. We time the gaps between real frames on this page and take the middle one. A 60 Hz screen lands near 16.7 ms, a 120 Hz one near 8.3 ms, but the number you see is yours.
- The chart’s vertical axis is not zero-based. It is drawn to fit your own fastest and slowest round with a margin either side, so a 15 ms spread fills as much height as a 150 ms one would. That is what makes the shape readable, and it is also why the wobble looks larger there than it is on an absolute scale.
- Half a repaint on average, a whole one at worst. The instant a round is ready to be drawn falls anywhere inside the refresh cycle with equal chance, so the typical wait is half an interval and the ceiling is a full one. Both are printed above rather than one, because choosing between them would be choosing your answer for you.
- The leave-one-out table is arithmetic, not statistics. Nothing is fitted or modelled — each row is your own remaining rounds, sorted and added up. Five numbers cannot carry a confidence interval, so none is offered.
- Nothing here is a clinical measurement. A mouse, a trackpad and a touchscreen all report at different rates, a busy laptop adds delay, and this is one browser tab among however many you have open. Compare your rounds to each other, not to anyone else, and do not read anything medical into them.