The short answer
Net WPM = characters in the words you typed completely correctly (including the space after each one) ÷ 5 ÷ minutes.
Raw WPM = every character in what you typed, right or wrong ÷ 5 ÷ minutes. Characters you deleted don't count.
Accuracy = correct keypresses ÷ all keypresses × 100. Fixing a mistake doesn't erase it.
The rest of this page explains each of these, plus the less obvious numbers on your results screen.
Speed
Net WPM is your headline score. A word with even one wrong letter adds nothing, because a word with a typo is a word somebody still has to fix.
Raw WPM counts all typed characters (correct, incorrect and extra) and shows how fast your fingers were moving, mistakes and all. If your raw WPM is far above your net WPM, accuracy is what's holding you back, not speed.
CPM, CPS, WPS and WPH are the same speed in other units. Characters per minute is 5 × WPM. Characters per second is CPM ÷ 60. Words per second is WPM ÷ 60, and words per hour is 60 × WPM. Keystrokes per hour, which data-entry tests use, is CPM × 60.
Accuracy and mistakes
Accuracy is correct character keypresses divided by all character keypresses. Backspace isn't counted either way, so leaving an error in is never rewarded: a mistake you fixed still counts as one wrong keypress.
Mistake % is 100 minus accuracy. It's the total error rate from the Soukoreff and MacKenzie family of text-entry measures: fixed and unfixed mistakes both count, because fixing things takes time.
Uncorrected error % is the Levenshtein (edit) distance between the text you were shown and the text you ended up with, divided by the longer of the two, × 100. In a large study of online typists, the average is about 1.2%, and nine in ten people are under 2.7%.
Corrected errors are the wrong keypresses you went back and deleted. We show the count and the rate per 100 characters.
KSPC (keystrokes per character) is (character keypresses + backspaces) ÷ length of your final text. A score of 1.00 means you didn't waste a single keystroke. The average in the same study is about 1.17.
Rhythm
Burst is your speed on a single word, from its first keystroke to the space that ends it. The results screen colours every word by its burst, so you can see exactly where you slowed down.
Consistency measures how steady your pace was. We take your raw WPM for each second and work out how much it varies: cv = population standard deviation ÷ mean. Then consistency = 100 × (1 − tanh(cv + cv³/3 + cv⁵/5)). For small amounts of variation that's close to 100 × (1 − cv). For very uneven typing it eases smoothly toward zero rather than going negative.
Per-key stats are worked out from your keystroke log: how often you miss each key, the average time between keys and how much it varies, how long you hold each key, and your rollover ratio (how often you press the next key before letting go of the last one). The results screen shows the keys you miss most; practice uses the rest to choose your drills. Gaps over 5 seconds are left out of these averages, and implausible intervals under 40 milliseconds are discarded.
A worked example
Say you take a 30-second word test. You make 160 character keypresses (spaces included) and 4 backspaces. Six of those keypresses were wrong. You fixed four and left two: one wrong letter and one extra letter. Your final text is 156 characters long (154 correct, 1 wrong, 1 extra), and 30 of the 32 words are perfect, adding up to 148 characters with their spaces. Your raw speed, second by second, averaged 62 WPM with a standard deviation of 11.2, so cv is about 0.18.
| Metric | Working | Result |
|---|---|---|
| Net WPM | 148 ÷ 5 ÷ 0.5 | 59.2 |
| Raw WPM | 156 ÷ 5 ÷ 0.5 | 62.4 |
| Net / raw CPM | 5 × WPM | 296 / 312 |
| Accuracy | (160 − 6) ÷ 160 | 96.25% |
| Mistake % | 6 ÷ 160 | 3.75% |
| Uncorrected error % | 2 ÷ 156 | 1.28% |
| Corrected errors | 4, or 4 ÷ 156 per character | 2.56 per 100 characters |
| KSPC | (160 + 4) ÷ 156 | 1.05 |
| Consistency | 100 × (1 − tanh(0.18 + 0.18³/3 + 0.18⁵/5)) | 82.0% |
Your results screen would show net 59, raw 62, accuracy 96%, mistakes 3.75% (4 fixed, 2 left) and consistency 82%. It would also note that a site counting every correct character, rather than every correct word, would have given you about 62. Replaying the same keystroke log on our server reproduces every number to two decimal places, and our unit tests check each formula against this example.
Why your WPM is different on other sites
Different sites count different things, and most don't say what. These are the main counting rules, and how each compares with our net WPM. A test's help page or results screen usually tells you which one it uses.
| Counting rule | What the headline number counts | Compared with our net WPM |
|---|---|---|
| Correct words only (ours) | Characters in fully correct words ÷ 5 ÷ minutes, with raw WPM shown beside it | Reference |
| Every character typed | Everything left in your text, right or wrong, ÷ 5, with accuracy shown separately | Same as our raw WPM |
| Every correct character | Correct characters whether or not the word was right ÷ 5 | Between our raw and net WPM; about 62 in the example above |
| Gross minus errors | Gross speed minus a penalty for each uncorrected error | Close to net; lower when many errors are left in |
| Fix every error before moving on | You can't continue past a wrong letter, so the final text is always right | Comparable, usually a little lower because correction time is included |
| Timed on a server | The official time is taken on the server, so network delay is part of your time | Lower on short tests over a slow connection |
| Research (Dhakal et al., 2018) | Every character of the transcribed text, with uncorrected error rate reported separately | Close to our raw WPM |
Test length matters as much as the formula. Short tests tend to score higher: nobody holds a sprint pace for long, and on a 15-second test each word is worth 4 WPM, so one lucky stretch moves the number a lot. Long tests show the speed you can actually keep up. If you want to compare two results, compare the same length, the same kind of text and the same scoring. There's more in why your WPM differs between sites.
Percentiles
Once a combination of mode, length and language has 10,000 results on this site, your results screen shows your percentile against that group, worked out live from every validated result. Until then, we show a labelled reference instead, drawn from millions of results on public typing tests. Among the general public, about 40 WPM is the 60th percentile and 60 WPM roughly the 90th. Among keen typists the bar is much higher: 100 WPM is about the 87th percentile, 120 the 95th and 150 the 99th. The label always names the group you're being compared with, because a score in the top 10% of the public might be ordinary among enthusiasts.
Timing and pauses
In a timed test, the clock is the measurement. It starts on your first accepted character and stops at the time limit, and a half-finished last word still counts for what you got right.
In word and quote tests, the clock runs from your first keypress to your last. A pause of more than 5 seconds marks the result as paused and keeps it off the leaderboards, though you still see all your numbers.
A second with no keyboard activity counts as away time. It's taken off the time you're credited with, but it never changes your WPM in a timed test.
Timestamps inside a test come from the browser's monotonic performance.now() clock, and the real-world time of the result is recorded separately. The time between the page getting focus and your first keypress is logged as start latency and doesn't count against you.
On phones, an autocorrect replacement counts as one keypress even if it changes several characters. Your result records whether you used autocorrect, and phone results stay off the public leaderboards for now.
How we check results for cheating, and what happens to results that fail, is covered on the anti-cheat page.