What you’ll type
Each round is one real, working line of code: a JavaScript reduce that groups records, a fetch call with error handling, a SQL query, a Bash find pipeline, a Go error check, a CSS rule, a regular expression, a Git command and so on. They’re written for this site in plain ASCII, with straight quotes and no tabs, so every character is on a standard keyboard. Texts picks a snippet you haven’t typed recently; Another text skips one you don’t want.
Your result shows WPM and accuracy like any typing test, and the keyboard under it shows which keys cost you mistakes. Watch the right little finger: on a US keyboard it covers the quotes, the semicolon and colon, the square brackets and curly braces, the closing parenthesis, minus, equals and both slashes, almost two thirds of the symbols in these snippets. Turn on Show keyboard before you start to see which finger each symbol needs and which Shift key goes with it.
Why code is harder to type
We counted the characters in the 48 snippets. The symbols that come up most are the double quote (156 times), the period (138), both parentheses (134 each), the equals sign (92), the comma (79), the colon (78), the minus sign (77), the semicolon (58) and > (49), with the curly braces close behind (44 each). On a US keyboard, the double quote, the colon, parentheses, curly braces, >, <, the underscore, |, &, $, % and # all need Shift, pressed with the little finger of the other hand when you touch type.
So expect a lower WPM here than on prose, and compare your code runs with each other rather than with your prose speed. When a snippet goes badly, the missed-keys map usually tells you whether it was the letters or the reach for symbols.
Practicing symbols
- The Symbols and punctuation drill in the Practice tab wraps common words in brackets, quotes and operators, a good warm-up before a round of snippets.
- Stop on errors refuses a wrong key, which forces you to find
{or|properly instead of fixing it afterwards. - Compare your code speed with a one-minute run on the standard typing test now and then: as the gap between the two narrows, your symbol typing is catching up with your letters.
If a key on your keyboard double-types or doesn’t register, check it with the keyboard tester before blaming your fingers. For typing figures and records rather than code, try the data entry typing test.
The 48 code snippets, by language or tool
| Language or tool | Snippets |
|---|---|
| JavaScript | Group records by city, Fetch JSON with error handling, Debounce helper function, Attach click handlers to buttons, Express route returning JSON |
| Python | Number lines of a file, Count the most common words, Filter CSV rows by age, Sort by score then name, Group totals with pandas |
| Bash | Delete old log files, Dated backup archive, Sum a CSV column with awk, Query an API with curl and jq |
| SQL | Top customers by revenue, Raise prices in some categories, Create a users table, Top three salaries per department |
| CSS | Auto-filling card grid, Dark mode custom properties, Button hover state |
| Go | Decode a JSON request body, Context with a timeout, Minimal HTTP handler |
| HTML | Accessible external link, Email input field, Responsive image with srcset |
| Regex | Match an ISO date, Match a US phone number, Match an http or https URL |
| C | Safe string copy in C, Formatted table row in C |
| C# | LINQ query with interpolation, Record type declaration |
| Git | Compact history graph, Start a feature branch |
| Java | Stream filter and collect, Count words with a map |
| JSON | Package manifest, Product record |
| PHP | Filter active users in PHP, Prepared statement with PDO |
| Ruby | Total orders per customer, Print numbered error lines |
| Rust | Square the even numbers, Sum numbers from a file |
| TypeScript | Typed result union, Generic pick function |