Practice a passage you choose
- Paste or type a reference, or open one UTF-8 TXT file. Imported CRLF/CR line endings become line breaks; an optional UTF-8 file marker is removed.
- Choose English or Tamil and start practicing. This moves to your typing box without starting a timer or erasing existing text.
- Check accuracy. Select a mismatch to move to that character, correct it, and check again. Continue typing resumes at the end of incomplete text.
Accuracy and completion
Accuracy is matching characters divided by typed characters. A short correct prefix may score 100% while unfinished; the completion message, remaining characters and reference coverage make that clear. Characters are native Unicode grapheme clusters. Canonically equivalent NFC values match without changing your text. Spaces, case, punctuation and line breaks matter. Inserting or deleting a character shifts later positions; this comparison does not realign them or check spelling and grammar. It measures final text, not keystrokes, and has no WPM score.
Your text stays under your control
Both fields remain editable. Imports replace only the reference; your typing is kept. Invalid or interrupted imports keep the existing text. Editing, resetting, choosing another language or beginning another import cancels an unfinished file read. Clear my typing keeps the reference; Reset everything clears both. Edits invalidate old results and exports until you check again.
Everything runs locally, with no upload, account or saved progress. TXT downloads preserve the current field values, subject to browser newline normalization. Review JSON includes both texts, calculations and every mismatch. The on-page review shows 20 mismatches at a time with first, previous, next and last controls. User markup stays literal text; clipboard access is optional.
Limits and supported files
Each field supports up to 5,000 graphemes and 20,000 UTF-16 units, with at most 256 units per grapheme. TXT import is limited to 64 KiB and valid UTF-8 plain text; PDF, Word, binary and legacy-encoded files are not supported. Use a current browser with native Unicode segmentation. Native grouping may vary between browser versions. Try the timed speed test for supplied passages.