Net and raw, kept apart
Net WPM counts only characters correct on the first attempt. Raw counts everything. The gap between them is the cost of your errors, and it is a coachable signal rather than a rounding artefact.
Typepace is a measuring instrument that happens to teach. Everything below is built and running in the version you are using right now — nothing on this page is a roadmap item.
One state machine drives every mode. A timed test, a course lesson, an adaptive drill and a code snippet are the same object with a different text source, stop condition and error policy — which is why the statistics mean the same thing wherever you earned them.
Every keypress produces an immutable record carrying the expected character, the character you typed, high-resolution timing, the interval since the previous key, the finger that owns the key, the digraph it completes, and whether a later backspace repaired it. Nothing downstream can be richer than what is captured here, so it captures generously.
Net WPM counts only characters correct on the first attempt. Raw counts everything. The gap between them is the cost of your errors, and it is a coachable signal rather than a rounding artefact.
Each position is judged once, when you first reach it. A backspace repairs the text on screen but never the record, because the habit being built is hitting the right key rather than noticing quickly.
How even your rhythm is, measured so that a fast and a slow typist who are equally steady score alike. Below a usable sample size it returns nothing instead of guessing.
Latency above 1.5 seconds is dropped when attributing key speed. A four-second pause is reading, not finger travel, and counting it would frame whichever key followed as a weakness.
Most of the value is cheap arithmetic that runs on your device for free. Per-key, per-digraph and per-finger error rates and latencies are compared against your own baseline and shrunk toward population priors in proportion to how thin the evidence is. That shrinkage is what stops one bad word being reported as a weakness.
Weaknesses map onto named causes in plain language: same-finger reach, adjacent-key confusion, pinky stretch, number-row instability, symbol unfamiliarity, speed outrunning accuracy, fatigue.
Every diagnosis arrives with a generated drill that actually contains the target pair, built from real English words where they exist and pronounceable pseudo-words where they do not.
A damped trend dates your next milestone, and declines to answer three ways: slope under 0.05 WPM/day is noise, an R² under 0.2 means scatter exceeds trend, and nothing past 180 days is a forecast anyone can act on.
Statistics come from the analysis layer; the narrator only chooses words. The coach can be wrong about why, but never about what.
Sixty-eight lessons from the home row to 60+ WPM, in the tradition of a professional typing school. Each module states its exit standard, lists the mistakes learners actually make, and gates the next module behind a checkpoint.
Python, JavaScript, HTML, CSS, SQL and C++. Real idiomatic snippets, with Enter and Tab as real characters, so brackets and indentation stop being obstacles.
A single real test drops you into the curriculum at the right lesson instead of asking you to rate your own ability.
Miss one day and the streak survives. Miss two and it does not. Long enough to matter, forgiving enough that one bad evening does not end a habit.
Either works and both reach the same account. An account is optional — everything runs without one, on the device you are using.
Results, course position, streaks, achievements, certificates, your name and picture, and every appearance setting travel between your devices. Finish a lesson on a laptop and the phone has it. The raw keystroke log stays put — the app only needs the summary it derives from it.
Sign in on a device left in a drawer for a month and it cannot undo a personal best set yesterday. Records take the higher figure, achievements take the union, and only genuinely single-valued things like your name follow the newer edit.
Every certificate carries a number that resolves at typepace.com/verify from any device, with no account. The lookup returns what is printed on the certificate and nothing about the holder's account.
10 light, 30 dark, plus 8 accents, three background depths, 19 typefaces and three densities. Every combination is checked against 11 foreground/background rules in the test suite before it can ship.
The shell is precached and lessons run with no connection. Results compute locally and land in IndexedDB; signed in, they upload by themselves once you are back online, and the network is never on the path between a keystroke and the screen.
Correctness is never signalled by colour alone, touch targets grow to 44px on coarse pointers, focus is always visible, and reduced motion is respected.
Three permitted zones, none of them on a typing route or during a session, enforced by a function that returns nothing rather than by an editorial promise.