Methodology
How WPM and accuracy are calculated
Speed uses the standard 5-characters-per-word convention, and TypeVelo reports it two ways. Gross WPM is every character you typed ÷ 5, divided by elapsed minutes — your raw pace, before any penalty for mistakes. Net WPM counts only correctly-typed characters ÷ 5 per minute, so uncorrected errors pull the number down; this is the headline figure on your results, because it reflects usable, accurate speed rather than reckless keypressing.
Accuracy is correct keystrokes ÷ total keystrokes. Backspacing is allowed and counts as keystrokes: fixing a mistake improves your net WPM by turning a wrong character right, but the extra keypresses still cost you time, which is exactly the real-world trade-off between speed and precision. Results also note the keyboard layout the score was measured on (QWERTY unless your input indicates otherwise), since raw WPM isn't directly comparable across different layouts.
Where test passages come from
No practice text anywhere on TypeVelo is copied from a copyrighted source. It comes from three places, all of them either generated on your own device, written originally for this site, or genuinely public-domain:
- Assembled on your device from a word list — the standard timed tests and most games build their text in your browser at run time from a curated list of common English words. Individual dictionary words carry no copyright, and the text is shaped to each page's job: a timed test builds a flowing passage sized to its clock, while Words Mode presents a fixed count. Because it is put together fresh rather than copied from anywhere, none of it can infringe a source.
- Per-drill word lists, numeric formats and code fragments — each of the sixty drills draws from its own explicit pool, held in the site's source as data rather than prose. Those pools are ordinary English words chosen for the pattern the drill trains, numeric strings generated in real-world shapes (dates, prices, reference codes), and short idiomatic code lines written for this site. None of the code fragments is taken from any project, and the ordinary constructs they use — a loop header, a select statement, a shell pipeline — carry no copyrightable expression.
- Short public-domain quotations — the quotations test draws from a small fixed pool of famous opening lines and aphorisms whose originals were published before 1900, by authors including Jane Austen, Herman Melville, Charles Dickens, Henry David Thoreau, Leo Tolstoy, William Shakespeare, Benjamin Franklin, Mark Twain, Alexander Pope and Marcus Aurelius. Each is a single sentence, each is long out of copyright, and the pool exists so that at least one test has you typing real sentences with real proper nouns rather than assembled word lists.
- Prose and sample text written for this site — the continuous prose, punctuation, capitals and lowercase tests use paragraphs and sentences written specifically for this site to carry the character mix each mode is testing. The prose passages are composed in a nineteenth-century register because long sentences with subordinate clauses are what that test is measuring — but they are original compositions, not excerpts, and no source text is reproduced anywhere in them.
- Original lesson practice text — every lesson's practice text across all thirty lessons in the Practice Path is written originally for this site and deliberately constructed to match each lesson's exact key set (the earliest home-row lessons, for example, use only words buildable from A, S, D, F, J, K, L and the semicolon). None of it is drawn from any external source.
- One public-domain literary excerpt — the practice path's capstone lesson uses a short passage from The Wonderful Wizard of Oz by L. Frank Baum, published in 1900 and in the public domain in the United States, so that the path ends on genuine narrative prose.
Why every drill states what its text contains
Each drill page prints, above its typing surface, the exact characters and sequences its practice text is guaranteed to include. That line is not written by hand. It is generated from the same fields a build-time check asserts against real generated passages, across many random seeds and at the shorter mobile length, so a drill cannot be published claiming to train something its text does not contain.
That check exists because the site failed it. When the drill corpus was audited on 31 August 2026, nine of the original fifteen drills were generating text that did not match their own description: the left-pinky drill was emitting a run of the single letter A, because that was the only word in the shared list spelled using only Q, A and Z; the index-finger drill was emitting the word "by" repeatedly for the same reason; and the right-pinky drill was producing ordinary prose containing none of the semicolons, slashes, zeros or hyphens it was supposed to be training. Every drill now declares what its passage must contain, and the build fails if any generated passage does not.
If a copyrighted passage is ever added in future, its source and licensing would be recorded here first — but as of now, nothing on the site relies on one.
Progress data
All practice progress and personal-best history is stored locally in your browser (localStorage) — never sent to or stored on our servers. See the privacy policy for detail.