Home · Articles

How WPM and Typing Accuracy Are Calculated

This article describes the formulas implemented in Type Pace Lab’s scoring script. If another website uses a different error penalty, its WPM will not match these numbers even when the typing looks the same. The canonical short version is the scoring methodology page. The typing test is the working demonstration.

Five-character standard words

English words are unequal. “A” is one letter; “responsibility” is many. To compare passages, many typing tests treat five characters as one standard word. Characters include letters, spaces, and punctuation. Type Pace Lab uses that constant everywhere: gross WPM, net WPM, and the worked examples below.

If you type 100 characters, you have produced 20 standard words, whether those characters were twenty copies of “hello” fragments or a mix of short words and commas. That can feel unfair if you think in dictionary words. It is consistent if you think in keystrokes.

Time measurement

The clock starts at the first committed character, not on page load. Elapsed milliseconds equal performance.now() now minus performance.now() then. Remaining time equals the selected duration minus elapsed time. The display updates through requestAnimationFrame. A one-second interval counter is not used as the source of truth.

Elapsed minutes equal elapsed milliseconds divided by 60,000. If a test is ended early, those minutes are the actual elapsed minutes, not the planned length. Hidden tabs do not pause the start stamp. The site does not claim perfect precision under aggressive background throttling.

Correct and incorrect positions

Walk the current input from index 0. If input[i] equals reference[i], that position is correct. Otherwise it is incorrect, including the case where you typed extra characters past the end of the reference. The counts always describe the buffer as it is now.

Gross WPM

Gross WPM = (typed character count / 5) / elapsed minutes. It ignores whether the characters matched. It answers “how much was typed,” not “how much matched.” If elapsed minutes are 0, gross WPM is kept at 0 rather than exploding.

Example: 300 typed characters in 60 seconds.
Gross WPM = (300 / 5) / 1 = 60.0

Net WPM

Net WPM = (correctly matched character positions / 5) / elapsed minutes. This is the large number on the result sheet. It cannot go below 0 in the display. Rounding is to one decimal place.

Example: 240 correct characters in 60 seconds.
Net WPM = (240 / 5) / 1 = 48.0

That 48 is explanatory. It is not inserted as a visitor’s score.

Example: 120 correct characters in 30 seconds (0.5 minutes).
Net WPM = (120 / 5) / 0.5 = 48.0

Same net rate, shorter test. Early-ended attempts use this same structure with their real elapsed minutes.

Accuracy

Accuracy = (correct positions / typed character count) × 100. The result is capped between 0 and 100. If typed count is 0, the UI shows an empty state instead of dividing by zero. Display rounding is one decimal place.

Example: 270 correct, 300 typed.
Accuracy = (270 / 300) × 100 = 90.0%

Corrected errors

Suppose you type a wrong letter, see the coral mark, and backspace. That letter is gone from the buffer, so it no longer increments incorrect. Accuracy can rise. Elapsed time still includes the seconds you spent noticing and deleting. Two typists can finish with the same buffer and different WPM if one of them took a longer path to that buffer.

This is not the only method in the world. Some tests keep a running error total that never shrinks. Some subtract a fixed WPM penalty per mistake. Type Pace Lab does not do those things. If you compare scores across sites, compare methods first.

Differences between scoring methods

A site that counts dictionary words will disagree with a five-character site. A site that starts the clock when the page appears will look harsher than one that waits for the first key. A site that pauses when the tab hides will look kinder than this one, which keeps measuring elapsed time.

None of those choices make a test “official.” They make it a particular instrument. Type Pace Lab’s instrument is documented so you can repeat it: same duration, same difficulty, same formulas. Practice drills that are not timed do not emit a WPM score, because there is no elapsed minute to divide by—or, if they did so silently, the number would be misleading.

For taking a test step by step, see How to Take a Typing Speed Test Online. For why a single WPM is not a lifetime grade, see What Is a Good Typing Speed in WPM?

FAQ

Do spaces count?
Yes. They are characters in the five-character word and in the match.
Can net WPM exceed gross WPM?
No. Correct characters cannot exceed typed characters.
Why is accuracy blank at the start?
Nothing has been typed, so the code refuses to divide by zero.
Are results sent to a server?
No. Optional history stays in localStorage on the device.