Skip to content
TypeVelo.

Methodology

How WPM and accuracy are calculated

Speed uses the standard 5-characters-per-word convention, and TypeVelo reports it two ways. Gross WPM is every character you typed ÷ 5, divided by elapsed minutes — your raw pace, before any penalty for mistakes. Net WPM counts only correctly-typed characters ÷ 5 per minute, so uncorrected errors pull the number down; this is the headline figure on your results, because it reflects usable, accurate speed rather than reckless keypressing.

Accuracy is correct keystrokes ÷ total keystrokes. Backspacing is allowed and counts as keystrokes: fixing a mistake improves your net WPM by turning a wrong character right, but the extra keypresses still cost you time, which is exactly the real-world trade-off between speed and precision. Results also note the keyboard layout the score was measured on (QWERTY unless your input indicates otherwise), since raw WPM isn't directly comparable across different layouts.

Where test passages come from

No practice text anywhere on TypeVelo is copied from a copyrighted source. It comes from three places, all of them either generated on your own device, written originally for this site, or genuinely public-domain:

Why every drill states what its text contains

Each drill page prints, above its typing surface, the exact characters and sequences its practice text is guaranteed to include. That line is not written by hand. It is generated from the same fields a build-time check asserts against real generated passages, across many random seeds and at the shorter mobile length, so a drill cannot be published claiming to train something its text does not contain.

That check exists because the site failed it. When the drill corpus was audited on 31 August 2026, nine of the original fifteen drills were generating text that did not match their own description: the left-pinky drill was emitting a run of the single letter A, because that was the only word in the shared list spelled using only Q, A and Z; the index-finger drill was emitting the word "by" repeatedly for the same reason; and the right-pinky drill was producing ordinary prose containing none of the semicolons, slashes, zeros or hyphens it was supposed to be training. Every drill now declares what its passage must contain, and the build fails if any generated passage does not.

If a copyrighted passage is ever added in future, its source and licensing would be recorded here first — but as of now, nothing on the site relies on one.

Progress data

All practice progress and personal-best history is stored locally in your browser (localStorage) — never sent to or stored on our servers. See the privacy policy for detail.