Unicode & emoji tool

Convert characters to/from Unicode code points (U+).

Character → Code point


Code point → Character

Result

Two strings look identical on screen but refuse to compare as equal. A filename breaks a script. An emoji arrives from one platform and renders as a box on another.

Nearly always the answer is in the code points, and this tool shows them. Type into the upper box to see what each character actually is; use the lower box to go the other way and build text from code points.

How it works

Character → code point

Whatever you type in the top field is broken down as you type. You get a single line of U+ values you can copy, plus a grid with one cell per character showing the character itself, its hexadecimal code point and its decimal value. A line break appears as .

The split is by code point, not by byte or by UTF-16 unit, so a character outside the basic plane — most emoji, rare CJK characters — is reported as one entry rather than as a surrogate pair.

Code point → character

Enter one or more code points in the lower field and press Convert. The accepted forms are flexible:

InputResult
U+AC00
AC00
1F600 AC00two characters
1F600,AC00same, comma separated

The U+ prefix is optional and values may be separated by spaces or commas.

One thing that catches people out

Every value is read as hexadecimal, always. Typing 65 gives you e (U+0065), not the letter A that decimal 65 would suggest. If you are working from a decimal table, convert to hex first. Invalid input returns (Invalid code point) rather than a partial result.

Why one visible character can be several code points

What looks like a single glyph is often a sequence. An emoji with a skin-tone modifier is a base emoji plus a modifier; a family emoji is several emoji joined by zero-width joiners (U+200D); an accented letter may be a base letter plus a combining mark instead of one precomposed character. Seeing that breakdown is usually what explains why two visually identical strings are not equal — and Unicode normalisation, rather than string editing, is normally the fix.

Terms explained

Code point
The number Unicode assigns to a character, written as `U+` followed by at least four hexadecimal digits — for example U+AC00 for 가.
Hexadecimal
Base-16 notation using 0–9 and A–F. Code points are conventionally written this way, and this tool reads all input as hex.
Basic Multilingual Plane
The first block of Unicode, U+0000 to U+FFFF. Emoji and some rarer characters live above it and need five or six hex digits.
Zero-width joiner (U+200D)
An invisible character that links emoji into a single composed image, such as the family and profession sequences.
Combining mark
A code point that attaches to the preceding character, such as an accent added to a base letter rather than using a precomposed one.

Frequently asked questions

Why does one emoji show as several code points?

Many emoji are sequences rather than single characters. Skin-tone variants are a base emoji plus a modifier, and composed emoji such as families or professions join several emoji with zero-width joiners (U+200D). The grid shows every element of the sequence, which is what a program processing the string will also see.

I entered 65 and got the wrong character — why?

Input is always read as hexadecimal, so `65` is interpreted as U+0065, which is the letter e. Decimal 65 is U+0041 in hex. Convert your decimal value to hexadecimal before entering it, or read the decimal column in the upper grid instead.

Do I need to type the U+ prefix?

No. `U+1F600`, `u1F600` and `1F600` are all accepted, and you can mix several values separated by spaces or commas. The prefix is stripped before the value is parsed.

Why do two identical-looking strings not match in my code?

Usually because they use different code point sequences for the same appearance — a precomposed character in one and a base plus combining mark in the other, or a full-width variant of a Latin character. Paste both into the upper box and compare the U+ lists; if they differ, normalising the strings (NFC or NFD) before comparing is the standard fix.

Is anything sent to a server?

No. The lookup uses JavaScript's built-in Unicode support in your browser, so the text you paste stays on your device.