Privacy Policy

What stays on your device, what leaves it, and who receives it. No hedging.

Last updated 11 August 2026

Account
Not required
Advertising
None
Your typing data
Local by default
Usage analytics
Anonymous

Correction, August 2026. An earlier version of this policy said TypeCrt collected no data and used no cookies. That was inaccurate: the site loads Google Analytics and records anonymous usage events. Nothing about the product changed — the policy was simply wrong, and this version describes what the site actually does. Everything below is verifiable in your browser's network inspector.

Stored on your device

Your typing history, personal bests, per-key statistics and all 35 settings live in your browser's localStorage. They are not required to leave your device, and TypeCrt works fully offline once loaded.

Sent off your device

Two things transmit, and both are described exactly here.

1. Anonymous usage analytics

On page load and on each completed test, TypeCrt records an event to its own backend. No account is needed for this and it is not linked to an identity unless you are signed in.

FieldExample
Event typevisit, test_complete
Result metricsWPM, raw WPM, accuracy, mode, duration
Active themefw-dark
Approximate locationCountry and city, derived from IP
Account identifierOnly if you are signed in — otherwise null

The text you type is never transmitted. Only the resulting numbers are.

2. Your account, if you create one

Signing in is entirely optional and exists for two reasons: syncing your typing history across devices, and submitting a run to the public leaderboard. If you sign in, your results are stored against your account so they follow you. If you never sign in, this never happens.

3. The leaderboard, if you submit to it

Nothing is ever submitted automatically. A finished run is screened locally and you are shown whether it qualifies; it reaches the board only when you press Submit. Submitting is per-run, so signing in does not put you on the board and neither does any past result.

A submitted entry is publicly readable by anyone and contains:

FieldWhat it is
Display nameDerived from your Google account — first name and last initial, e.g. Ada L. You cannot choose a different one, and your full name is not published
Account identifierYour Firebase user ID, used to keep one best run per person
Result metricsWPM, raw WPM, accuracy, consistency, mode and duration
Keystroke timingsThe gaps in milliseconds between your keypresses during that run, at half resolution — the evidence the screening reads
Screening verdictThe result of the checks described on the verification page

The timing record is intervals only. It is not the text you typed, and the words themselves are still never transmitted — a list of gaps cannot be turned back into characters. It exists so a ranked score carries its own evidence instead of being an unbacked number, and so entries can be re-checked later if the screening improves.

To remove an entry, email us; see Deleting your data.

Third parties

Every external request the site makes, and why:

ServicePurposeReceives
Google AnalyticsAggregate traffic measurementPage views; sets cookies
Google FirebaseAnalytics events, optional accounts, leaderboardThe event fields listed above; leaderboard entries you submit
Google FontsTypefacesIP address, user agent
jsDelivr CDNChart rendering libraryIP address, user agent
GetGeoAPICountry/city from IPIP address
Cloudflare PagesHostingStandard server logs

Cookies. TypeCrt itself sets none. Google Analytics does — the standard _ga measurement cookies. A browser-level tracking blocker or an extension will stop them without affecting anything else on the site.

Deleting your data

Contact

Questions, corrections, or a deletion request: [email protected]. If you find anything on this page that does not match what the site actually does, tell us — that is a bug, and it gets fixed.

TypeCrt Docs About Terms Security License