Skip to content
FreeType

JavaScript typing test

Closures, async/await, and the symbol-heavy syntax you write daily.

0 wpm100% acc0sstart typing…
greet.js
function greet(name) { return "Hello, " + name + "!"; }

Characters that slow you down in JavaScript

  • =>Equals then greater-than, no space. Two right-hand reaches in a row.
  • `The backtick sits above Tab — the furthest key most people never practise.
  • ${Shift-4 straight into a shifted bracket, inside an already-open string.
  • });The callback tail: three closers in sequence, all shifted but the last.
  • ===Three identical keys, fast enough that one gets dropped.

The arrow is not one key

Modern JavaScript is full of arrow functions, and the arrow is where a lot of speed disappears. It is two characters typed as one gesture: the equals sign lives on the right edge of the number row, the greater-than sits on the bottom row under your right hand. Typed carelessly it becomes a stray space in the middle, or the two characters in the wrong order.

Drill it inside the shape it actually appears in — a map call with its parameter list and body — rather than in isolation. The surrounding parentheses are part of the movement, and practising the arrow alone teaches a gesture you never really make.

Template literals move your hand off the map

The backtick is the single most awkward character in everyday JavaScript. It sits above Tab, outside every finger's home zone, and most typists have no muscle memory for it at all because it appears nowhere in English prose.

It also never arrives alone. A template literal is backtick, text, an opening interpolation, an expression, a closing brace, then backtick again — a sequence that crosses the keyboard twice. If the backtick shows up as a weak key in your heatmap, it is usually not the backtick itself failing but the return journey afterwards.

Closing sequences are their own skill

Nested callbacks and promise chains end in runs of closers: a brace, a parenthesis and a semicolon together, sometimes doubled. These are among the most-typed sequences in real JavaScript and among the least practised, because nothing in prose resembles them.

They are also where your editor helps most, which is exactly why they feel unfamiliar when you type them in full. That makes them worth deliberate practice: the moment autocomplete guesses wrong, you type the whole tail yourself.

camelCase is a shift drill

Identifiers like getUserById and addEventListener capitalise mid-word constantly, and every one of those capitals is a shift press while your fingers are mid-flow. Using the same hand's shift key contorts your hand each time.

Use the opposite shift — left shift for right-hand letters, right shift for left-hand letters. In prose that habit costs a writer a few awkward moments per paragraph. In JavaScript it costs you several per line.

Frequently asked questions

Why is my JavaScript typing speed so much lower than my prose speed?
Arrow functions, template literals and closing sequences put several shifted symbols back to back, and camelCase adds a shift mid-word. A gap of thirty percent or more against your English speed is normal.
Which JavaScript characters should I drill first?
The backtick and the interpolation opener if you write template literals, and the callback tail if you write callbacks. Both show up as weak keys for most developers and neither appears in ordinary text.
Does practising JavaScript help with TypeScript?
Largely yes — the base syntax is shared. TypeScript adds angle brackets, colons and pipes on top, which are a separate drill.

Practise by level

Related reading

We stand with Palestine.