Skip to main content
Herotyping

How Is WPM Calculated?

The exact formula, worked examples, and why the same run can score differently on two different sites.

Quick answer

WPM = (characters typed ÷ 5) ÷ minutes elapsed. A “word” is a standardized 5-character unit, not a real dictionary word. Gross WPM counts every character you typed, mistakes included. Net WPM counts only what you got right, and is the number that actually reflects what you can type — it's what HeroTyping and most typing tests lead with.

Two typing sites can score the identical run differently, and it's rarely because one of them is wrong — they're usually just answering a different question, or using a different formula for the same question. Below is the exact math, worked examples at four common test lengths, and the real reason WPM numbers disagree between sites.

The formula

Side-by-side comparison of the gross WPM formula and the net WPM formula

Gross (raw) WPM

Gross WPM = (all characters typed ÷ 5) ÷ minutes elapsed

Every keystroke counts, correct or not. This answers “how fast were your hands moving,” full stop — a run full of mistakes and a flawless run at the same physical pace report the same gross WPM.

Net WPM

Net WPM = (correct characters only ÷ 5) ÷ minutes elapsed

Only characters you typed correctly are counted — mistakes, including ones you never went back to fix, simply aren't counted toward your speed. This is the formula HeroTyping uses everywhere: the main typing test, every lesson result, and every game.

There isn't just one “net WPM” formula

This is the part most typing-speed pages skip, and it's the real reason two legitimate sites can disagree even when both claim to report “net WPM”: there are two different formulas in common use, and they don't always agree.

  • Correct-characters-only (what HeroTyping uses): divide only the characters you got right by 5, then by minutes. Mistakes are simply excluded from the count.
  • Gross-minus-error-penalty: calculate gross WPM first, then subtract (errors ÷ minutes) as a flat penalty. This is common on employment and certification tests.

These can produce different results for the exact same run. Take a 1-minute test with 500 characters typed and 5 uncorrected errors: gross WPM is (500 ÷ 5) ÷ 1 = 100. Correct-characters-only net WPM is (495 ÷ 5) ÷ 1 = 99. Gross-minus-penalty net WPM is 100 − (5 ÷ 1) = 95. Same test, same typing, two different “net” scores — neither is wrong, they're just different formulas answering slightly different questions.

Worked examples by test duration

Using HeroTyping's correct-characters-only formula throughout:

TestResultGross WPMNet WPM
30-second test150 characters typed, 3 incorrect(150 ÷ 5) ÷ 0.5 = 60 WPM(147 ÷ 5) ÷ 0.5 = 58.8 → 59 WPM
1-minute test250 characters typed, 5 incorrect(250 ÷ 5) ÷ 1 = 50 WPM(245 ÷ 5) ÷ 1 = 49 WPM
2-minute test480 characters typed, 10 incorrect(480 ÷ 5) ÷ 2 = 48 WPM(470 ÷ 5) ÷ 2 = 47 WPM
5-minute test1150 characters typed, 20 incorrect(1150 ÷ 5) ÷ 5 = 46 WPM(1130 ÷ 5) ÷ 5 = 45.2 → 45 WPM

CPM: the other common unit

Some tests — especially data-entry and government exams — report CPM (characters per minute) or KPH (keystrokes per hour) instead of WPM. Since a “word” is standardized at 5 characters, the conversion is direct: WPM ≈ CPM ÷ 5 and CPM ≈ WPM × 5. KPH is simply CPM × 60, so KPH ≈ WPM × 300. See the data entry typing test guide for how these show up in real job listings.

Why the gross/net gap is worth watching

The distance between your gross and net WPM is a more honest signal than either number alone. A small, consistent gap means your hand speed and your accuracy are roughly matched — you're not leaving speed on the table by making avoidable mistakes. A large gap means your hands are moving faster than your accuracy can back up, and the fix isn't typing faster — it's slowing down until the gap closes, which almost always raises net WPM within a few sessions.

Which one should you trust?

For almost every real use — writing an email, taking notes, chatting — net WPM is the number that describes what you can actually do, because a typo you have to notice and fix costs real time gross WPM doesn't account for. Gross WPM is mainly useful as a ceiling: it's roughly the net WPM you could reach if your accuracy caught up to your hand speed. If you want to know where either number should reasonably sit, what is a good typing speed has real ranges instead of one made-up target.

Curious what your own gap looks like? Take a typing test — the results screen shows both numbers side by side, not just one. Already have raw numbers from a test and just want the math done for you? Use the WPM, CPM & KPH calculator.

FAQ

Does WPM include spaces?

Yes. A "word" in every WPM formula is a standardized 5-character unit, not a dictionary word — and that unit is counted from total characters typed, including spaces and punctuation. This is why WPM formulas divide by 5 in the first place: it normalizes long and short words to a comparable rate.

Why does my WPM change every time I take the same test?

Small run-to-run variation is normal — reaction time, momentary hesitation, and even which random words appear all shift the result slightly. Look at a short streak of tests under the same conditions rather than any single score; a rising trend across several tests is more meaningful than one high or low outlier.

What is CPM and how does it relate to WPM?

CPM (characters per minute) is the raw character-typing rate, before it's normalized into words. Since a "word" is standardized as 5 characters, CPM and WPM convert directly: WPM ≈ CPM ÷ 5, and CPM ≈ WPM × 5. CPM is more common in some data-entry and government typing tests, which is worth knowing if a job posting lists a CPM or KPH (keystrokes per hour) requirement instead of WPM.

Why do corrected mistakes still sometimes lower my WPM?

It depends on the formula a site uses. Some count every keystroke you made, including ones you later deleted, toward your total typing time even if the final text is correct — so a mistake you fixed still cost you the seconds it took to notice and correct it, even though the character itself doesn't appear in your final error count.

Sources & references

Last updated 2026-09-24.

Mukesh, Founder of HeroTyping
MukeshFounder & Developer

Mukesh is the founder and developer of HeroTyping, building accessible, ad-free typing practice tools and games with evidence-backed training methods.

Published: Updated: Editorial Policy
Practice This Skill

Apply what you learned directly in HeroTyping's interactive training engine.

Test with Standard Parity Scoring