How to play
Pick a level from the numbers at the top; all ten are open. Each shows its language, a title and a note on what to watch for, then the snippet drawn as tiles on a pond. A duck stands on the next character. Typed characters light up, a slip turns its tile red, and the rest stay faint.
On a computer the keys are ready when the level loads; if the pond loses focus, click Click to type. The clock starts on your first key.
- Enter ends a line, blank lines included.
- Backspace rubs out a character, Ctrl+Backspace or Alt+Backspace a word, Cmd+Backspace the line so far.
- Esc starts the level over.
- Indentation is placed for you, so the duck hops over it and there’s no Tab to press.
You can type past a slip, but the snippet only finishes when every character is right, so a red tile left behind means backspacing to it. The status line shows the mode (TYPING, BACKSPACE, SOLVED or TRY AGAIN), the line you’re on, the clock, speed, accuracy and errors.
A level is solved when the snippet is typed exactly at 95% accuracy or better. Speed decides the medal: gold at 40 words per minute or faster, silver from 30, bronze below. Under 95%, the card says Typed through, but not clean enough and offers Try again. The score is errors, fewest wins, and Copy share link shares your levels solved and total errors.
What you’ll learn
Ten short snippets, one per language, each written for the game:
- JavaScript, Sum a shopping cart:
reduce, brackets on their own lines and a template literal. - TypeScript, A typed duck: an interface with an optional field and
??. - Python, Count the words: nested loops, a dictionary and an f-string.
- Go, A method on a struct: a pointer receiver and
+=. - Rust, Filter and sum: an iterator chain with a closure.
- SQL, Orders with more than one item: a join,
GROUP BYandHAVING. - Bash, Back up the notes:
set -euo pipefail, quoted variables and$(...). - CSS, A card that goes two-up: a grid and a media query.
- HTML, A search form: quoted attributes and a self-closing input.
- JSON, A plugin config: nesting, with no trailing comma.
That’s the part prose tests rarely stress: brackets, quotes, semicolons, => and $, mostly on the number row and the keyboard’s right edge.
Good to know
- Speed counts correct characters. WPM is correct characters divided by five, the standard word length in typing tests, per minute from your first key to your last. Line breaks count; the placed indentation doesn’t.
- Rubbed-out keys still count. Accuracy is correct characters over every key that put a character on screen. Backspace is free, but whatever you erase and retype was already counted, so a slip noticed three characters late costs four errors.
- Progress stays in your browser. Your fewest errors and fastest speed per level are saved in localStorage, and the level map shows each medal.
- On a phone, the game warns that autocorrect can rewrite your typing and suggests a real keyboard. Curly quotes count as straight ones.
- Other code typing sites. Monkeytype is a general typing test with timed, word-count and quote modes and detailed stats; its code languages are lists of keywords and names, not multi-line code. typing.io has you type through real open-source files. SpeedCoder covers 10+ languages, maps your missed keys and takes your own code. Code Typing is smaller: ten fixed snippets, no account, and a medal per level.
Questions
What is a good typing speed for programmers?
Around 40 words per minute on real code is a good speed, and it’s this game’s gold medal. Symbols make code slower to type than prose, so most people score lower here than on a prose test. Keep accuracy at 95% or better, too.
Does typing speed matter for programming?
Less than it seems, since most programming time goes to reading, thinking and debugging. What matters is typing without looking at the keys, so your attention stays on the problem, and typing symbols accurately, since a missing bracket costs more than a slow minute.
How do I type faster?
Learn to touch type first, then build speed on accuracy, not the other way around. Drill the symbols you use most until you stop looking for them, keep sessions short and regular, and slow down whenever errors climb.
How is WPM calculated?
WPM is correct characters divided by five, divided by the minutes taken. Five characters is the standard word length in typing tests, so 200 correct characters in a minute is 40 WPM, whatever the words are.