Scoring Methodology
These formulas are the ones implemented in the typing engine. They are not an official employment score and they are not the only method used on the web.
Standard word
One standard typing word equals five characters, including spaces and punctuation. That constant is 5 everywhere on this site.
Elapsed time
Elapsed milliseconds = performance.now() at the current frame minus performance.now() at the first typed character. Remaining time = selected duration minus elapsed time. The visible countdown is redrawn with requestAnimationFrame. Hidden tabs still accumulate elapsed time because the start stamp does not pause. Browser scheduling is not claimed to be perfectly precise.
Character matching
Each character in the current input is compared with the same index in the reference passage. A match increments the correct count. Any other character, including extra characters beyond the passage, increments the incorrect count. Metrics use the current buffer, so a backspaced error disappears from the incorrect count. Time spent correcting remains in elapsed minutes.
Formulas
Net WPM = (correct character positions / 5) / elapsed minutes
Accuracy = (correct positions / typed character count) × 100
Accuracy is capped between 0 and 100. WPM is not shown below zero. If typed count is 0, accuracy displays as empty rather than dividing by zero. WPM and accuracy are rounded to one decimal place for display.
Early end
If you press End Test, WPM uses actual elapsed time, not the full selected duration. The result is labeled as an early-ended attempt. Those records can be saved, but they are omitted from the main average, best, and chart unless you check the include box on the results page.
Worked example (not a visitor result): 240 correct characters in 60 seconds gives net WPM (240 / 5) / 1 = 48. See also How WPM and Typing Accuracy Are Calculated and the typing test.