{
  "id": "wpm",
  "version": "af4559e3d148",
  "status": "published",
  "name": "WPM Calculator",
  "question": "What is my typing speed in WPM?",
  "summary": "Computes typing speed in words per minute from the characters or words typed and the time, with net WPM after uncorrected errors, accuracy, and characters per minute.",
  "category": "everyday-life",
  "subcategory": "fun",
  "url": "https://www.acalculator.org/everyday-life/wpm-calculator",
  "markdown": "https://www.acalculator.org/everyday-life/wpm-calculator.md",
  "kind": "function",
  "method": "Gross WPM = (characters ÷ 5) ÷ minutes, or words ÷ minutes; net WPM = gross WPM − uncorrected errors ÷ minutes (at least 0); accuracy = (typed − errors) ÷ typed × 100; CPM = characters ÷ minutes.",
  "assumptions": [
    "A standard word is 5 characters, spaces and punctuation included (Arif and Stuerzlinger, 2009).",
    "Errors are mistakes left in the text, counted in the same thing you counted: characters or words.",
    "Net WPM never goes below 0."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "by": {
        "title": "I counted",
        "description": "Whether you counted characters (every keystroke, spaces included) or whole words.",
        "type": "string",
        "enum": [
          "chars",
          "words"
        ]
      },
      "c": {
        "title": "Characters typed",
        "description": "Every character typed, spaces and punctuation included.",
        "type": "integer",
        "minimum": 1,
        "maximum": 10000000
      },
      "n": {
        "title": "Words typed",
        "description": "The number of whole words typed.",
        "type": "integer",
        "minimum": 1,
        "maximum": 2000000
      },
      "t": {
        "title": "Time",
        "description": "How long the typing took.",
        "type": [
          "number",
          "string"
        ],
        "x-quantity": "time",
        "minimum": 1,
        "maximum": 360000
      },
      "e": {
        "title": "Uncorrected errors",
        "description": "Mistakes left in the text: wrong characters when you counted characters, wrong words otherwise.",
        "type": "integer",
        "minimum": 0,
        "maximum": 10000000
      }
    }
  },
  "outputs": {
    "wpm": {
      "label": "Gross WPM",
      "description": "Words (5 characters each, or whole words) ÷ minutes.",
      "format": "number"
    },
    "net": {
      "label": "Net WPM",
      "description": "Gross WPM − uncorrected errors ÷ minutes, never below 0.",
      "format": "number"
    },
    "accuracy": {
      "label": "Accuracy",
      "description": "The share typed without an error: (typed − errors) ÷ typed × 100.",
      "format": "percent"
    },
    "cpm": {
      "label": "Characters per minute",
      "description": "Characters ÷ minutes (when you counted characters).",
      "format": "number"
    },
    "minutes": {
      "label": "Minutes",
      "description": "The time in minutes.",
      "format": "number"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "by": "chars",
      "c": 1250,
      "n": 250,
      "t": 300,
      "e": 0
    },
    "outputs": {
      "wpm": 50,
      "net": 50,
      "accuracy": 100,
      "cpm": 250,
      "minutes": 5
    },
    "text": "You type 50 words per minute (50 net WPM, 100% accuracy)."
  },
  "examples": [
    {
      "given": {
        "by": "chars",
        "c": 1250,
        "t": 300,
        "e": 15
      },
      "expect": {
        "wpm": 50,
        "net": 47,
        "accuracy": 98.8,
        "cpm": 250
      },
      "source": "Arif and Stuerzlinger, 2009, Analysis of Text Entry Performance Metrics (a word is 5 characters, spaces included), cited by Words per minute, https://en.wikipedia.org/wiki/Words_per_minute; hand calculation in content.mdx: 1,250 ÷ 5 = 250 words ÷ 5 min = 50 WPM; 50 − 15 ÷ 5 = 47"
    },
    {
      "given": {
        "by": "chars",
        "c": 200,
        "t": 60,
        "e": 10
      },
      "expect": {
        "wpm": 40,
        "net": 30,
        "accuracy": 95
      },
      "source": "Type to Learn, How are Words Per Minute and Accuracy Calculated? (words = keys pressed ÷ 5; accuracy = 190 ÷ 200 × 100 = 95%), https://www.typetolearn.app/knowledge-base/how-words-per-minute-and-accuracy-are-calculated/; hand calculation in content.mdx"
    },
    {
      "given": {
        "by": "words",
        "n": 300,
        "t": 270
      },
      "expect": {
        "wpm": 66.66666666666667,
        "net": 66.66666666666667,
        "accuracy": 100,
        "minutes": 4.5
      },
      "source": "Words per minute (words ÷ minutes), https://en.wikipedia.org/wiki/Words_per_minute; hand calculation in content.mdx: 300 ÷ 4.5 = 66.7 WPM"
    }
  ],
  "sources": [
    "Words per minute, Wikipedia (a word is standardized to 5 characters or keystrokes, including spaces and punctuation; citing Arif and Stuerzlinger, 2009, Analysis of Text Entry Performance Metrics, IEEE TIC-STH). https://en.wikipedia.org/wiki/Words_per_minute (retrieved 2026-10-02)",
    "Type to Learn, How are Words Per Minute and Accuracy Calculated? (total words = total keys pressed ÷ 5; WPM = words ÷ minutes; accuracy = correct ÷ total keys × 100, for example 190 ÷ 200 = 95%). https://www.typetolearn.app/knowledge-base/how-words-per-minute-and-accuracy-are-calculated/ (retrieved 2026-10-02)"
  ],
  "related": [
    "bpm",
    "time-duration",
    "audiobook-length"
  ],
  "changelog": []
}
