What the WPM number means
Typing speed is almost always reported in words per minute, but nobody agrees on how long a "word" is. The convention every serious typing test uses — including this one — is that one word equals five characters, spaces included. That makes the formula: gross WPM = (characters typed / 5) / minutes elapsed.
Net WPM subtracts the damage. In this test, net WPM only counts characters that matched the target text, so a fast but sloppy run cannot beat a slower clean one. Raw WPM counts everything you pressed, correct or not. When the gap between raw and net is wide, accuracy is your bottleneck, not speed.
Where your score lands
There is no official standard, because everyone measures slightly differently. The ranges below are what people commonly report on touch typing tests; use them to locate yourself, not to compare yourself to strangers on leaderboards.
| Group | Typical range (WPM) | What it feels like |
|---|---|---|
| Non-typists, two-finger | 20 – 35 | Hunting for keys, eyes on the keyboard |
| Average office worker | 38 – 48 | Comfortable, occasional glances down |
| Confident touch typist | 55 – 75 | Eyes on the screen, steady rhythm |
| Fast professional | 80 – 100 | Rarely looks down, long unbroken runs |
| Competitive typist | 110 – 150 | Sub-millisecond rhythm, near-zero errors |
| Record territory | 200+ | Very short bursts, carefully controlled error rate |
Approximate ranges people report on ten-key and touch typing tests. Treat these as orientation, not a ranking.
Why this test has a code mode
Prose and code are different motor skills. Prose rewards rhythm and long unbroken runs. Code punishes you with brackets, semicolons, and indentation, and it breaks your rhythm every few characters. Programmers routinely type prose at 90 WPM and code at 45.
Switch to Code in the toolbar above to type real JavaScript, Python, SQL or HTML. Indentation is filled in automatically so you practise the characters that actually slow you down.
What this site does with your data
Nothing leaves your browser. There is no account, no server-side result storage, and no keystroke logging. Your personal best is written to localStorage on your own device, and you can clear it by clearing site data.