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)

What this Unicode character code converter does

This tool takes any character you type and shows seven different code representations side by side at once: its Unicode code point, UTF-8 byte sequence, JavaScript escape, HTML entity (both decimal and hexadecimal), URL percent-encoding, and CSS escape. Every conversion — from character to code point, and from code point to each byte-level representation — runs instantly in your browser as you type, with no data ever sent to a server.

One subtlety worth knowing: many emoji have code points that fall outside Unicode's Basic Multilingual Plane (BMP, U+0000–U+FFFF), so JavaScript strings represent them internally as a surrogate pair — two 16-bit code units instead of one. This tool uses codePointAt internally so that a surrogate pair is always resolved back into a single, correct code point, meaning emoji produce accurate results rather than two separate half-characters. If you type more than one character, each gets its own result block.

How to use this Unicode converter

  1. Type the character you want to look up Enter any letter, symbol, or emoji into the input field. You can also paste in several characters at once.
  2. Review the result block for each character A separate card appears for every character you entered, each showing all seven code representations.
  3. Find the representation you need Scan the rows for the format relevant to your task — code point, UTF-8 bytes, JavaScript escape, and so on.
  4. Copy the value with the copy button Click the copy button next to any row to send just that value to your clipboard, ready to paste into code.
  5. Try another character Edit the input field or press "Clear" to start over, then enter the next character you want to check.

Tips for getting more out of it

  • 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.

Where this tool comes in handy

Diagnosing mojibake and garbled text

When a program or database shows an unexpected character, comparing the actual code point and UTF-8 bytes helps you pinpoint whether an encoding mismatch is to blame.

Checking how emoji are encoded

See at a glance how many code units an emoji needs as a surrogate pair in JavaScript, and how many bytes it takes up in UTF-8.

Verifying database character storage

Useful when you need to know in advance how many bytes a specific character will occupy, such as when deciding whether a MySQL column needs utf8mb4.

Embedding special characters in HTML or CSS

Grab the correct HTML entity or CSS escape for a symbol or foreign-language character and paste it straight into your markup or stylesheet.

Validating URL encoding

Confirm that query parameters containing non-ASCII characters or symbols are percent-encoded the way you expect before sending a request.

Glossary

Unicode
An international character encoding standard that assigns a single number — a code point — to every character used anywhere in the world, aimed at preventing mojibake between languages.
Code point
The number Unicode assigns to a character, written as U+0041 and similar — a hexadecimal number after the "U+" prefix that uniquely identifies which character it is.
UTF-8
One particular encoding scheme for storing or transmitting Unicode code points as bytes. It uses 1 to 4 variable-length bytes per character and is fully backward compatible with ASCII, which is why it dominates the web.
UTF-16
An encoding scheme that represents Unicode code points in 16-bit units (code units). JavaScript strings use this encoding internally.
Surrogate pair
A combination of two code units used in UTF-16 to represent a code point beyond the Basic Multilingual Plane (BMP). Most emoji require a surrogate pair.
BMP (Basic Multilingual Plane)
The range of Unicode code points from U+0000 to U+FFFF. Characters in this range can be represented with a single UTF-16 code unit.
HTML entity
A way of writing special characters safely inside HTML markup, such as A (decimal) or A (hexadecimal).
Percent-encoding
A scheme that converts characters not allowed in a URL into UTF-8 bytes and writes each byte as %XX. Commonly used for non-ASCII text in URLs.

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.
Tool-kun

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.