Everything this site does — counting, timing, verdicts, score cards — happens inside your browser, on your hardware. Your clicks never travel.
Personal bests are numbers in your browser's local storage, keyed by test window and technique tag. They stay on the machine and browser where you set them. Score-card images are drawn by a canvas element on your device and saved wherever you choose. Challenge links carry test settings — window length, technique — never scores or identities.
Two things go a step further and use IndexedDB instead of local storage, because they hold more than a single number: the daily-challenge streak (one date-keyed record per day you finished a run) and any heatmap images you explicitly chose to keep with the "Save heatmap to profile" button. Neither is saved automatically — the heatmap only lands in that store if you press the button, and the streak is just the record that a given calendar date's run was completed. The profile page reads all of it back out to show you what's there; nothing is sent anywhere to compute it.
There is no account system, no leaderboard database, no analytics script watching your cursor, no advertising SDK and no cookie banner because there are no tracking cookies. The site is static files; the host (Cloudflare Pages) shows us aggregate page-view counts without identifying anyone.
Fonts come from Google Fonts on first load, cached afterward. That request exposes your IP and browser headers to Google's font servers, as any request to any host does. Nothing else leaves.
Clear this site's data in your browser settings and every personal best, streak day and saved heatmap is gone. There's no copy to ask us about — we never had one. The profile page also has its own "clear saved heatmaps" button if you just want that gallery emptied without touching anything else.
Anything unclear, ask via the contact page. Reviewed 3 July 2026.