Typing Speed Test

Choose a practice passage from ChaosLens's eight default languages and measure net speed, gross speed, accuracy, uncorrected errors, corrections, and completion progress locally in your browser.

Test settings and live input

Choose one of the eight ChaosLens passage languages. The default language is English.

Longer durations use longer passages; finishing the passage or reaching the time limit ends the test.

Timing begins with the first grapheme. Input-method composition is supported; pasting and dragging are blocked.

Time remaining
Graphemes typed / target
0/0
Corrections
0
Current phase
Waiting
Completion0%
Choose a passage language and duration, then select Start new test.
Result overviewWaiting for a test
Net typing speedChoose a passage language and duration, then select Start new test.
Gross speed
Accuracy
Uncorrected errors
Corrections
Active time
Progress

English, Spanish, and German display WPM; Simplified Chinese, Traditional Chinese, Korean, Japanese, and Thai display CPM. Scores across different languages, passages, and input methods should not be compared directly.

Net typing speed over test time

Net speed per second

After valid input begins, this area shows the net speed for each second in the current unit, along with the latest value, peak, and sample count.

Learn more

Method, formula, and result definition

English, Spanish, and German: gross WPM = total input grapheme clusters ÷ 5 ÷ elapsed minutes. Simplified Chinese, Traditional Chinese, Korean, Japanese, and Thai: gross CPM = total input grapheme clusters ÷ elapsed minutes. Net speed = max(0, gross speed − uncorrected errors ÷ elapsed minutes). Accuracy = correctly positioned grapheme clusters ÷ total input grapheme clusters × 100%.

Timing uses the unrounded millisecond value from performance.now(). All decisions and calculations use the original values; speed and percentages are rounded only for display.

With 300 correct graphemes typed in 60 seconds, a CPM language should show 300 CPM. With 250 correct graphemes in a WPM language, it should show 50 WPM. One hundred correct graphemes and ten uncorrected errors produce 90.91% accuracy.

How to use and limitations

Passage length, difficulty, language, CPM/WPM conventions, and input methods are not directly comparable; composition is scored only after the final text is committed; Thai combining characters use Unicode grapheme clusters; pasting and dragging are blocked; focus loss pauses while preserving progress; short passages fluctuate more.

How is typing speed calculated?

English, Spanish, and German use WPM based on five grapheme clusters per standard word; Simplified Chinese, Traditional Chinese, Korean, Japanese, and Thai use CPM based on Unicode grapheme clusters. Net speed then subtracts the per-minute penalty for uncorrected errors, with a floor of zero.

Which languages use CPM or WPM?

English, Spanish, and German use WPM. Simplified Chinese, Traditional Chinese, Korean, Japanese, and Thai use CPM. The units use different conventions, so their numbers should not be compared directly.

Why does the input method not mark an error immediately?

Some input methods are still composing syllables, characters, or candidate words. The tool waits for compositionend and the final input text before comparing it, so an intermediate candidate is not counted as an error.

Tool information and sources

All eight built-in passages, input, timing, and statistics are processed locally in this browser. Nothing is uploaded, no remote API is called, and no URL or local storage is written.

No third-party runtime code or assets are reused. The algorithm and interface are independently implemented; external links explain browser APIs and timing standards only.

Standards and method sources