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
- 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.
- Review the result block for each character A separate card appears for every character you entered, each showing all seven code representations.
- 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.
- 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.
- 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+0041and 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) orA(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
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.