---
title: "Typing Speed Test"
description: "Measures Turkish and English typing speed honestly: CPM is the primary metric, and a code mode exercises real brackets and template syntax."
url: https://sade.dev/en/tools/typing-test/
lang: en
author: "Muhammet Şafak"
published: 2026-09-23
updated: 2026-09-23
section: Tool
tags: ["keyboard","typing speed","practice","wpm"]
---

# Typing Speed Test

> Measures Turkish and English typing speed honestly: CPM is the primary metric, and a code mode exercises real brackets and template syntax.

Measures typing speed across three modes: Turkish text, English text, and code. The text
pool is drawn entirely from this site's own writing and its own code — no borrowed
quotes, no copyright risk, no filler dummy text.

## Why CPM is primary, WPM secondary

Most typing tests talk in words per minute (WPM), and most compute WPM as
`characters / 5` — without ever looking at how long a word actually is. This tool
computes WPM from the real word count instead: `word count in the target text / elapsed
minutes`. The result: for someone typing at the same raw speed, **WPM comes out
systematically lower in Turkish** — Turkish words run longer on average than English
ones (agglutinative suffixes, longer compounds). That's not a bug; it's the tool's own
editorial point — comparing two languages by the same WPM number is misleading. That's
why the **primary metric is characters per minute (CPM)** — language-independent, the raw
keyboard speed itself. WPM is still shown, but as a secondary reference.

## Code mode

Code mode asks for a different skill than plain text: `=>`, `&&`, `${}` template
interpolation, balanced parens and braces, and switching between `snake_case` and
`camelCase`. The samples in the pool are real excerpts from this codebase.

## Keyboard layout

The pressed key is read via `event.key`; whatever the operating system's keyboard layout
is set to is what comes through. On both F and Q layouts, `ı ğ ş İ ö ç ü` work correctly
with no special mapping. IME and dead-key composition are protected via
`compositionstart`/`compositionend`, so Turkish diacritic sequences never produce the
wrong character.

## Correction rule

Backspace is free within the current word. Once you finish a word and move to the next
one, you can't go back to fix it — that mirrors real typing, and it closes off the
unlimited-undo loophole that would make the test meaningless.

## On mobile

On a touch device, the test area is replaced by a message saying this tool requires a
physical keyboard, alongside a "Try anyway" button. The test area only opens once that
button is clicked — there's no automatic opening.

## Privacy

This tool runs **entirely in your browser** and makes no network requests. The
`localStorage` history list holds only the last 20 attempts — mode, CPM, WPM, accuracy
percentage, consistency percentage, and date. Beyond that, each mode keeps a separate
best record — CPM, accuracy percentage, and date — from attempts typed at 90% accuracy
or higher, so it survives after the attempt it came from drops out of the last 20. That data
is never sent to a server; it stays in your own browser, and the "Clear history" button
erases both the history and that best record. There's no leaderboard — that would
require a server, which breaks the site's "nothing leaves the browser" rule.
