Web & Network

ASCII, Unicode & Keycode Inspector

Browse the ASCII table, look up any Unicode character's code point and encoding, and see live keydown events.

Runs entirely in your browser — nothing you paste is uploaded or stored.

Keycode inspector

Click the box below, then press any key to see exactly what a browser's keyboard event reports for it. Nothing here is sent anywhere — it's read directly from the browser's own KeyboardEvent.

Click here, then press any key

Press Escape or click outside the box to leave it. Some browser or OS shortcuts (Ctrl+T, F11, ...) can't be captured or blocked by any web page.

ASCII table & Unicode lookup

The table below covers standard ASCII (0-127) with full names. Paste or type any other Unicode character — an emoji, an accented letter, a symbol from another script — and its code point, UTF-8/UTF-16 bytes, category and script appear above the table. Only ASCII characters get a name; see the FAQ for why.

128 of 128 characters

DecHexOctBinCharNameCopy
00000000000000NULNull
10100100000001SOHStart of Heading
20200200000010STXStart of Text
30300300000011ETXEnd of Text
40400400000100EOTEnd of Transmission
50500500000101ENQEnquiry
60600600000110ACKAcknowledge
70700700000111BELBell
80801000001000BSBackspace
90901100001001HTHorizontal Tab
100A01200001010LFLine Feed
110B01300001011VTVertical Tab
120C01400001100FFForm Feed
130D01500001101CRCarriage Return
140E01600001110SOShift Out
150F01700001111SIShift In
161002000010000DLEData Link Escape
171102100010001DC1Device Control 1 (XON)
181202200010010DC2Device Control 2
191302300010011DC3Device Control 3 (XOFF)
201402400010100DC4Device Control 4
211502500010101NAKNegative Acknowledge
221602600010110SYNSynchronous Idle
231702700010111ETBEnd of Transmission Block
241803000011000CANCancel
251903100011001EMEnd of Medium
261A03200011010SUBSubstitute
271B03300011011ESCEscape
281C03400011100FSFile Separator
291D03500011101GSGroup Separator
301E03600011110RSRecord Separator
311F03700011111USUnit Separator
322004000100000 Space
332104100100001!Exclamation Mark
342204200100010"Quotation Mark
352304300100011#Number Sign
362404400100100$Dollar Sign
372504500100101%Percent Sign
382604600100110&Ampersand
392704700100111'Apostrophe
402805000101000(Left Parenthesis
412905100101001)Right Parenthesis
422A05200101010*Asterisk
432B05300101011+Plus Sign
442C05400101100,Comma
452D05500101101-Hyphen-Minus
462E05600101110.Full Stop
472F05700101111/Solidus
4830060001100000Digit Zero
4931061001100011Digit One
5032062001100102Digit Two
5133063001100113Digit Three
5234064001101004Digit Four
5335065001101015Digit Five
5436066001101106Digit Six
5537067001101117Digit Seven
5638070001110008Digit Eight
5739071001110019Digit Nine
583A07200111010:Colon
593B07300111011;Semicolon
603C07400111100<Less-Than Sign
613D07500111101=Equals Sign
623E07600111110>Greater-Than Sign
633F07700111111?Question Mark
644010001000000@Commercial At
654110101000001ALatin Capital Letter A
664210201000010BLatin Capital Letter B
674310301000011CLatin Capital Letter C
684410401000100DLatin Capital Letter D
694510501000101ELatin Capital Letter E
704610601000110FLatin Capital Letter F
714710701000111GLatin Capital Letter G
724811001001000HLatin Capital Letter H
734911101001001ILatin Capital Letter I
744A11201001010JLatin Capital Letter J
754B11301001011KLatin Capital Letter K
764C11401001100LLatin Capital Letter L
774D11501001101MLatin Capital Letter M
784E11601001110NLatin Capital Letter N
794F11701001111OLatin Capital Letter O
805012001010000PLatin Capital Letter P
815112101010001QLatin Capital Letter Q
825212201010010RLatin Capital Letter R
835312301010011SLatin Capital Letter S
845412401010100TLatin Capital Letter T
855512501010101ULatin Capital Letter U
865612601010110VLatin Capital Letter V
875712701010111WLatin Capital Letter W
885813001011000XLatin Capital Letter X
895913101011001YLatin Capital Letter Y
905A13201011010ZLatin Capital Letter Z
915B13301011011[Left Square Bracket
925C13401011100\Reverse Solidus
935D13501011101]Right Square Bracket
945E13601011110^Circumflex Accent
955F13701011111_Low Line
966014001100000`Grave Accent
976114101100001aLatin Small Letter A
986214201100010bLatin Small Letter B
996314301100011cLatin Small Letter C
1006414401100100dLatin Small Letter D
1016514501100101eLatin Small Letter E
1026614601100110fLatin Small Letter F
1036714701100111gLatin Small Letter G
1046815001101000hLatin Small Letter H
1056915101101001iLatin Small Letter I
1066A15201101010jLatin Small Letter J
1076B15301101011kLatin Small Letter K
1086C15401101100lLatin Small Letter L
1096D15501101101mLatin Small Letter M
1106E15601101110nLatin Small Letter N
1116F15701101111oLatin Small Letter O
1127016001110000pLatin Small Letter P
1137116101110001qLatin Small Letter Q
1147216201110010rLatin Small Letter R
1157316301110011sLatin Small Letter S
1167416401110100tLatin Small Letter T
1177516501110101uLatin Small Letter U
1187616601110110vLatin Small Letter V
1197716701110111wLatin Small Letter W
1207817001111000xLatin Small Letter X
1217917101111001yLatin Small Letter Y
1227A17201111010zLatin Small Letter Z
1237B17301111011{Left Curly Bracket
1247C17401111100|Vertical Line
1257D17501111101}Right Curly Bracket
1267E17601111110~Tilde
1277F17701111111DELDelete

What is ascii, unicode & keycode inspector?

This page is two small reference tools in one, because they answer the same underlying question from two directions: "what does this character or keypress actually mean to a computer?" The ASCII table half lists all 128 standard ASCII characters — decimal, hex, octal and binary code points, the literal character, and its formal name — searchable by typing a character, a code in any of those bases, or a name fragment. The same search box also accepts any Unicode character at all — paste an emoji, an accented letter, or a character from another script, and its code point, UTF-8 and UTF-16 byte encoding, general category and script appear immediately, computed directly from properties the browser's own engine already knows rather than a downloaded name database (which is also why non-ASCII characters show no formal name — see the FAQ). The keycode inspector half is live: click the capture box and press any key, and it shows exactly what a browser's `KeyboardEvent` reports for that press — `key`, `code`, the deprecated but still widely-checked `keyCode`/`which`, the key's `location` (standard, left/right, or numpad), active modifiers, and whether it's an auto-repeat. All three pieces exist for the same audience: developers writing keyboard shortcuts, parsing legacy protocols or file formats that reference control characters, debugging mojibake or encoding mismatches, or double-checking exactly what a "weird" keypress or character actually is.

When to use it

  • Deciding which JavaScript event property to check when wiring up a keyboard shortcut, and confirming what it actually equals for the exact key combination you care about.
  • Looking up the decimal or hex code for a control character (like line feed, tab, or escape) when working with a binary protocol, escape sequence, or legacy file format.
  • Debugging a "keypress doesn't work in this browser" bug by comparing key, code and keyCode side by side for the same physical key.
  • Converting between decimal, hexadecimal, octal and binary representations of a character code without doing the arithmetic by hand.
  • Checking the UTF-8 byte length or exact code point of an emoji or accented letter before it goes into a byte-limited field, a URL, or a hand-rolled parser.

How to use this tool

  1. To inspect a keypress: click the capture box, then press any key (or combination, like Ctrl+Shift+A) — the box shows key, code, keyCode, which, location, modifiers and repeat immediately.
  2. Check the history table below the capture box to compare several keypresses at once, most recent first.
  3. To look up an ASCII character: type it directly, its decimal or hex code (65 or 0x41), or a name fragment (tab, escape) into the search box.
  4. To look up any other Unicode character: paste it directly into the search box, or enter its code point as decimal or hex (128512, 0x1F600, or U+1F600) — its encoding, category and script appear above the table.
  5. Use the preset chips above the search box for a few commonly-looked-up characters, or copy a single row's full details with its row button.

Example

Looking up the letter A.

Input

65

Output

Dec 65   Hex 41   Oct 101   Bin 01000001
Char A — Latin Capital Letter A

The same row is found by typing "A", "65", "0x41", or "U+0041" — whichever form you already have on hand.

Reading location

location distinguishes physically different keys that report the same key/code family — 0 is the standard single-instance key, 1/2 mark the left or right key of a pair (like Shift or Ctrl), and 3 marks the numeric keypad. It’s easy to miss because most keys only ever report 0, so it only shows up once you press Left Shift versus Right Shift, or 7 on the top row versus 7 on the numpad, side by side.

Where category and script come from

A character’s general category (letter, mark, number, punctuation, symbol, separator, or control) and script (Latin, Greek, Han, and so on) aren’t looked up in a table this page downloads — they’re read with a regular expression using Unicode property escapes, like /\p{Script=Greek}/u, a feature built directly into the JavaScript engine every modern browser already ships. That’s what makes it possible to identify any of the roughly 150,000 assigned Unicode characters without adding a single byte to this page’s download.

Frequently asked questions

Why does the table stop at 127 instead of going to 255 — and what about Unicode?

True ASCII is a 7-bit standard defined only up to 127. What's often called "extended ASCII" (128-255) is not one standard — it depends entirely on the code page in use (Latin-1, Windows-1252, DOS/OEM, and others all disagree on that range), so a single 128-255 table would just be presenting one vendor's encoding as if it were universal. The searchable *table* therefore sticks to unambiguous 0-127, but the search box itself isn't limited to it — paste any Unicode character or enter any valid code point and its details appear separately, above the table.

Why doesn't a non-ASCII character show its name?

The official Unicode name for every one of the roughly 150,000 assigned characters lives only in a multi-megabyte names database, and downloading that for every visitor — most of whom only need the ASCII table — would break this site's performance budget. Category and script, by contrast, come from Unicode property checks already built into the browser's own JavaScript engine, so those are shown for free with no download at all.

Why does a keypress show both `keyCode` and `key` — aren't they redundant?

`keyCode` (and its twin `which`) is a numeric, layout-dependent legacy property that MDN and the W3C both mark deprecated — modern code should prefer `key` (the character or named value the key produces, respecting layout and modifiers) and `code` (the fixed physical key position, independent of layout). This tool shows all of them together specifically so you can see how they diverge for a given key, since plenty of code you'll encounter — and interview questions about it — still reference the old properties.

What's the difference between `key` and `code`?

`key` reflects what the key actually produces given the current keyboard layout and modifiers — pressing the key left of "1" on a US layout reports `` ` ``, but a different character on other layouts. `code` reports the physical key position itself ("Backquote") and never changes with layout or Shift state. Use `code` for layout-independent shortcuts (like WASD game controls) and `key` when you care what character was actually typed.

Why do some keypresses get blocked from doing their normal thing (like Tab moving focus)?

The capture box intentionally suppresses a small set of keys — Tab, Space, the arrow keys, Backspace, and paging keys — that would otherwise move focus or scroll the page away from the box before you can read the result. Browser- or OS-level shortcuts (Ctrl+T, F11, and similar) can't be intercepted by any web page at all, capture box or not.

Does this tool send my keystrokes or pasted characters anywhere?

No. Every part of this tool runs entirely in your browser — the keycode inspector reads properties directly off the DOM's own KeyboardEvent object, the ASCII table is a static local lookup, and the Unicode category/script detection uses the JavaScript engine's own built-in Unicode support. Nothing is transmitted anywhere.

Find these tools useful? A coffee helps keep them free and ad-light.

Buy me a coffee