JavaScript typing test

Modern JavaScript and TypeScript, timed: arrow functions, destructuring, template literals, optional chaining, generics. The symbol-dense language that punishes prose-only typing habits more than any other.

Take the test

Why JavaScript is the hardest mainstream language to type

Count the shifted characters in a typical line: const handler = async ({ id }) => { ... }. Braces, parentheses, the arrow, the equals sign, a capital or two in the identifiers. Nearly a third of the keystrokes in idiomatic JavaScript are on the shifted layer or in the top-right corner of the keyboard, and TypeScript adds angle brackets, the pipe of union types and the question mark of optional properties on top.

This is why developers who feel fast in an editor — where autocomplete and auto-closing brackets do part of the work — are often surprised by their raw speed. The test measures the keys themselves, which is the part autocomplete never helps with: the identifier you still have to type, the arrow, the destructured argument.

What the test contains

The text is real code from the Programmers course: utility functions, React-style components, array method chains, async/await with try/catch, TypeScript interfaces and generics. Every snippet is typeable on a standard keyboard and formatted on one line with single spaces, so the score is about your hands, not your editor's settings.

Your result lists net WPM, accuracy and rhythm. On code, rhythm is the one to watch: a jagged line means you are typing the words fluently and stalling at every symbol, which is exactly what the coach's drills are built to fix.

Getting faster at it

Two things move the JavaScript number quickly. First, learning the shifted symbols by touch — most people look down for a brace, and the moment they stop the speed jumps. Second, the pinky reaches: the right pinky owns the brackets, the pipe, the backslash and the semicolon, and it is the weakest finger. The Programmers course isolates those, and the Practice Lab can write more of whatever framework you use.

TypeScript specifics

TypeScript adds the angle brackets of generics, the colon of type annotations, the pipe and ampersand of union and intersection types, and the question mark of optional members. Each is a shifted key, and generics in particular — Promise<Array<Record<string, number>>> — stack several of them in a row with no letters in between to rest on. The test includes annotated code so those sequences are measured too; if they are where your speed drops, the coach's drill will be built from them.

Other typing tests

Start the free course