— Developer Tools

Free Unicode Converter

See any character as its code point, UTF-8 bytes or escape sequence, and turn those notations back into text.

— Samples
Characters 4Out 27Valid
Live

What is an Unicode Converter?

A Unicode converter shows the numbers behind text. Every character has a code point, such as U+00E9 for é, and each encoding stores that number differently: UTF-8 as one to four bytes, UTF-16 as one or two 16-bit units.

This tool converts text into four notations and back: code points in U+ form, UTF-8 bytes in hex, JavaScript and JSON \u escapes, and numeric HTML references. It follows the Unicode Standard’s rules for the code space, so it refuses values past U+10FFFF, lone surrogates and byte runs that aren’t valid UTF-8, and tells you which one it hit.

Key Features

Four Notations, Both Directions

Go from text to code points, UTF-8, escapes or references, and paste any of those back to get text. One tool covers what a developer meets in logs, JSON and HTML.

Emoji Counted Correctly

Characters above U+FFFF, like most emoji, are treated as one code point, not two halves. The escape view still shows the surrogate pair JavaScript and JSON use.

Invalid Values Named, Not Mangled

A surrogate on its own, a number past U+10FFFF or a byte run that isn’t UTF-8 produces a specific error. Nothing is silently replaced with a question mark or �.

Forgiving Input Format

Code points may be written as U+00E9, 0xE9 or just E9, separated by spaces or commas. Bytes accept the same separators, so you can paste straight from a hex dump.

Private by Default

Conversion happens in the browser tab, so a customer’s name or a log line you paste stays on your machine.

Perfect for everyone

  • Web developers fixing garbled text
  • Localisation engineers testing scripts and fonts
  • Data analysts cleaning CSV imports
  • Students learning how character encodings work

How to Use the Unicode Converter

Pick the notation, paste, and read the conversion.

1

Pick a Notation

Choose Code points, UTF-8, Escapes or References to convert text into that notation. Choose the matching From option when you already have the notation and want the text back.

2

Paste Text or Values

Paste a word, an emoji or a whole paragraph to encode. To decode, paste code points like U+0048 U+0069, bytes like E2 82 AC, escapes like \u00E9, or references like é.

3

Read the Conversion

The result updates as you type, and the Characters count shows code points, not bytes. If a value can’t be converted, the error quotes it and explains which Unicode rule it breaks.

4

Use It in Your Code or Ticket

Copy the escapes into a JSON fixture, the references into HTML, or the bytes into a bug report. Download saves the result as a plain text file.

Worked Examples

Conversions Run Through This Tool

Each row is an input we gave the converter and the output it produced, two of them errors. Predict the result, then reveal it.

REF_001To code points

“café”

REF_002To escapes, surrogate pair

“😊”

REF_003To UTF-8, three bytes

“€”

REF_004To references

“Ω”

REF_005From code points

“U+0048 U+0069 U+1F44B”

REF_006From UTF-8

“e2 82 ac”

REF_007From escapes

“\uD83D\uDE0A”

REF_008Hex and decimal references

“éé”

REF_009Lone surrogate

“U+D800”

REF_010Broken UTF-8

“c3 28”

Notation Guide

How Unicode Numbers Characters

The same character can be written half a dozen ways. These entries cover the code space, the encodings and the edge cases that trip people up.

01 / A

A Code Point Is the Character’s Number

Unicode gives every character one number, written U+ and at least four hex digits. There are 1,114,112 possible code points, from U+0000 to U+10FFFF.

“What is the code point of A?”

02 / ASCII

ASCII Is the First 128 Code Points

U+0000 to U+007F match ASCII exactly, so English letters, digits and basic punctuation have the same number they had in 1963. In UTF-8 each takes a single byte.

“How many UTF-8 bytes does z take?”

03 / UTF8

UTF-8 Uses One to Four Bytes

Code points up to U+007F take one byte, up to U+07FF two, up to U+FFFF three, and the rest four. The lead byte’s high bits say how many bytes follow.

“How many bytes does € take?”

04 / UTF16

UTF-16 Uses Surrogate Pairs Above U+FFFF

Characters past U+FFFF are stored as two 16-bit units from the D800–DFFF range. JavaScript strings are UTF-16, which is why one emoji has a length of 2.

“What is "😊".length in JavaScript?”

05 / SURROGATES

Surrogates Aren’t Characters

U+D800 to U+DFFF are reserved for UTF-16 pairs and never stand alone. A lone surrogate in text means it was cut in half somewhere.

“Can U+DC00 be decoded on its own?”

06 / U

\u Escapes Are UTF-16 Units

JSON and older JavaScript write characters as \u plus four hex digits, so an emoji needs two escapes. Modern JavaScript also accepts the code point form \u{1F60A}.

