WPM, CPM & KPH Calculator
Enter your numbers, see every formula work in real time — or just convert directly between the three units.
Quick answer
WPM, CPM and KPH all measure the same underlying thing — how many characters you type per unit of time — at three different scales. CPM = WPM × 5. KPH = WPM × 300. The calculator below does the arithmetic; the sections after it explain exactly why those numbers are what they are.
The calculator
Use whichever tab matches what you have. If you just finished a typing test, enter its raw numbers below. If you already have a WPM, CPM or KPH figure from somewhere else and just need it in another unit, use Quick convert — typing into any one field updates the other two immediately.
The formulas
Every typing-speed figure ultimately comes from the same three raw numbers: how many characters were typed, how many of them were wrong, and how long it took. A word, for measurement purposes, is a standardized 5 characters — not a real dictionary word — which is what makes WPM comparable across completely different sentences.
Gross WPM
Gross WPM = (characters typed ÷ 5) ÷ minutes elapsed
Counts every character, correct or not.
Net WPM
Net WPM = (correct characters only ÷ 5) ÷ minutes elapsed
Counts only what was typed correctly — the number HeroTyping leads with everywhere.
CPM
CPM = characters typed ÷ minutes elapsed
The raw character rate, before it's normalized into 5-character words.
KPH
KPH = CPM × 60, or WPM × 300
The same character rate, scaled to a full hour — common on data-entry and government tests.
Worked examples
A 1-minute test with 250 characters typed and 5 uncorrected errors: gross WPM is (250 ÷ 5) ÷ 1 = 50. Net WPM is (245 ÷ 5) ÷ 1 = 49. CPM is 250 ÷ 1 = 250. KPH is 250 × 60 = 15,000. All four numbers describe the exact same one-minute run — just at different scales and with a different treatment of the five mistakes. Try plugging these same numbers into the calculator above to see it match.
Gross WPM vs. net WPM
Gross WPM answers “how fast were your hands moving,” full stop — mistakes included. Net WPM answers “how fast could you produce correct text,” which is the number that matters for almost every real use. A typo you have to notice and fix costs real time that gross WPM doesn't account for. The full breakdown, including why two sites can disagree on net WPM specifically, is in how WPM is calculated.
What CPM measures
CPM (characters per minute) is WPM's more granular sibling — the same measurement, just not yet divided into 5-character “words.” It's most useful when the text itself isn't really prose: numeric entry, product codes, or any data-entry work where talking about “words” doesn't make much sense but counting characters still does.
What KPH measures
KPH (keystrokes per hour) is CPM scaled up to a full hour instead of a minute. It shows up most often in data-entry and government job postings, where an hourly throughput target is a more natural way to describe the job than a per-minute one. See the data entry typing test guide for how real KPH requirements are typically framed.
Conversion relationships
| From | To | Formula |
|---|---|---|
| WPM | CPM | CPM = WPM × 5 |
| CPM | WPM | WPM = CPM ÷ 5 |
| CPM | KPH | KPH = CPM × 60 |
| KPH | CPM | CPM = KPH ÷ 60 |
| WPM | KPH | KPH = WPM × 300 |
| KPH | WPM | WPM = KPH ÷ 300 |
Common mistakes
Comparing a WPM score to a KPH requirement without converting
They're different units measuring the same thing. A job posting asking for 8,000 KPH is asking for about 27 WPM, not a separate, higher bar — always convert to compare.
Reporting gross WPM as if it were net WPM
Gross counts every keystroke, mistakes included; net counts only what was typed correctly. The two can differ by 10+ WPM on an error-prone run, so always say which one you mean.
Using a 15-second burst to estimate a full working shift's output
Short bursts run faster than sustained typing — fatigue and re-reading eat into a longer session. A 5-minute or longer sample is far closer to a real, sustained rate.
Treating CPM as if it includes only correct characters
CPM here (and in almost every calculator) is raw character throughput, not accuracy-adjusted — it's the character-level version of gross WPM, not net.
Methodology
This calculator uses the same 5-characters-per-word convention and the same correct-characters-only net WPM formula as HeroTyping's own typing test — nothing here is a separate, invented standard. Accuracy is calculated as correct characters divided by total characters typed, matching the number shown on every HeroTyping results screen. Where a job posting or exam uses a different formula (some subtract a flat error penalty from gross WPM instead), that difference is explained above rather than silently papered over.
Ready to generate your own numbers instead of hypothetical ones? Take a typing test, work on the specific gap between your gross and net score with the accuracy guide, or start from the beginning with structured lessons.
FAQ
How do I convert WPM to KPH?
Multiply WPM by 300. That's because a "word" is a standardized 5 characters, and there are 60 minutes in an hour, so WPM × 5 × 60 = WPM × 300. 40 WPM is 12,000 KPH; 60 WPM is 18,000 KPH.
How do I convert CPM to WPM?
Divide CPM by 5. CPM is the raw character rate; a "word" is defined as exactly 5 characters for measurement purposes, so dividing by 5 converts one into the other directly.
Is a higher KPH always better than a lower one?
Only if accuracy holds up. KPH here measures raw throughput, the same way gross WPM does — a very high KPH with a high error rate isn't actually more useful output than a moderate KPH typed accurately. Check accuracy alongside it, not instead of it.
Why does this calculator's net WPM differ slightly from another site's?
Some sites subtract a flat error penalty from gross WPM instead of simply excluding incorrect characters from the count (the method used here and in HeroTyping's own typing test). Both are legitimate, standard formulas, but they can produce different numbers for the identical run — see how WPM is calculated for a worked comparison.
Sources & references
Last updated 2026-09-25.