Practice adaptively targeted words, type real short stories, or study real dictionary words one letter at a time from F/J outward. Just start typing, no click needed.
Every letter key is visible from the moment the page loads, not just the ones you happen to mistype. Each key is colored by its own error rate: mistakes on that key divided by how many times you have typed it, from gray (untouched) through green, yellow, and red (mostly wrong). The heatmap updates after every keystroke, so you can watch a weak key turn red in real time instead of waiting for a summary at the end.
The text itself never ends. New words are generated and appended in the background as you approach the end of what is currently loaded, so there is no fixed word count to finish. Practice for ten seconds or ten minutes, the heatmap keeps accumulating either way. Restart clears the current run's timer, text, and session stats, but not the heatmap itself: that is lifetime progress, saved in your browser so it is still there next time you visit.
If you stop typing for a few seconds, the timer pauses automatically instead of quietly padding your elapsed time. WPM and accuracy are based only on time spent actively typing, so stepping away mid-session does not drag your numbers down.
A five-second sprint at an unsustainable pace should not become your permanent Best WPM, so a run only qualifies once it reaches 10 seconds, 20+ keystrokes, and 90%+ accuracy. Saved in your browser next to the current session's stats, with a brief highlight the moment you beat it.
A key earns a gold ring and a ⭐ once you have typed it at least 15 times with an error rate of 5% or lower. Both the sample size and the accuracy bar have to be cleared together, so a key you have only tried twice cannot look mastered just because both attempts happened to be correct. Like the rest of the heatmap, this is lifetime data, not reset by Restart. Use “Reset all-time progress” below the heatmap if you want to clear it and start over from a blank keyboard.
Net WPM uses the standard 5-characters-per-word convention:
Accuracy is the share of keystrokes that matched the expected character on the first attempt: (keystrokes − mistakes) / keystrokes × 100. Backspace is disabled, so there is no way to quietly fix a mistake before it counts. Every keystroke is scored exactly once, permanently.
Practice word selection starts uniformly random, since there is no typing history yet to act on. From then on, each word's odds of being picked shift based on two things per letter it contains: how long it has been since that letter last came up (exploration: keys you have not touched in a while get surfaced sooner) and your error rate on it (reinforcement: keys you get wrong often show up more, even if you typed them recently). Once any key has at least 5 attempts, the single key with your worst current error rate becomes the focus letter, shown live in the Focus stat above the typing box and marked with a 🎯 on the heatmap, and about 90% of the words you get come straight from a pool restricted to ones containing it, a hard rule rather than a weighting, until your accuracy on it improves enough that a different key takes over. The other ~10% of draws use the normal exploration/reinforcement mix instead, so other keys still get some practice too.
Story mode trades that adaptive targeting for real sentences: short public- domain fables, typed in order with normal capitalization and punctuation. The text is fixed, so it cannot be reshuffled around your weak keys the way Practice mode can; the heatmap still tracks every letter you type (case-folded: a capital and lowercase version of a key share one tile), it just is not driving what comes next. Once you reach the end of the fables they loop back to the start, so there is still no fixed finish line.
Curriculum mode takes a structured approach instead of a reactive one: it studies one letter at a time, starting with F, then J, the home-position anchors for each index finger. Word selection reuses Practice mode's exact adaptive engine, biasing roughly 90% of draws toward real words containing the current focus letter, pulled from a dedicated pool of about 10,000 common English words (family, giraffe, after for “f”) rather than an invented alphabet limited to only the letters studied so far. A letter stays the focus, shown dimmed on the heatmap for everything not yet reached, until it clears the same mastery bar as the heatmap's gold star (15+ attempts, 5% or lower error rate). Clearing that moves the curriculum to the next letter, chosen by physical distance from F and J so it studies outward from the home row rather than at random. The Focus stat above the typing box names the current letter and, on hover, lists every letter mastered so far out of 26; once all of them are mastered, Curriculum mode switches over to full adaptive word practice across its whole dictionary, the same engine Practice mode uses on its own smaller word list.
Backspace is off entirely in all three modes rather than merely discouraged. With no way to undo a mistake, the character you actually pressed is always what gets scored, which is what the heatmap is reading from either way.
Does the text ever end?
No. New words are generated continuously as you type, so you can practice for as long as you want without hitting a fixed word limit. Restart clears the current run's timer, text, and session stats, but not the heatmap or best WPM, which are saved across sessions.
What happens if I stop typing for a while?
The timer automatically pauses after a few seconds of inactivity, shown as "(paused)" next to the Time stat. WPM and accuracy are calculated only from time spent actively typing, so a pause does not silently drag your numbers down.
How does the keyboard heatmap work?
Every letter key is shown from the start, colored by your error rate on that key: gray means untouched, green means you rarely miss it, yellow means it gives you trouble, red means you get it wrong most of the time you reach for it. It updates after every keystroke, not just at the end of a run.
How are words chosen in Practice mode?
Word selection starts uniformly random. As you build up attempts, two things shift the odds per letter a word contains: how long since that letter last appeared (exploration) and your error rate on it (reinforcement). On top of that, once any letter has at least 5 attempts, the single letter with your worst current error rate becomes the "focus" letter (shown in the Focus stat and marked with a 🎯 on the heatmap), and words containing it are picked far more often until your accuracy on it improves and a different letter takes over. Every word still keeps some chance of appearing either way.
What is Story mode?
A second mode with real sentences instead of a word bank: short public-domain fables, typed in order with normal capitalization and punctuation, looping back to the start once you reach the end. The text is fixed, so it does not adapt to your weak keys the way Practice mode does, though the heatmap still tracks everything you type.
What is Curriculum mode?
A structured, one-letter-at-a-time mode instead of Practice mode's reactive targeting. It starts by studying F, then J, the home-position anchor keys for touch typing, then moves outward to the next physically-nearest key once the current one is mastered. It draws from a pool of roughly 10,000 real, common English words containing the focus letter (e.g. family, after for "f"), not an invented alphabet restricted to only the letters studied so far.
How does Curriculum mode move to the next letter?
Once the current focus letter clears the same mastery bar as the heatmap's gold star (15+ attempts, 5% or lower error rate), the curriculum advances to the next letter, chosen by physical distance from F and J so it studies outward from the home row rather than jumping around. Already-mastered letters and the current focus letter show at full brightness on the heatmap; letters not reached yet show dimmed. The Focus stat above the typing box names the current letter, and its tooltip lists every letter mastered so far. Once all 26 are mastered, Curriculum mode switches over to full adaptive word practice across its whole dictionary, the same engine Practice mode uses.
Do I need to click the text before typing?
No. Typing anywhere on the page automatically focuses the input, as long as you have not deliberately focused another control like a button. Clicking directly on the text still works too.
Why is backspace disabled?
So every keystroke is scored exactly once, honestly. There is no way to quietly fix a mistake before it counts. This matches how the WPM, accuracy, and heatmap numbers already treat a mistake as permanent the moment it happens.
How is WPM calculated?
WPM uses the standard convention of 5 characters per word. Net WPM = (total characters typed / 5) / minutes elapsed, minus the error count divided by minutes elapsed. This penalizes mistakes the same way most typing tests do.
How is accuracy calculated?
Accuracy is the percentage of keystrokes that matched the expected character on the first attempt: (correct keystrokes / total keystrokes) × 100.
How does Best WPM work?
A run only sets a new Best WPM once it clears a minimum bar (at least 10 seconds, 20+ keystrokes, 90%+ accuracy), so a short lucky burst cannot record an inflated number. It is saved in your browser and shown next to your current session stats.
What does the gold star on a key mean?
A key is marked mastered once you have typed it at least 15 times with an error rate of 5% or lower. Both the sample size and the accuracy bar have to be cleared together, so a key you have barely tried cannot look mastered from a couple of lucky attempts.
Is my typing data sent anywhere?
No. Everything runs in your browser with plain JavaScript state. The keyboard heatmap and best WPM are saved in this browser's local storage so they persist across visits, but nothing is ever transmitted to a server.