# Typing Speed Calculator

> Computes gross words per minute from characters typed (one word = 5 characters) or from a word count, then net WPM after penalising uncorrected errors, plus accuracy and characters per minute.

- Calculator id: `typing-speed` · Category: Everyday Life (`everyday`) · Tool name: `calculate_typing_speed`
- Canonical page: https://tttkmbb.com/everyday/typing-speed · This document: https://tttkmbb.com/everyday/typing-speed.md · JSON definition: https://tttkmbb.com/everyday/typing-speed.json

## Purpose

Computes gross words per minute from characters typed (one word = 5 characters) or from a word count, then net WPM after penalising uncorrected errors, plus accuracy and characters per minute.

**Use when:** You timed a typing test and know the characters or words typed, the time and the number of errors, and want standard WPM figures.

**Do not use when:** You need reading speed (use reading-time) or the test software already reports WPM under its own error rules.

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `characters_typed` | integer |  | optional | Total characters typed including spaces and punctuation. Takes precedence over words_typed when both are given. (min 1, max 10000000) |
| `words_typed` | number |  | optional | Alternative to characters_typed: number of words (converted at 5 characters per word). (min 0, max 2000000) |
| `minutes` | number | min | required | Duration of the test in minutes (e.g. 0.5 for 30 seconds). (> 0, max 1440) |
| `errors` | integer |  | optional, default 0 | Number of wrong characters left in the final text. (min 0, max 10000000) |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `gross_wpm` | number | wpm | (characters / 5) / minutes, errors ignored. |
| `net_wpm` | number | wpm | gross_wpm − errors / minutes (each error costs one word). |
| `accuracy_percent` | number | % | (characters − errors) / characters × 100. |
| `cpm` | number | cpm | characters / minutes. |
| `words_equivalent` | number | words | characters / 5. |

## Formula

`words = characters / 5; gross_wpm = words / minutes; net_wpm = gross_wpm − errors / minutes; accuracy = (characters − errors) / characters × 100; cpm = characters / minutes`

The 5-character 'standard word' (including spaces and punctuation) is the usual convention in typing tests and text-entry research, so WPM is independent of actual word length.

## Data Sources

- Words per minute – the five-character word convention (Wikipedia) — https://en.wikipedia.org/wiki/Words_per_minute (reference, retrieved 2026-09-23)
- Dhakal V et al. (2018) Observations on Typing from 136 Million Keystrokes, CHI 2018 (Aalto University project page) — https://userinterfaces.aalto.fi/136Mkeystrokes/ (peer_reviewed, retrieved 2026-09-23)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/typing-speed?minutes=…`
- `POST https://tttkmbb.com/api/v1/calculate/typing-speed` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/typing-speed · OpenAPI operationId `calculate_typing_speed` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "typing-speed", "inputs": {…}}`

## Example

- 1500 characters in 5 minutes with 10 errors: inputs `{"characters_typed":1500,"minutes":5,"errors":10}` → `{"gross_wpm":60,"net_wpm":58,"accuracy_percent":99.33,"cpm":300,"words_equivalent":300}`
- 120 words in 3 minutes with 4 errors: inputs `{"words_typed":120,"minutes":3,"errors":4}` → `{"gross_wpm":40,"net_wpm":38.7,"accuracy_percent":99.33,"cpm":200,"words_equivalent":120}`

```
GET https://tttkmbb.com/api/v1/calculate/typing-speed?characters_typed=1500&minutes=5&errors=10
```

## Limitations

You need reading speed (use reading-time) or the test software already reports WPM under its own error rules. The 5-character 'standard word' (including spaces and punctuation) is the usual convention in typing tests and text-entry research, so WPM is independent of actual word length. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**What is a typical typing speed?**

Around 40 wpm for average computer users and 50–60 wpm in large online samples (Dhakal et al. 2018); professional typists reach 70–100+ wpm.

**Do corrected mistakes count as errors?**

No. Only errors left in the final text are penalised; corrections already cost time and therefore lower the gross speed.

## Related

- [Reading Time Calculator](https://tttkmbb.com/everyday/reading-time.md) — Reading speed in words per minute.
