The three steps every typing test performs

Underneath the animations, every typing test on the internet does the same three things:

  1. Count characters.
  2. Divide by five to convert characters into word-equivalents, because a "word" in typing measurement is defined as five characters, spaces and punctuation included.
  3. Divide by the elapsed time in minutes.

Written as one line: WPM = (characters ÷ 5) ÷ (milliseconds ÷ 60000). Everything that distinguishes one test from another lives inside two questions the formula does not answer — which characters you count, and which clock you use. The rest of this page answers both for Keyboardo specifically, with the numbers you can check.

Net WPM and raw WPM

Keyboardo computes two speeds from the same elapsed time and two different character counts.

  • Raw WPM = every printable keystroke you made, right or wrong, ÷ 5 ÷ elapsed minutes. Backspaces are not printable and are excluded.
  • Net WPM = the characters that are correct in your final text, including exactly one space for each completed correct word, ÷ 5 ÷ elapsed minutes.

Both are rounded to two decimals. Note what net WPM is not: nothing is subtracted, and there is no error penalty term. Wrong characters simply never enter the count. Defining it on the final buffer is what makes fixing a mistake worthwhile — the repaired characters count — while the seconds you spent repairing it stay on the clock.

A worked example small enough to check by hand

Take the target text the cat sat — eleven characters, counting the two spaces. Here are three ways to type it.

RunPrintable keystrokesCorrect keystrokesCorrect chars in final textElapsedRaw WPMNet WPMAccuracy
A — typed cleanly1111116.00 s22.0022.00100.00
B — typed car, backspaced, fixed it1211116.50 s22.1520.3191.67
C — typed car, left it111096.00 s22.0018.0090.91

Every cell is reproducible. Run B: twelve printable presses (the extra one is the retyped t), one backspace which counts toward nothing, 6.5 seconds elapsed. Raw = 12 ÷ 5 ÷ (6500 ÷ 60000) = 2.4 ÷ 0.10833 = 22.15. The final text is correct, so the net count is the full 11 characters: 2.2 ÷ 0.10833 = 20.31. The correction cost nothing in characters and half a second in time.

Run C is the interesting one. One wrong keystroke removed two characters from the net count, not one: the mis-typed r obviously does not count, and because car is not a completed correct word it also forfeits the space that follows it. Correct characters in the final text are the (3) + its space (1) + the c and a of cat (2) + sat (3) = 9, so net = 9 ÷ 5 ÷ 0.1 = 18.00 against a raw of 22.00.

How accuracy is scored

Accuracy = 100 × correct keystrokes ÷ total printable keystrokes, rounded to two decimals. Backspaces are excluded from both counts.

The crucial detail is that accuracy is scored per keystroke, at the moment you press the key — not on the text you end up with. A character you typed wrong and then fixed counts once as an incorrect keystroke and counts among your final correct characters. In run B above, the final text is perfect and accuracy is still 91.67, because eleven of twelve presses were right and one was not. The correction repaired the text; it did not un-press the key.

That is a deliberate asymmetry, and it is why the two numbers are worth reading together. Net WPM forgives corrections and charges you the time. Accuracy remembers them. Between the two you can tell the difference between a run that was clean and a run that was merely cleaned up.

What the consistency score measures

Consistency answers a question raw speed cannot: was your pace even, or did you burst and stall?

Keyboardo builds one sample per completed second — the number of characters you typed in that second × 12, which is simply the WPM formula applied to one second, since 60 seconds ÷ 5 characters = 12. Over those samples it computes the mean, the population standard deviation (population, not sample, because the samples are the whole test rather than a draw from it), and the coefficient of variation CV = σ ÷ μ. Then:

consistency = 100 × (1 − min(1, CV)), rounded to two decimals and clamped to the range 0 to 100. Fewer than two samples, or a mean of zero, gives 0.

Characters typed each secondPer-second raw WPMMeanσCVConsistency
5, 5, 5, 560, 60, 60, 606000.00100.00
4, 6, 4, 648, 72, 48, 7260120.2080.00
3, 7, 3, 736, 84, 36, 8460240.4060.00
2, 3, 2, 324, 36, 24, 363060.2080.00

The first three rows all average 60 WPM and score 100, 80 and 60 — identical speed, different rhythm. The fourth row is the point of using a ratio: it is half the speed of the second row with the same relative variation, and it scores exactly the same 80. A 40 WPM typist and a 140 WPM typist with equally steady hands get equal consistency scores.

Because the map from CV to score is plain linear arithmetic, it is also explainable in one sentence: your per-second speed varied by about 30% around your average, so you scored 70. That was the reason for choosing it over the smoother curves other tests use — a metric nobody can explain is a metric nobody should trust.

Why two typing tests give you different numbers

Six differences, roughly in order of how much they move the score.

  • Which characters count. Final-buffer net WPM, gross-minus-errors net WPM and plain raw WPM are three different measurements sharing two names between them. WPM vs CPM works through both net families.
  • The text. The thousand most common English words with punctuation and numbers off is the easiest corpus there is. Quotes, symbols and digits all cost speed, and none of them get a discount from the five-character rule.
  • Whether errors block you. Some tests refuse to advance until the word is right, which converts an accuracy cost into a time cost.
  • The space rule. Whether the separator after a word counts, and whether it counts when the word was wrong. Keyboardo credits exactly one space per completed correct word, which is why run C above lost two characters from one mistake.
  • The clock. When timing starts and stops, and whether a paused or backgrounded tab keeps counting.
  • The research-versus-product convention. Text-entry research decrements the character count by one before computing speed, on the grounds that timing begins at the first keystroke rather than before it (I. Scott MacKenzie, "Measuring Text Entry Speed"). Keyboardo does not: it divides the full character count by five over wall-clock elapsed time, which is the ordinary convention for typing-test products.

That last one is worth quantifying, because it is the kind of difference people assume is huge and is not. On a 60-second run of 300 characters the research convention would use 299, giving 59.80 WPM instead of 60.00. On a 15-second run of 75 characters it would use 74, giving 59.20 instead of 60.00. The shorter the test, the more any per-test adjustment matters — which is a good general reason to compare yourself on longer runs.

What happens to your result when the test ends

Two things worth knowing about, because they affect what your number means.

The server recomputes rather than trusts. A submitted result carries a keystroke log — a list of [milliseconds since the previous event, kind, code point] entries, where kind is 0 for a printable character and 1 for a backspace. The server rebuilds raw WPM and the per-second consistency samples from that log alone and compares them against the statistics the browser claimed. Raw WPM is defined purely from keystroke counts precisely so that this check is possible: for a random word list the server cannot know which characters were correct, but it can always count keystrokes and their timings. Once the checks have run, the log is discarded. It is never stored — the results table keeps only the aggregate numbers and a hash.

Not every result is comparable, and the site does not pretend otherwise. Every finished test lands in your own history, but the leaderboard only accepts English 1k results with punctuation and numbers switched off, taken live rather than imported, and unflagged. Zen mode is a special case by definition: there is no target text, so there is nothing to be wrong against — net WPM equals raw WPM and accuracy is fixed at 100. A zen score is a measure of finger speed, not of typing.

If you want to watch these numbers being produced rather than read about them, run a 60-second test and compare your raw and net figures afterwards. The gap between them is the most informative thing on the results screen, and what counts as a good typing speed covers how to read it.