Typing test for your own code

Paste a file from your repository, your last twenty commit messages or the notes you write every day, and drill the identifiers and phrases you actually type. Nothing leaves your browser.

Why a prose score says little about typing code

A typing test built from everyday English measures how fast you type everyday English. Code is a different distribution: identifiers you invented, brackets and operators on the shifted layer, names that mix cases and underscores, and long tokens the common-word lists have never heard of. Two people with the same prose score can be twenty words a minute apart once the text is their own repository, because the transitions that matter — the reach to an underscore, the shift for a capital in the middle of a word, the bracket after a function name — do not appear in prose at all.

The code tests on this site get closer: real Python, JavaScript and SQL, with the punctuation left in. But they are still somebody else's code. The identifiers you type most are the ones in the project you are working on this month, and no fixed corpus can contain them.

What the extractor reads

Paste anything you wrote. The page works out what it is looking at — code, prose or a commit log — and pulls out the vocabulary: identifiers and dotted paths from code (comments count at half weight, string contents not at all), words and recurring phrases from prose with the common words removed, and the scope prefixes from conventional commits. Language keywords like const and return are kept but ranked low; they are typed often, but they are not your vocabulary.

The result is a ranked list of a few hundred tokens and phrases, and the lines of your paste that carry them. That list, not the paste, is what the drills are built from.

Four ways to drill it

Most-used words pages through your top tokens forty at a time. Phrases and paths does the same for dotted paths such as user.profile.email and for the phrases you repeat. Your own lines drills whole lines from the paste, the ones that carry your weak transitions first. And once the coach has seen you type — one lesson or one test is enough — your weak transitions builds lines the way every drill here is built, from real words that contain the key pairs you hesitate on, except that the words are yours: a weak th becomes authToken and withCredentials rather than the and there.

Every page is a fresh set until the material runs out, and the same paste always produces the same drills, so you can come back to a page you found hard.

Where the text goes

Nowhere. The paste stays in this tab's memory: it is not written to storage, not synced to an account, not sent to a server, and not included in anything the coach sends to a language model if you have one connected. Close the tab and it is gone. What is kept afterwards is the same as for any lesson — per-key and per-transition statistics — never the text itself.

That is a deliberate constraint, not a limitation. A codebase is often the most confidential thing a person types, and a typing tool has no business keeping a copy.

Start the free course