Key Code Checker
LookupsEverything runs locally in your browser — nothing is uploaded
Click here, then press any key
Pressed keys light up on the board. ⚠️ Choosing the wrong layout does not affect the readings — keys are placed by **physical position**, so the lit shape tells you which keyboard you have: an extra key beside the left Shift means ISO, three Japanese keys by the space bar means JIS.
Combinations with Ctrl / Alt / Cmd are not intercepted, so your browser shortcuts still work (Ctrl+W will still close the tab).
No key pressed yet.
| Dec | Hex | Char | Name |
|---|---|---|---|
| 0 | 0x00 | NUL | NULNull (terminates C strings) |
| 1 | 0x01 | SOH | SOH |
| 2 | 0x02 | STX | STX |
| 3 | 0x03 | ETX | ETX |
| 4 | 0x04 | EOT | EOT |
| 5 | 0x05 | ENQ | ENQ |
| 6 | 0x06 | ACK | ACK |
| 7 | 0x07 | BEL | BELBell (a terminal beeps) |
| 8 | 0x08 | BS | BS |
| 9 | 0x09 | HT | HTHorizontal tab (Tab key) |
| 10 | 0x0A | LF | LFLine feed (the Unix line ending) |
| 11 | 0x0B | VT | VT |
| 12 | 0x0C | FF | FF |
| 13 | 0x0D | CR | CRCarriage return (classic Mac line ending; Windows uses CRLF) |
| 14 | 0x0E | SO | SO |
| 15 | 0x0F | SI | SI |
| 16 | 0x10 | DLE | DLE |
| 17 | 0x11 | DC1 | DC1 |
| 18 | 0x12 | DC2 | DC2 |
| 19 | 0x13 | DC3 | DC3 |
| 20 | 0x14 | DC4 | DC4 |
| 21 | 0x15 | NAK | NAK |
| 22 | 0x16 | SYN | SYN |
| 23 | 0x17 | ETB | ETB |
| 24 | 0x18 | CAN | CAN |
| 25 | 0x19 | EM | EM |
| 26 | 0x1A | SUB | SUB |
| 27 | 0x1B | ESC | ESCEscape (ANSI escape sequences start with it) |
| 28 | 0x1C | FS | FS |
| 29 | 0x1D | GS | GS |
| 30 | 0x1E | RS | RS |
| 31 | 0x1F | US | US |
| 32 | 0x20 | SPACE | |
| 33 | 0x21 | ! | EXCLAMATION MARK |
| 34 | 0x22 | " | QUOTATION MARK |
| 35 | 0x23 | # | NUMBER SIGN |
| 36 | 0x24 | $ | DOLLAR SIGN |
| 37 | 0x25 | % | PERCENT SIGN |
| 38 | 0x26 | & | AMPERSAND |
| 39 | 0x27 | ' | APOSTROPHE |
| 40 | 0x28 | ( | LEFT PARENTHESIS |
| 41 | 0x29 | ) | RIGHT PARENTHESIS |
| 42 | 0x2A | * | ASTERISK |
| 43 | 0x2B | + | PLUS SIGN |
| 44 | 0x2C | , | COMMA |
| 45 | 0x2D | - | HYPHEN-MINUS |
| 46 | 0x2E | . | FULL STOP |
| 47 | 0x2F | / | SOLIDUS |
| 48 | 0x30 | 0 | DIGIT 0 |
| 49 | 0x31 | 1 | DIGIT 1 |
| 50 | 0x32 | 2 | DIGIT 2 |
| 51 | 0x33 | 3 | DIGIT 3 |
| 52 | 0x34 | 4 | DIGIT 4 |
| 53 | 0x35 | 5 | DIGIT 5 |
| 54 | 0x36 | 6 | DIGIT 6 |
| 55 | 0x37 | 7 | DIGIT 7 |
| 56 | 0x38 | 8 | DIGIT 8 |
| 57 | 0x39 | 9 | DIGIT 9 |
| 58 | 0x3A | : | COLON |
| 59 | 0x3B | ; | SEMICOLON |
| 60 | 0x3C | < | LESS-THAN SIGN |
| 61 | 0x3D | = | EQUALS SIGN |
| 62 | 0x3E | > | GREATER-THAN SIGN |
| 63 | 0x3F | ? | QUESTION MARK |
| 64 | 0x40 | @ | COMMERCIAL AT |
| 65 | 0x41 | A | LATIN CAPITAL LETTER A |
| 66 | 0x42 | B | LATIN CAPITAL LETTER B |
| 67 | 0x43 | C | LATIN CAPITAL LETTER C |
| 68 | 0x44 | D | LATIN CAPITAL LETTER D |
| 69 | 0x45 | E | LATIN CAPITAL LETTER E |
| 70 | 0x46 | F | LATIN CAPITAL LETTER F |
| 71 | 0x47 | G | LATIN CAPITAL LETTER G |
| 72 | 0x48 | H | LATIN CAPITAL LETTER H |
| 73 | 0x49 | I | LATIN CAPITAL LETTER I |
| 74 | 0x4A | J | LATIN CAPITAL LETTER J |
| 75 | 0x4B | K | LATIN CAPITAL LETTER K |
| 76 | 0x4C | L | LATIN CAPITAL LETTER L |
| 77 | 0x4D | M | LATIN CAPITAL LETTER M |
| 78 | 0x4E | N | LATIN CAPITAL LETTER N |
| 79 | 0x4F | O | LATIN CAPITAL LETTER O |
| 80 | 0x50 | P | LATIN CAPITAL LETTER P |
| 81 | 0x51 | Q | LATIN CAPITAL LETTER Q |
| 82 | 0x52 | R | LATIN CAPITAL LETTER R |
| 83 | 0x53 | S | LATIN CAPITAL LETTER S |
| 84 | 0x54 | T | LATIN CAPITAL LETTER T |
| 85 | 0x55 | U | LATIN CAPITAL LETTER U |
| 86 | 0x56 | V | LATIN CAPITAL LETTER V |
| 87 | 0x57 | W | LATIN CAPITAL LETTER W |
| 88 | 0x58 | X | LATIN CAPITAL LETTER X |
| 89 | 0x59 | Y | LATIN CAPITAL LETTER Y |
| 90 | 0x5A | Z | LATIN CAPITAL LETTER Z |
| 91 | 0x5B | [ | LEFT SQUARE BRACKET |
| 92 | 0x5C | \ | REVERSE SOLIDUS |
| 93 | 0x5D | ] | RIGHT SQUARE BRACKET |
| 94 | 0x5E | ^ | CIRCUMFLEX ACCENT |
| 95 | 0x5F | _ | LOW LINE |
| 96 | 0x60 | ` | GRAVE ACCENT |
| 97 | 0x61 | a | LATIN SMALL LETTER A |
| 98 | 0x62 | b | LATIN SMALL LETTER B |
| 99 | 0x63 | c | LATIN SMALL LETTER C |
| 100 | 0x64 | d | LATIN SMALL LETTER D |
| 101 | 0x65 | e | LATIN SMALL LETTER E |
| 102 | 0x66 | f | LATIN SMALL LETTER F |
| 103 | 0x67 | g | LATIN SMALL LETTER G |
| 104 | 0x68 | h | LATIN SMALL LETTER H |
| 105 | 0x69 | i | LATIN SMALL LETTER I |
| 106 | 0x6A | j | LATIN SMALL LETTER J |
| 107 | 0x6B | k | LATIN SMALL LETTER K |
| 108 | 0x6C | l | LATIN SMALL LETTER L |
| 109 | 0x6D | m | LATIN SMALL LETTER M |
| 110 | 0x6E | n | LATIN SMALL LETTER N |
| 111 | 0x6F | o | LATIN SMALL LETTER O |
| 112 | 0x70 | p | LATIN SMALL LETTER P |
| 113 | 0x71 | q | LATIN SMALL LETTER Q |
| 114 | 0x72 | r | LATIN SMALL LETTER R |
| 115 | 0x73 | s | LATIN SMALL LETTER S |
| 116 | 0x74 | t | LATIN SMALL LETTER T |
| 117 | 0x75 | u | LATIN SMALL LETTER U |
| 118 | 0x76 | v | LATIN SMALL LETTER V |
| 119 | 0x77 | w | LATIN SMALL LETTER W |
| 120 | 0x78 | x | LATIN SMALL LETTER X |
| 121 | 0x79 | y | LATIN SMALL LETTER Y |
| 122 | 0x7A | z | LATIN SMALL LETTER Z |
| 123 | 0x7B | { | LEFT CURLY BRACKET |
| 124 | 0x7C | | | VERTICAL LINE |
| 125 | 0x7D | } | RIGHT CURLY BRACKET |
| 126 | 0x7E | ~ | TILDE |
| 127 | 0x7F | DEL | DELETEDelete (the keypad key, not Backspace) |
One key press has three different answers, and they get mixed up constantly. `event.key` is the character produced, and it follows the keyboard layout and Shift — Shift+2 is `@` on a US keyboard and `"` on a German one. `event.code` is the physical position: `Digit2` is the second key on the number row no matter what it types there. `event.keyCode` is the number from the 1990s: deprecated, and ambiguous — it roughly follows the character (`A` and `a` are both 65) but follows position for punctuation (`;` and `:` are both 186). This tool lays all three side by side and labels what each one follows. Press a key and you get all four fields plus the ASCII value; below that is a reference of 100+ keys and the complete 0–127 ASCII table. Everything is computed in your browser — the keys you press never leave this device.
Features
- Press any key to see key, code, keyCode, which and the ASCII value at once
- Each field is labelled with what it follows — the character, the physical position, or a legacy value
- Printable characters come with decimal and hex ASCII (`A` is 65 / 0x41)
- Named keys come with their ASCII control code (Enter is 13 / CR, Delete is 127 / DEL) — the source of the keyCode-vs-ASCII confusion
- Modifiers held down at the same time are listed (Ctrl + Shift)
- Auto-repeat events are flagged, which is what you need to detect a key being held
- IME composition is called out explicitly (during it `key` is `Process`, not a bug)
- A reference of 100+ keys, searchable by name, code, keyCode or ASCII value
- Left and right Shift / Ctrl / Alt are separate entries — only `code` can tell them apart
- The full 0–127 ASCII table, with control characters shown as abbreviations instead of 33 blank cells
- Combinations with Ctrl / Alt / Cmd are not intercepted, so your browser shortcuts keep working
How to use
- Click the detection box at the top of the page, then press any key
- The result list immediately shows that key’s key, code, keyCode, ASCII value and modifiers
- Press more keys to keep going — there is no button to click
- Search the reference below by name or value, or browse the full 0–127 ASCII table
FAQ
- keyCode is deprecated, so why look it up?
- Because it is the spec that was deprecated, not the fact that it appears in code. Existing projects, older libraries and a large amount of still-running sample code use `event.keyCode`, and reading them means knowing what those numbers mean. Writing new code needs the same reference in reverse — to confirm whether a given key should now be read from `key` or `code`. So it is listed alongside the other two, marked as deprecated, rather than hidden.
- Why is Delete keyCode 46 but ASCII 127?
- The two numbers answer different questions. `keyCode` says which key was pressed, and the Delete key carries the value 46. ASCII says which character was produced, and Delete is 127 (DEL). Enter is the same story with a twist: its `keyCode` of 13 happens to equal its ASCII control code 13 (CR), purely because that key has produced that byte since the teletype era. The tool shows the two columns separately so this stays visible instead of being conflated.
- Should I use key or code in my own code?
- It depends on whether you mean the character or the position. Keyboard shortcuts (Ctrl+S and friends) should use `code`, which tracks the physical key and keeps working when the user switches to a French or Russian layout. Anything about what the user actually typed should use `key`, which is what input handling, shortcut hints and games want. The historical failure mode is precisely why `keyCode` was deprecated: shortcuts written with it break on non-US keyboards.
- Why does my Chinese or Japanese IME show Process?
- Because at that moment the key press has not become a character yet. While the IME is composing, the browser reports `key` as `Process` and `keyCode` as 229 — and the tool additionally flags the composition. It is not a bug but a real signal: to know what the user actually entered you have to read after `compositionend`, since reading only `keydown` turns a whole sentence into a run of `Process` events.
- Why does Ctrl+W not get intercepted on this page?
- On purpose. The page only intercepts the default action of a few keys, and only while the detection box has focus and no modifier is held: Space and the arrow keys, so the page does not scroll away, and `/` for Firefox quick find. Anything with Ctrl, Alt or Cmd is let through, because those belong to the browser and the operating system — swallowing Ctrl+W (close tab), F5 (reload) or F12 (dev tools) would just make people think their browser is broken.
Related tools
Symbol Names
LookupsLook up what a symbol is called: ~ is a tilde, # is a number sign and also a hash, | is a pipe. Search by symbol or by name, with common aliases.
Character Encoding
WebLook up a character's code point, decimal value, UTF-8 bytes, UTF-16 units, HTML entity, URL encoding and block. Invisible characters get a stand-in.
Your Browser Info
WebSee what your browser exposes to websites: user agent, screen, time zone, CPU cores, WebGL renderer and feature probes — all read locally, never sent.
Periodic Table
LookupsLook up any element's atomic number, names, atomic weight, category, period, group and electron configuration — or list a whole period or category at once.
Paper Sizes
LookupsA4 and A5 sizes in pixels at 72, 150 and 300 DPI, plus the full ISO A, B and C chart and North American paper sizes in mm, cm and inches.
Zodiac Lookup
LookupsLook up the Chinese zodiac animal and stem-branch for any year, or find years for a given animal, with a note on the lunar new year boundary.