Unicode / Character Code Cross-Reference

Free tool that shows a character's Unicode code point, UTF-8 byte sequence, and JavaScript/HTML/URL/CSS escape representations side by side. Everything runs in your browser.

Code reference table for common characters

Character Code Point UTF-8 Note
A U+0041 41 Uppercase letter (ASCII, 1 byte)
0 U+0030 30 Digit (ASCII, 1 byte)
U+0020 20 Space character (ASCII, 1 byte)
! U+0021 21 Exclamation mark (ASCII symbol, 1 byte)
@ U+0040 40 At sign (ASCII symbol, 1 byte)
© U+00A9 C2 A9 Copyright sign (Latin-1 Supplement, 2 bytes)
U+20AC E2 82 AC Euro sign (3 bytes)
U+2192 E2 86 92 Right arrow (Arrows block, 3 bytes)
U+3042 E3 81 82 Hiragana character (3 bytes)
U+6F22 E6 BC A2 CJK Unified Ideograph (3 bytes)
U+D55C ED 95 9C Hangul syllable (3 bytes)
😀 U+1F600 F0 9F 98 80 Emoji (outside the BMP, 4 bytes, encoded as a surrogate pair in JS)

Tips

  • You can enter more than one character; each one gets its own result block below the input field.
  • Emojis like 😀 fall outside Unicode's Basic Multilingual Plane (BMP, U+0000–U+FFFF), so JavaScript strings represent them internally as two code units (a surrogate pair) — that's why the "JavaScript Escape" row shows two `\uXXXX` sequences.
  • A CSS escape like `\41` writes the code point in hex without any prefix. Add a trailing space when the next character could otherwise be read as part of the hex digits.
  • Browsers treat decimal (`A`) and hex (`A`) HTML entities identically — pick whichever is more convenient for your markup.
  • Use the copy button on each row to grab a value straight into your clipboard for pasting into code or CSS.

Frequently Asked Questions

JavaScript strings are internally represented in UTF-16, where a single code unit can only hold 16 bits (0–65535). Unicode defines many code points beyond that range (U+10000 and up, where most emoji live), so those are represented using two special code units — a "high surrogate" and a "low surrogate" — combined into a surrogate pair. Reading a string one `charCodeAt` unit at a time returns these two halves separately, so you need `codePointAt` to get the correct, complete code point.

A Unicode code point (like U+3042) is simply the number assigned to identify a character. UTF-8, on the other hand, is one particular encoding scheme for storing or transmitting that code point as a sequence of bytes on a computer. The same code point can be represented differently depending on the encoding — UTF-8 uses 1 to 4 variable-length bytes, while UTF-16 or UTF-32 produce different byte sequences.

UTF-8 can represent plain ASCII characters (English letters, digits, basic punctuation) in a single byte each, giving it strong backward compatibility with older English-centric systems, while still being able to represent every character in Unicode. As of 2026, the vast majority of web text is encoded in UTF-8, and it's the recommended default character encoding for HTML documents.

No, they use different syntax. An HTML entity looks like `A` (decimal) or `A` (hex, with an `x` prefix), and it only works inside HTML markup. A CSS escape looks like `\41` — hex digits only, with no `U+` or `x` prefix — and is used inside CSS selectors or property values. Make sure to use the right format for the context you're working in.
ツールくん

Side Note — How Unicode unified a fragmented world of character encodings

Before Unicode existed, computer character encodings varied wildly from country to country and even language to language. Japanese text alone had several competing schemes — Shift_JIS, EUC-JP, and JIS code among them — and exchanging text between systems that used different encodings frequently produced garbled, unreadable characters (often called "mojibake"). Unicode 1.0, published in 1991, set out to solve this by assigning a single code point to every character used anywhere in the world.

Unicode and the ISO/IEC 10646 international standard were developed somewhat independently at first, but later coordinated so that they share the same repertoire of characters and code point assignments. Today Unicode covers well over 150,000 characters, including emoji, and a new version is published every year adding more.

UTF-8 was designed in 1992 by Ken Thompson and Rob Pike. Its breakthrough was full backward compatibility with plain ASCII text while still being able to represent every Unicode character — a design that turned out to be exactly what the web needed, and it has since become the de facto standard encoding for documents on the internet.