{
  "_attribution": "Data from https://mygearcheck.com/ (CC BY 4.0). Please link back when you use it.",
  "dataset": "key-codes",
  "version": "1.0.0",
  "license": "CC BY 4.0",
  "reviewed": "2026-08-05",
  "documentation": "https://mygearcheck.com/data/key-codes",
  "notes": [
    "code is the physical key and does not change with keyboard layout.",
    "key is the character a US QWERTY (ANSI) layout produces, unshifted.",
    "keyCode is the deprecated legacy model. A null value means no browser-consistent value exists."
  ],
  "count": 107,
  "data": [
    {
      "key": "a",
      "code": "KeyA",
      "keyCode": 65,
      "group": "Letters"
    },
    {
      "key": "b",
      "code": "KeyB",
      "keyCode": 66,
      "group": "Letters"
    },
    {
      "key": "c",
      "code": "KeyC",
      "keyCode": 67,
      "group": "Letters"
    },
    {
      "key": "d",
      "code": "KeyD",
      "keyCode": 68,
      "group": "Letters"
    },
    {
      "key": "e",
      "code": "KeyE",
      "keyCode": 69,
      "group": "Letters"
    },
    {
      "key": "f",
      "code": "KeyF",
      "keyCode": 70,
      "group": "Letters"
    },
    {
      "key": "g",
      "code": "KeyG",
      "keyCode": 71,
      "group": "Letters"
    },
    {
      "key": "h",
      "code": "KeyH",
      "keyCode": 72,
      "group": "Letters"
    },
    {
      "key": "i",
      "code": "KeyI",
      "keyCode": 73,
      "group": "Letters"
    },
    {
      "key": "j",
      "code": "KeyJ",
      "keyCode": 74,
      "group": "Letters"
    },
    {
      "key": "k",
      "code": "KeyK",
      "keyCode": 75,
      "group": "Letters"
    },
    {
      "key": "l",
      "code": "KeyL",
      "keyCode": 76,
      "group": "Letters"
    },
    {
      "key": "m",
      "code": "KeyM",
      "keyCode": 77,
      "group": "Letters"
    },
    {
      "key": "n",
      "code": "KeyN",
      "keyCode": 78,
      "group": "Letters"
    },
    {
      "key": "o",
      "code": "KeyO",
      "keyCode": 79,
      "group": "Letters"
    },
    {
      "key": "p",
      "code": "KeyP",
      "keyCode": 80,
      "group": "Letters"
    },
    {
      "key": "q",
      "code": "KeyQ",
      "keyCode": 81,
      "group": "Letters"
    },
    {
      "key": "r",
      "code": "KeyR",
      "keyCode": 82,
      "group": "Letters"
    },
    {
      "key": "s",
      "code": "KeyS",
      "keyCode": 83,
      "group": "Letters"
    },
    {
      "key": "t",
      "code": "KeyT",
      "keyCode": 84,
      "group": "Letters"
    },
    {
      "key": "u",
      "code": "KeyU",
      "keyCode": 85,
      "group": "Letters"
    },
    {
      "key": "v",
      "code": "KeyV",
      "keyCode": 86,
      "group": "Letters"
    },
    {
      "key": "w",
      "code": "KeyW",
      "keyCode": 87,
      "group": "Letters"
    },
    {
      "key": "x",
      "code": "KeyX",
      "keyCode": 88,
      "group": "Letters"
    },
    {
      "key": "y",
      "code": "KeyY",
      "keyCode": 89,
      "group": "Letters"
    },
    {
      "key": "z",
      "code": "KeyZ",
      "keyCode": 90,
      "group": "Letters"
    },
    {
      "key": "0",
      "code": "Digit0",
      "keyCode": 48,
      "group": "Digits"
    },
    {
      "key": "1",
      "code": "Digit1",
      "keyCode": 49,
      "group": "Digits"
    },
    {
      "key": "2",
      "code": "Digit2",
      "keyCode": 50,
      "group": "Digits"
    },
    {
      "key": "3",
      "code": "Digit3",
      "keyCode": 51,
      "group": "Digits"
    },
    {
      "key": "4",
      "code": "Digit4",
      "keyCode": 52,
      "group": "Digits"
    },
    {
      "key": "5",
      "code": "Digit5",
      "keyCode": 53,
      "group": "Digits"
    },
    {
      "key": "6",
      "code": "Digit6",
      "keyCode": 54,
      "group": "Digits"
    },
    {
      "key": "7",
      "code": "Digit7",
      "keyCode": 55,
      "group": "Digits"
    },
    {
      "key": "8",
      "code": "Digit8",
      "keyCode": 56,
      "group": "Digits"
    },
    {
      "key": "9",
      "code": "Digit9",
      "keyCode": 57,
      "group": "Digits"
    },
    {
      "key": "`",
      "code": "Backquote",
      "keyCode": 192,
      "group": "Punctuation"
    },
    {
      "key": "-",
      "code": "Minus",
      "keyCode": 189,
      "group": "Punctuation"
    },
    {
      "key": "=",
      "code": "Equal",
      "keyCode": 187,
      "group": "Punctuation"
    },
    {
      "key": "[",
      "code": "BracketLeft",
      "keyCode": 219,
      "group": "Punctuation"
    },
    {
      "key": "]",
      "code": "BracketRight",
      "keyCode": 221,
      "group": "Punctuation"
    },
    {
      "key": "\\",
      "code": "Backslash",
      "keyCode": 220,
      "group": "Punctuation"
    },
    {
      "key": ";",
      "code": "Semicolon",
      "keyCode": 186,
      "group": "Punctuation"
    },
    {
      "key": "'",
      "code": "Quote",
      "keyCode": 222,
      "group": "Punctuation"
    },
    {
      "key": ",",
      "code": "Comma",
      "keyCode": 188,
      "group": "Punctuation"
    },
    {
      "key": ".",
      "code": "Period",
      "keyCode": 190,
      "group": "Punctuation"
    },
    {
      "key": "/",
      "code": "Slash",
      "keyCode": 191,
      "group": "Punctuation"
    },
    {
      "key": "\\",
      "code": "IntlBackslash",
      "keyCode": 226,
      "group": "Punctuation",
      "note": "The extra key next to the left Shift on ISO (European) keyboards. Absent on ANSI boards."
    },
    {
      "key": "\\",
      "code": "IntlRo",
      "keyCode": 193,
      "group": "Punctuation",
      "note": "Japanese layouts only."
    },
    {
      "key": "¥",
      "code": "IntlYen",
      "keyCode": 255,
      "group": "Punctuation",
      "note": "Japanese layouts only. The keyCode is not consistent across browsers."
    },
    {
      "key": " ",
      "code": "Space",
      "keyCode": 32,
      "group": "Whitespace and editing",
      "note": "event.key is a single space character."
    },
    {
      "key": "Enter",
      "code": "Enter",
      "keyCode": 13,
      "group": "Whitespace and editing"
    },
    {
      "key": "Tab",
      "code": "Tab",
      "keyCode": 9,
      "group": "Whitespace and editing"
    },
    {
      "key": "Backspace",
      "code": "Backspace",
      "keyCode": 8,
      "group": "Whitespace and editing"
    },
    {
      "key": "Delete",
      "code": "Delete",
      "keyCode": 46,
      "group": "Whitespace and editing"
    },
    {
      "key": "Insert",
      "code": "Insert",
      "keyCode": 45,
      "group": "Whitespace and editing"
    },
    {
      "key": "ArrowUp",
      "code": "ArrowUp",
      "keyCode": 38,
      "group": "Navigation"
    },
    {
      "key": "ArrowDown",
      "code": "ArrowDown",
      "keyCode": 40,
      "group": "Navigation"
    },
    {
      "key": "ArrowLeft",
      "code": "ArrowLeft",
      "keyCode": 37,
      "group": "Navigation"
    },
    {
      "key": "ArrowRight",
      "code": "ArrowRight",
      "keyCode": 39,
      "group": "Navigation"
    },
    {
      "key": "Home",
      "code": "Home",
      "keyCode": 36,
      "group": "Navigation"
    },
    {
      "key": "End",
      "code": "End",
      "keyCode": 35,
      "group": "Navigation"
    },
    {
      "key": "PageUp",
      "code": "PageUp",
      "keyCode": 33,
      "group": "Navigation"
    },
    {
      "key": "PageDown",
      "code": "PageDown",
      "keyCode": 34,
      "group": "Navigation"
    },
    {
      "key": "Shift",
      "code": "ShiftLeft",
      "keyCode": 16,
      "group": "Modifiers",
      "note": "Left and right Shift share keyCode 16. Only event.code (or the older event.location) tells them apart."
    },
    {
      "key": "Shift",
      "code": "ShiftRight",
      "keyCode": 16,
      "group": "Modifiers"
    },
    {
      "key": "Control",
      "code": "ControlLeft",
      "keyCode": 17,
      "group": "Modifiers",
      "note": "Left and right Control share keyCode 17."
    },
    {
      "key": "Control",
      "code": "ControlRight",
      "keyCode": 17,
      "group": "Modifiers"
    },
    {
      "key": "Alt",
      "code": "AltLeft",
      "keyCode": 18,
      "group": "Modifiers",
      "note": "On macOS this is the Option key. event.key is still \"Alt\"."
    },
    {
      "key": "Alt",
      "code": "AltRight",
      "keyCode": 18,
      "group": "Modifiers",
      "note": "On many European layouts this key acts as AltGr and produces a character instead of a bare modifier."
    },
    {
      "key": "Meta",
      "code": "MetaLeft",
      "keyCode": null,
      "group": "Modifiers",
      "note": "Windows key, Command on macOS, Super on Linux. keyCode is not stable: browsers have reported 91, 93 and 224 for this key depending on OS and version. Use event.code or event.metaKey."
    },
    {
      "key": "Meta",
      "code": "MetaRight",
      "keyCode": null,
      "group": "Modifiers",
      "note": "Same instability as MetaLeft."
    },
    {
      "key": "ContextMenu",
      "code": "ContextMenu",
      "keyCode": 93,
      "group": "Modifiers",
      "note": "The menu key right of the space bar on many Windows keyboards."
    },
    {
      "key": "F1",
      "code": "F1",
      "keyCode": 112,
      "group": "Function keys"
    },
    {
      "key": "F2",
      "code": "F2",
      "keyCode": 113,
      "group": "Function keys"
    },
    {
      "key": "F3",
      "code": "F3",
      "keyCode": 114,
      "group": "Function keys"
    },
    {
      "key": "F4",
      "code": "F4",
      "keyCode": 115,
      "group": "Function keys"
    },
    {
      "key": "F5",
      "code": "F5",
      "keyCode": 116,
      "group": "Function keys"
    },
    {
      "key": "F6",
      "code": "F6",
      "keyCode": 117,
      "group": "Function keys"
    },
    {
      "key": "F7",
      "code": "F7",
      "keyCode": 118,
      "group": "Function keys"
    },
    {
      "key": "F8",
      "code": "F8",
      "keyCode": 119,
      "group": "Function keys"
    },
    {
      "key": "F9",
      "code": "F9",
      "keyCode": 120,
      "group": "Function keys"
    },
    {
      "key": "F10",
      "code": "F10",
      "keyCode": 121,
      "group": "Function keys"
    },
    {
      "key": "F11",
      "code": "F11",
      "keyCode": 122,
      "group": "Function keys"
    },
    {
      "key": "F12",
      "code": "F12",
      "keyCode": 123,
      "group": "Function keys"
    },
    {
      "key": "0",
      "code": "Numpad0",
      "keyCode": 96,
      "group": "Numpad",
      "note": "With Num Lock off the numpad reports navigation keys instead."
    },
    {
      "key": "1",
      "code": "Numpad1",
      "keyCode": 97,
      "group": "Numpad"
    },
    {
      "key": "2",
      "code": "Numpad2",
      "keyCode": 98,
      "group": "Numpad"
    },
    {
      "key": "3",
      "code": "Numpad3",
      "keyCode": 99,
      "group": "Numpad"
    },
    {
      "key": "4",
      "code": "Numpad4",
      "keyCode": 100,
      "group": "Numpad"
    },
    {
      "key": "5",
      "code": "Numpad5",
      "keyCode": 101,
      "group": "Numpad"
    },
    {
      "key": "6",
      "code": "Numpad6",
      "keyCode": 102,
      "group": "Numpad"
    },
    {
      "key": "7",
      "code": "Numpad7",
      "keyCode": 103,
      "group": "Numpad"
    },
    {
      "key": "8",
      "code": "Numpad8",
      "keyCode": 104,
      "group": "Numpad"
    },
    {
      "key": "9",
      "code": "Numpad9",
      "keyCode": 105,
      "group": "Numpad"
    },
    {
      "key": "/",
      "code": "NumpadDivide",
      "keyCode": 111,
      "group": "Numpad"
    },
    {
      "key": "*",
      "code": "NumpadMultiply",
      "keyCode": 106,
      "group": "Numpad"
    },
    {
      "key": "-",
      "code": "NumpadSubtract",
      "keyCode": 109,
      "group": "Numpad"
    },
    {
      "key": "+",
      "code": "NumpadAdd",
      "keyCode": 107,
      "group": "Numpad"
    },
    {
      "key": "Enter",
      "code": "NumpadEnter",
      "keyCode": 13,
      "group": "Numpad",
      "note": "Shares keyCode 13 with the main Enter. event.code is the only way to tell them apart."
    },
    {
      "key": ".",
      "code": "NumpadDecimal",
      "keyCode": 110,
      "group": "Numpad",
      "note": "Some layouts produce a comma here."
    },
    {
      "key": "Escape",
      "code": "Escape",
      "keyCode": 27,
      "group": "System and lock"
    },
    {
      "key": "CapsLock",
      "code": "CapsLock",
      "keyCode": 20,
      "group": "System and lock"
    },
    {
      "key": "NumLock",
      "code": "NumLock",
      "keyCode": 144,
      "group": "System and lock"
    },
    {
      "key": "ScrollLock",
      "code": "ScrollLock",
      "keyCode": 145,
      "group": "System and lock",
      "note": "Intercepted by the OS on some systems, so the browser may never see it."
    },
    {
      "key": "Pause",
      "code": "Pause",
      "keyCode": 19,
      "group": "System and lock",
      "note": "Often swallowed by the OS or by the browser's own shortcuts."
    },
    {
      "key": "PrintScreen",
      "code": "PrintScreen",
      "keyCode": 44,
      "group": "System and lock",
      "note": "Windows and most Linux desktops handle this key themselves. Many browsers only ever see the keyup, never the keydown."
    }
  ]
}