“How many \u escapes does 😊 need in JSON?”

07 / HTML

HTML References Use the Code Point

é and é are the hex and decimal forms of the same reference. Unlike \u escapes, they use the full code point, so an emoji needs only one.

“What is é as a decimal reference?”

08 / THE

The Byte Order Mark Is U+FEFF

Some editors put U+FEFF at the start of a file to mark its encoding. In UTF-8 it appears as EF BB BF and can break CSV headers and shell scripts.

“What are the UTF-8 bytes of U+FEFF?”

09 / COMBINING

Combining Marks Add to the Previous Letter

é can be one code point, U+00E9, or e followed by U+0301 COMBINING ACUTE ACCENT. Both look identical but compare and hash differently.

“How many code points can é be?”

10 / ONE

One Emoji Can Be Several Code Points

Family and flag emoji join several code points, often with U+200D ZERO WIDTH JOINER between them. A single visible symbol can be seven or more code points long.

“What joins the parts of 👨‍👩‍👧?”

UTF-8, UTF-16 and UTF-32

The code point never changes; the encoding decides how many bytes store it.

UTF-8 on the Web

UTF-8 is the encoding of almost every web page and API, and it stores English text in one byte per letter. It is what the UTF-8 mode here shows.

UTF-16 in JavaScript, Java and Windows

These platforms store strings as 16-bit units, with surrogate pairs above U+FFFF. Their string length counts units, not characters.

UTF-32 for Fixed Width

UTF-32 spends four bytes on every code point, so the nth character is easy to find. It is rare in files but used inside some text engines.

Latin-1 and Windows-1252 Legacy Text

Older systems store é as the single byte E9. Read as UTF-8, that byte is invalid, which is why legacy files often show broken characters.

Escaped Text in JSON

JSON may contain any character directly, but many serialisers escape non-ASCII as \u units. Both forms parse to the same string.

Numeric References in HTML and XML

Markup can carry any character as a numeric reference even when the file’s encoding can’t. That makes references the safest way to embed one rare symbol.

Encoding Problems and Their Signs

Garbled text usually has a recognisable shape that points to the cause.

Tip 01

é Means UTF-8 Read as Latin-1

é is C3 A9 in UTF-8, and Latin-1 shows those two bytes as à and ©. When you see é where é belongs, the file was decoded with the wrong encoding.

Tip 02

� Means the Bytes Were Lost

The replacement character U+FFFD appears when a decoder hits invalid bytes and gives up. The original character usually can’t be recovered from the � itself.

Tip 03

String Length Isn’t Character Count

JavaScript, Java and C# count UTF-16 units, so emoji count twice. Count code points, or grapheme clusters for what users see, before enforcing a limit.

Tip 04

Cutting a String Can Split a Character

Slicing at a fixed byte or unit count can cut a surrogate pair or a UTF-8 sequence in half. That is how lone surrogates and broken bytes end up in databases.

Tip 05

An Invisible BOM in Headers

A CSV saved with a BOM makes its first column name start with U+FEFF, so lookups for it fail. Convert the header to code points to see it.

Tip 06

Look-alike Letters

Cyrillic а (U+0430) looks like Latin a (U+0061) but is a different character. Converting a suspicious domain or username to code points reveals the swap.

Tip 07

Normalise Before Comparing

Composed é and e plus a combining accent are equal to a reader but not to code. Apply NFC normalisation to both sides before comparing or sorting text from different sources.

When You Need the Code Points

Most uses come down to seeing exactly which characters a string contains.

Fixing Garbled Characters

Paste mojibake such as Café and look at its code points to see which bytes were misread. Then fix the encoding setting at the source instead of patching text.

Writing JSON and Test Fixtures

Generate \u escapes for accented names and emoji so fixtures stay ASCII-only. Escapes survive editors and tools that mishandle raw UTF-8.

Checking Emoji for Length Limits

Paste an emoji to see how many code points and UTF-16 units it uses before it hits an SMS or database column limit. Skin-tone and family emoji take several.

Spotting Homoglyph Attacks

Convert a lookalike domain or username to code points to catch Cyrillic or Greek letters posing as Latin ones. Phishing domains use exactly this trick.

Inserting Rare Symbols in HTML

Get the numeric reference for a symbol like ℃ or ⅓ and paste it into markup. It renders the same whatever the page’s encoding.

Reading Bytes From a Hex Dump

Copy a byte run from a debugger or Wireshark and decode it as UTF-8 to see the text it carries. Invalid runs are reported instead of guessed.

Teaching Character Encoding

Show how one letter becomes one byte while € becomes three and an emoji four. Side-by-side notations make UTF-8 and UTF-16 concrete.

Frequently Asked Questions