Build accuracy before speed
- Choose a language and exercise. The two-line exercise includes an actual newline.
- Type the reference at your own pace. Check accuracy to see mismatches and incomplete work.
- Correct the text and check again, or save the review. Try the separate typing speed test when ready for timing.
What the percentage means
Accuracy is correct-position graphemes ÷ typed graphemes × 100. Matching uses canonical NFC-equivalent values, without changing input. Grapheme clusters group combining signs and emoji using native Intl.Segmenter; a Tamil letter with a sign can be one cluster. Case, spaces, punctuation and newlines matter. Browser Unicode data can vary.
Empty input has no accuracy, displayed as a dash. A perfectly typed short prefix can have 100% accuracy while still missing much of the reference; correct reference coverage and missing suffix show incomplete work. Extra text is mismatched. Inserting or deleting a cluster shifts subsequent positions: this review does not realign text with edit distance or judge spelling, grammar or meaning. Spaces, tabs and line breaks have readable labels in the mismatch review.
Private review and limits
Native local processing; no upload, timing, accounts or saved progress. Deleted mistakes are absent from final-text accuracy, so this is not keystroke accuracy, a certification or proctored test. Typed or pasted text can be reviewed; no WPM score is calculated here. Changing settings clears the typed exercise and old results; editing text invalidates exports until checked again. Invalid input remains editable. Original TXT preserves the current textarea value, subject to browser CR/CRLF normalization.
Limits: 20,000 UTF-16 units and 5,000 grapheme clusters, with at most 256 units per cluster. JSON contains the reference, your exact text, calculations and every mismatch. Keep downloaded/copied files private. The review shows 20 mismatches at a time with first, previous, next and last controls; JSON preserves every mismatch. Clipboard is optional. Valid Unicode, native segmentation and stated size caps are required; unsupported browsers show an explicit error. Reset clears the current exercise/results. No user HTML is rendered or executed.