How to use it
- Pick a mode with the tabs and a difficulty. Custom lets you set the target size (and the speed for tracking, the number of targets for switching).
- Tap or click the arena or press Start. After the 3-2-1 countdown, hit the targets – or hold the cursor on the moving target in tracking mode. Esc stops a session early.
- Read the score ticket and the coach panel. “Work on” items are the weak spot, “Strength” items what already works, and each one names the number behind it.
- Press “Set up this drill” to load the coach's suggested settings, or copy a link to share your settings with someone else.
- Come back over several days: the history panel keeps your last sessions, the trend line and the personal best for each mode and difficulty.
Example
A 30-second flick session on medium: 41 hits, 9 misses, average time-to-hit 520 ms, misses landing on average 0.6 target radii past the centre along the flick direction. Accuracy is 41 ÷ 50 = 82%, the multiplier for 5% targets is ×1.00, so the score is 41 × 0.82 × 10 × 1.00 = 336. The coach flags “You overshoot targets” (mean miss +0.60 radii, the rule fires above +0.40) and suggests a 30 s flick drill at the same size with a slightly lower sensitivity.
Scoring and the coaching rules
multiplier = 0.05 ÷ target radius (tracking: × speed ÷ 0.4), clamped to 0.5–3
flick / switching : score = hits × accuracy × 10 × multiplier
tracking : score = time on target (%) × 10 × multiplier
reaction : score = max(0, 600 − median ms) × trials ÷ (trials + false starts) × multiplier
miss offset : (click − target centre) ÷ radius; "along" = its projection on the flick directionTime-to-hit runs from the moment a target appears (flick) or from the previous hit (switching) to the click, measured with the browser's high-resolution clock. A click outside every target is a miss, and its offset from the nearest target is stored in target radii. Tracking samples the cursor once per animation frame (typically 60–120 times a second); a sample counts as “after a direction change” for 0.4 s after a bounce or turn. The reaction drill adds a random 1–4 s delay before each target and counts a click during the delay as a false start.
The coach checks: accuracy below 70% with hits faster than 500 ms (clicking before the cursor arrives); accuracy of 90% or more with hits slower than 700 ms (accurate but slow); a mean miss offset beyond ±0.4 radii along the flick (over- or undershoot) or sideways (grip bias); hit-time spread above 250 ms; reaction spread above 60 ms or two or more false starts; tracking under 50%, or more than 15 points worse right after direction changes; a second half more than 15% weaker than the first (fatigue); and your history – a new personal best, a score 20% under it, or the last three sessions against the three before. Nothing is predicted by a model: every message is one of these rules with its numbers printed.
Sources: MDN – Pointer Lock API (crosshair mode), MDN – performance.now() (timing resolution).
Questions
- Does the sensitivity here match my game?
- No. Without pointer lock the arena uses the normal system cursor, so Windows or macOS pointer acceleration and your desktop DPI settings apply. Crosshair mode reads raw mouse motion (unadjusted where the browser allows it) and multiplies it by the sensitivity slider; it still is not your game’s cm/360, so use it to train consistency, not to tune settings.
- Why is my score lower on hard even though I hit more?
- The score multiplies hits by accuracy and by a size factor. Smaller targets raise the factor (3.5% targets give ×1.43), but a drop in accuracy reduces the score faster than the factor adds. Compare scores only within the same mode and difficulty – that is also how the personal bests are kept.
- Can I use it on a phone or with a touchscreen?
- Flick, reaction and target switching work with taps. Tracking needs a pointer that moves without touching, so it is a mouse or trackpad drill. Pointer lock is offered only on devices with a fine pointer.
- Where is my history stored and can I export it?
- In this browser’s local storage under one key, the last 50 completed sessions. Download history CSV exports it; Clear history deletes it. Sessions you stop early are scored but not saved.