Repository navigation
Typing Metrics
-
WPM (Words Per Minute) - the standard speed metric. One "word" = 5 characters (including spaces), not a literal dictionary word.
WPM = (characters typed / 5) / minutes elapsed -
CPM (Characters Per Minute) - the same idea, but counting raw characters instead of standardized "words." Roughly
CPM ≈ WPM x 5.CPM = characters typed / minutes elapsed -
Gross WPM - raw speed, counting everything typed, including mistakes.
Gross WPM = (total keystrokes, excluding backspaces / 5) / minutes elapsed -
Net WPM - gross WPM with a penalty subtracted for errors.
Net WPM = Gross WPM − (uncorrected errors / minutes elapsed)
-
Accuracy - percentage of characters typed correctly.
Accuracy = (correct keystrokes / total keystrokes attempted) × 100 -
Uncorrected errors - mistakes still present in the final text.
count of incorrect characters remaining at finish -
Corrected errors - mistakes made but fixed (e.g. via backspace) before finishing.
count of incorrect keystrokes that were later backspaced before finishing -
KSPC (Keystrokes Per Character) - This requires example, it's hard to describe in words alone.
KSPC = total keystrokes / length of final correct textEx: Say you want to type the word "the" (3 characters). Perfect run: you press t, h, e - 3 keystrokes for 3 characters. KSPC = 3/3 = 1.0 Non-perfect run: you press t, h, x (oops), backspace, e - 5 keystrokes for the same 3-character result. KSPC = 5/3 ≈ 1.67
-
Consistency - how steady your typing speed is over time, versus bursts and slowdowns.
Consistency = 100 - (standard deviation of WPM across time buckets, normalized to 0–100) -
Burst/Peak WPM - the fastest momentary speed within a short window of a longer test.
Burst WPM = max(WPM computed over any sliding N-second window) -
Dwell time - how long a key is physically held down before release.
Dwell time = keyupTimestamp - keydownTimestamp(per keystroke) -
Flight time - the gap between releasing one key and pressing the next.
Flight time = next keydownTimestamp - previous keyupTimestamp(per consecutive pair) -
Digraph/bigram speed - how fast specific two-letter combinations (like "th") are typed - useful for spotting which letter pairs slow someone down.
Digraph speed(pair) = average(keydownTimestamp[i] - keydownTimestamp[i-1])across all occurrences of that letter pair