Typing speed is typically measured in WPM — words per minute. But WPM has a meaningful flaw: what counts as a "word" varies, and the standard definition (5 characters = 1 word) means two people with the same WPM score may have very different actual throughput depending on what they're typing.
CPM — characters per minute — is the more precise underlying metric. Here's how to think about both, and why it matters for developers specifically.
WPM: The Standard Metric
WPM = (total characters typed / 5) / minutes elapsed
The division by 5 converts character count to a "word" count using the standard 5-character word definition. This normalises for word length, making WPM scores comparable across different text samples.
WPM is net WPM if error correction is included:
Net WPM = ((total characters - errors) / 5) / minutes
Most typing tests report net WPM, deducting for uncorrected errors.
CPM: The Underlying Metric
CPM = total characters typed / minutes elapsed
CPM is the raw throughput measure. For the same net WPM score:
- A person typing short words (avg 3 chars) will have lower CPM than net WPM × 5 implies
- A person typing long words (avg 8 chars) will have higher CPM
For developers, CPM is often more relevant. Code contains:
- Long variable and function names
- Method chains and property accesses
- Punctuation-heavy constructs (
{,},=>,?.,!==) - Camel case, snake case, kebab case identifiers
These patterns shift the character-to-word ratio significantly compared to natural English prose.
The Conversion
WPM × 5 = CPM (approximately)
At 60 WPM → ~300 CPM
At 80 WPM → ~400 CPM
At 100 WPM → ~500 CPM
At 120 WPM → ~600 CPM
The conversion is approximate because WPM already normalises for word length. CPM for a given WPM will vary based on the actual word lengths in the test.
Why Developers Should Care About CPM
When writing code, you're not typing prose. Consider:
getUserPreferencesByAccountId(userId).then(prefs => {
return prefs.notifications?.emailEnabled ?? false;
});
The average "word" length here is much longer than 5 characters. A developer's WPM score on prose text may underestimate their effective throughput on code.
Conversely, developers type a lot of special characters — {, }, (, ), ;, :, => — which require modifier keys and slow down CPM relative to natural language typing.
The practical implication: track CPM when you want to measure actual keystrokes, not WPM. Use WPM for comparing across different types of text.
Benchmark Ranges
| Category | WPM | CPM |
|---|---|---|
| Beginner | < 40 | < 200 |
| Average typist | 40–60 | 200–300 |
| Good (professional) | 60–80 | 300–400 |
| Fast | 80–100 | 400–500 |
| Very fast | 100–120 | 500–600 |
| Expert | 120+ | 600+ |
Average knowledge worker: ~40 WPM. Average developer: ~55–70 WPM (higher from constant keyboard use). Professional typists and transcriptionists: 80–100+ WPM.
How to Test Both
The Typing Speed Test at Ultimate Tools shows both WPM and CPM in real time as you type.
- Start typing when you load the page
- The test tracks your keystrokes, timing, and errors
- Results show net WPM (errors deducted), gross WPM, CPM, and accuracy percentage
- No account needed, no data stored
Run a few sessions to get your baseline. Improvement tends to plateau until you deliberately target specific weak spots — common patterns (double letters, awkward bigrams like "th" or "ion") and problem characters (numbers, brackets, punctuation).
Improving CPM for Code-Specific Typing
If you're specifically trying to improve code typing speed:
-
Learn your keyboard layout's bracket keys —
{,[,(and their shifted variants are used constantly in code - Practice identifier patterns — camelCase, snake_case, and PascalCase each have different rhythm
- Use an IDE with strong autocomplete — reducing the characters you actually need to type is as valid as typing them faster
- Practise on code-specific typing tests — prose typing tests don't train the patterns you use in code (most typing speed tests use English prose)
Test your current speed: Typing Speed Test — WPM & CPM Free
If you're looking for other developer productivity tools, Ultimate Tools also has a Word Counter and Markdown to HTML Converter that run entirely in the browser.
Top comments (0)