Type

Code Typing Challenge

A free code typing test: type real code snippets and get your code WPM plus accuracy on brackets and symbols.

Tap or click here, then start typing

☕ This tool is free forever. If it saved you time, buy me a coffee.

Complete a challenge to see your history here.

Did this help?

Cite this tool

The page date is when this page was last reviewed. The retrieval date is today's date on your device. Check your style guide for details such as italics.

How code WPM is measured

A word is 5 characters, and every character of the snippet counts: letters, symbols, spaces, indentation and line breaks. That is the same convention as a normal WPM test. Code WPM = correct characters ÷ 5 ÷ minutes taken. The clock starts with your first keystroke and stops when you have typed as many characters as the snippet contains.

Scoring compares what you typed with the snippet position by position. A position is correct when the same character is in the same place; a missing or different character is an error. Backspace works, and only your final text is scored, so a mistake you fix costs you time but not accuracy. Accuracy is correct characters ÷ all characters in the snippet.

Symbol accuracy is scored separately: of the special characters in the snippet ({ } [ ] ( ) ; : = > < . , " ' / \ | & ! ? @ # $ % ^ * - + ~ `), the share you typed correctly. Letters, digits, spaces, line breaks and underscores are not special characters. Tab types 2 or 4 spaces depending on the language (JavaScript 2, Python 4, TypeScript 2, HTML/CSS 2, SQL 2, Go 4, Rust 4).

It differs from a prose WPM test in three ways: you must reproduce exact punctuation and indentation, an inserted or missing character shifts everything after it until you correct it, and the snippet ends when you reach its length rather than when a timer runs out.

Supported Languages

LanguageLevelsSnippetsTab keyFocus Areas
JavaScript3172 spacesFunctions, async/await, classes
Python3124 spacesDecorators, generators, dataclasses
TypeScript382 spacesInterfaces, generics, mapped types
HTML/CSS262 spacesMarkup, flexbox, media queries
SQL372 spacesQueries, joins, window functions
Go234 spacesGoroutines, channels, structs
Rust234 spacesOwnership, iterators, traits

Special Characters in Code

Code uses far more special characters than regular text: brackets, semicolons, operators, and template literals all require precise finger placement. Your symbol accuracy score isolates this metric so you can track improvement separately from overall accuracy. The characters it counts are: { } [ ] ( ) ; : = > < . , " ' / \ | & ! ? @ # $ % ^ * - + ~ `

Keyboard Shortcuts

  • Tab inserts the correct number of spaces for the selected language (see the table above)
  • Enter inserts a newline to match the code structure
  • Backspace deletes the last typed character

Build general typing speed with our Typing Practice tool for structured improvement.

How this is calculated

Your score compares the final text in the box with the snippet, character by character. Only what is in the box when you finish counts.

Formulas

  • A character counts as correct when it matches the snippet at the same position. Missing and wrong characters count as incorrect.

    correct = number of positions where typed[i] = code[i]

  • Words per minute uses the usual typing convention of 5 characters per word, spaces and newlines included.

    WPM = (correct ÷ 5) ÷ minutes

  • Accuracy is the share of the snippet typed correctly.

    accuracy = correct ÷ snippet length × 100

  • Symbol accuracy is the same ratio over only the punctuation and bracket characters {}[]();:=><.,"'/\|&!?@#$%^*-+~`.

    symbol accuracy = correct symbols ÷ symbols in snippet × 100

Sources

How we test this

This tool is covered by automated tests every time the site is released, and a release does not ship if a check fails. Example from the test suite: 60-character snippet, 45 characters correct in 30 seconds gives 18 WPM and 75% accuracy. 18 WPM is 45 ÷ 5 = 9 words in half a minute.

The test is “errors lower both WPM and accuracy: 45 of 60 characters correct in 30 seconds” in tests/ai-cited-pages.test.mjs. More on how all tools are tested: our testing approach.

Assumptions and limits

  • The time runs from your first keystroke to the end of the snippet.
  • Scores compare you only with yourself. This page does not rank you against other typists.
  • Your scores and history stay in this browser.

Last reviewed , the date of the latest change to this tool's calculation or content.

Helpful answers

Frequently asked questions

What is a good code typing speed?
There is no published benchmark for code typing speed, so this page does not quote one. Your code WPM will usually be lower than your WPM on ordinary prose because code is full of symbols, indentation and line breaks, but by how much depends on you and the language. The most reliable target is your own best: the test saves a personal best for each language and level in your browser. For prose, the WPM test compares your speed with a published study of 168,960 typists (Dhakal et al., CHI 2018).
How is code typing different from normal typing?
Code uses far more brackets, operators and punctuation than prose, and it has to be exact: indentation and line breaks are part of the text. The test scores every character position, so a missing or extra character is an error until you correct it, and symbols get their own accuracy score.
Which languages can I practice?
7 languages: JavaScript, Python, TypeScript, HTML/CSS, SQL, Go, Rust. Each has 2 or 3 difficulty levels, and there are 56 snippets in total.
Does it track symbol and bracket accuracy?
Yes. Besides overall accuracy, you get symbol accuracy: the share of the snippet's special characters ({ } [ ] ( ) ; : = > < . , " ' / \ | & ! ? @ # $ % ^ * - + ~ `) that you typed correctly, which includes all kinds of brackets.
Is it free, and do I need an account?
It is free and needs no account or install. The snippet and your keystrokes stay in your browser, and your results and personal bests are saved there too. The site records only an anonymous event with a speed range through Google Analytics.
Navigation

When to Use This

Regular typing tests use English sentences, but code is mostly brackets, operators and exact indentation. The code typing test gives you real snippets in seven languages and scores both your speed and how accurately you type the symbols, so you can practice the characters developers actually use.

It suits developers preparing for pair-programming interviews, people switching to a new language who want its syntax under their fingers, and anyone whose typing slows down when the punctuation starts.

Good to Know

Symbols are scored separately. Symbol accuracy isolates brackets, semicolons, operators and quotes, so you can see whether punctuation is what costs you, not your letters.

Each language has its own rhythm. Python leans on indentation and colons, JavaScript on braces and arrows, Rust on lifetimes and match arms. Practice the languages you use at work.

Compare with yourself. Code WPM is not comparable with prose WPM, and there is no published benchmark for it, so the test tracks your personal best for each language and level in your browser.

Short sessions work. A few snippets a day are easier to keep up than one long session.