Words Per Minute
TypeCafe uses the standard typing-test convention: 1 word = 5 typed characters. Spaces and punctuation count as characters when they are part of the prompt.
- Raw WPM:
(typed characters / 5) / elapsed minutes. - Timed tests: elapsed time is the configured test length, even if the last keystroke happened earlier.
- Untimed tests: elapsed time runs from the first recorded keystroke to the last recorded keystroke.
- Live chart WPM: the chart reads real keystroke timing over a trailing 1s window, shrinking only as low as 0.2s near the start of a test.
Very tiny samples are hidden instead of exaggerated. A WPM sample must have at least 1s of typing and at least 5 keystrokes before TypeCafe treats it as meaningful.
Accuracy
Accuracy is keystroke accuracy: correct keystrokes / total typed keystrokes. If you type 100 characters and 92 match the expected text, accuracy is 92%.
Backspace removes that position from the score card's final speed and accuracy. The original attempt still counts in your per-key evidence, so correcting a miss cleans up the result without hiding the weakness from your coach.
Per-Key Heatmap
The keyboard heatmap shades each physical key by your accuracy on it. Because there is one physical key per cell, characters that share a key fold together: a capital R counts toward the r key, and shifted symbols count toward their base key (!→1, ?→/, :→;). So the r cell reflects every time you reached for that key, shifted or not.
Untyped keys read as 100% (neutral) rather than alarming red, so the map only lights up where there is real evidence.
Net WPM
Net WPM is the canonical "WPM" across TypeCafe - the headline number on score cards, the figure leaderboards and personal bests rank by, and what your progress trends and improvement measure. Raw WPM is shown beside it for reference, never as the headline.
((correct keystrokes - incorrect keystrokes) / 5) / elapsed minutes
The value is clamped at 0. A fully wrong run can still have raw speed, but it has 0 net WPM. Each saved test's sortable score and each current daily rollup store net WPM directly; raw speed and accuracy remain available for explanation and compatibility.
Consistency
Consistency measures how steady your pace was across the WPM chart samples. TypeCafe computes the coefficient of variation of the sampled WPM values, then converts it to a 0-100 score:
(1 - standard deviation / mean WPM) * 100, clamped to the 0-100 range.
100 means a perfectly even pace. Lower values mean the run was more bursty, stop-start, or uneven.
Progress & Improvement
Progress periods use your local calendar. For example, 7d means today plus the previous six local dates, not a trailing 168-hour slice that can touch eight dates.
The WPM chart gives every practiced day one vote. Each dot is that day's median net WPM, and the solid line is a straight least-squares trend through those daily medians.
The progress headline compares the first practiced day in the selected period with the latest practiced day. Skipped dates do not count as zero and do not block a comparison: one practiced day builds the baseline, and the second can show a change.
The dashed daily best trend is a separate straight fit through each day's highest ranked net WPM. Hover or focus a daily dot to see its exact median, daily best, test count, average accuracy, and average consistency.
Daily averages are built by calculating net WPM for each test first, then averaging those net values. TypeCafe does not estimate net speed from separate daily averages.
Score cards may show a 30-day improvement after save. That requires at least 3 prior ranked tests in the last 30 days, so the comparison has enough evidence to be useful.
Coach Thresholds
The coach is heuristic-first: no paid model and no hidden black box. These thresholds live in code and are documented here so they can be tuned honestly.
- Accuracy-limited: recent accuracy below 94% while WPM is not clearly improving.
- Confidence-limited: recent accuracy above 98% with consistency below 70%.
- Stance window: the last 30 days, with at least 5 tests.
- Flat trend: a WPM delta within 1 WPM counts as not clearly moving.
- Plateau: a 21-day trend whose projected change is inside a 1.5 WPM band, with at least 6 tests.
Diagnosis Thresholds
Diagnosis only speaks when there is enough evidence. Short tests and one-off slips should not become fake coaching.
- Slow transitions: a letter pair must appear at least 4 times and be at least 1.3x slower than your overall transition pace.
- Recent, not lifetime: per-key accuracy and per-pair speed are rolling windows - roughly your last 500 attempts on a key and 200 occurrences of a pair. Older samples fade out proportionally, so the coach reflects how you type now, and a weakness you fix stops being flagged once recent typing proves it.
Ranked and Unranked Runs
Ranked runs feed leaderboards, personal bests, challenge boards, improvement leagues, and percentile brags. Unranked runs still show a result, but they do not compete.
Saved speed, accuracy, consistency, and score are replayed on the server from the full keystroke and backspace timeline. The browser does not submit those summary numbers as facts.
- Custom-length tests are unranked.
- Tiny runs are unranked: a ranked test needs at least 3s of typing and at least 10 keystrokes, so a stray tap never inflates a streak or trend.
- Impossible keystroke timelines are unranked by basic sanity checks.
- Ranked boards query only rows marked ranked.
The anti-cheat checks are intentionally basic: they catch obvious machine-like timelines, not every possible abuse case. Stronger verification waits until there is a population worth protecting.