Practise your aim: hit round targets for 30 or 60 seconds, one or three at a time, and see your hits, misses, accuracy and time per hit.
Hits 0
Misses 0
Accuracy 100%
Time left 30.0 s
Avg per hit -
Best (this setup) -
Time is up
Hits 0
Misses 0
Accuracy 100%
Hits per second 0.00
Average per hit -
Median per hit -
Press the Start target or the Start button. The clock starts when you do.
Click or tap each target. A click on the play area that misses every target counts as a miss. Escape cancels a run. With the keyboard, press Tab to reach a target and Enter or Space to hit it. In One at a time mode you can also focus the play area and press Space to hit the current target.
Each target is timed from the moment it appears to the moment you hit it, using the browser's high resolution clock. A target is placed at a random spot, fully inside the play area and at least a target's width away from the other targets and from where the last one was. A miss is a press on the play area that is not on a target. Accuracy is hits divided by hits plus misses, and is 100% when you have not pressed anything yet. Your screen and your mouse or touchscreen add a small delay of their own, so times are good for comparing yourself with yourself on one device, not for comparing devices. A run that you cancel, or that is interrupted by hiding the tab, is not saved.
As-is, no warranty. These apps are free under their listed license and run entirely in your browser. Use at your own risk — don't blame me if your PC catches fire, your dog runs away, or the math turns out wrong. Verify anything that actually matters. None of this is professional financial, medical, legal, or engineering advice.
Pick a Duration (30 or 60 seconds), a Target size (Large, Medium or Small) and a Mode. In One at a time a single target shows and a new one appears the moment you hit it. In Three at a time three targets show, and each hit replaces just that target.
Press the big Start target in the middle of the play area, or the Start button. The clock begins at that moment, so you never lose time to a slow first click. Then click or tap targets as fast as you can.
While you play you see:
When time is up a result card shows hits, misses, accuracy, hits per second, the average and the median time per hit, and your personal best for that exact setup. Try again takes you back to the Start target; Copy result puts a line of text on your clipboard. Escape cancels a run.
Every target is a real button. Press Tab to reach it and Enter or Space to hit it, and after each hit focus moves to the new target. In One at a time mode you can also focus the play area itself and press Space to hit the current target, so you never have to find the target first.
The interesting part is deciding where the next target goes. The engine keeps a few rules, and the test suite checks each one with thousands of seeded draws:
If random tries all fail in a crowded area, a coarse scan picks the roomiest spot instead of looping. It is still inside the area.
Target size scales with the width of the play area, with a floor so it stays tappable on a phone. Large is 13% of the width, Medium 9% and Small 6%, but never below 44 px, 32 px or 22 px, and never above 88 px, 64 px or 44 px. The tests check the floors across every phone width from 200 to 420 px.
Timing. Each target is timestamped with performance.now() when it appears and again when you hit it. Presses register on pointer down, which is earlier than a click. The first target of a run counts from the moment it appeared. In Three at a time mode each target has its own clock, so a target that sat waiting while you hit another one carries that waiting time. That is the honest definition of “time from appearing to hit”, and it means the averages in the two modes are not directly comparable.
Statistics. Accuracy is 100% with no presses, hits per second is 0 rather than infinity when no time has passed, and the median of an even number of hits is the mean of the two middle values. None of these can produce NaN.
Nothing is uploaded and there is no account. Your personal best for each setup is saved in your browser’s local storage as a small whole number inside a small JSON object: the most hits in one finished run, for each of the 12 combinations of duration, size and mode. Whatever is read back is checked first: only those 12 known keys are accepted, and only whole numbers from 1 to 1000. Clear saved bests removes it all.
A run that you cancel, that you restart by changing a setting, or that is interrupted by switching to another tab is thrown away and never saved. Only a run that lasts its full duration can set a personal best.
Everything runs locally in your browser.
For informational purposes only. Not financial, medical, or legal advice. You are solely responsible for how you use these tools.