tomai
Log in
Free · Text Tools

Unicode Converter

Text ↔ \uXXXX escapes, plus a per-character code-point inspector

Text
Unicode escapes
Character inspector
Char Code point UTF-8 bytes

What Is a Unicode Converter?

Behind every character on screen sits a numeric code point — a letter, an emoji, a Chinese character each have one — and UTF-8 encodes those code points into bytes. Most of the time you never see this layer, but it surfaces in escaped JSON strings, mojibake and encoding bugs. This tool converts text to \uXXXX escape sequences and back, and inspects every character's code point, decimal value and raw UTF-8 bytes, updating as you type. It is aimed at developers, translators and anyone who has stared at a string that renders as garbage. Every conversion is instant, so testing a hypothesis about a string takes seconds rather than a search through documentation.

What it decodes and inspects

  • 🔄 Text to \uXXXX escape sequences, and escapes back to text
  • 🔍 Per-character inspector: code point U+XXXX, decimal value and UTF-8 bytes
  • 🔢 Handles characters beyond the basic plane, like emoji, by code point
  • ⚡ Results update live as you type

When the encoding layer matters

  • Debugging a string that renders as gibberish in an email or database
  • Writing JSON by hand with escape sequences for non-ASCII text
  • Understanding why an emoji or CJK character breaks a legacy system
  • Checking which bytes a file actually stores for a given character

Everything runs locally in your browser; no text is uploaded. Escaping only affects non-ASCII and control characters, so plain ASCII output stays readable.

Code points, surrogates and UTF-8 widths

  • U+1F600 is one character, two UTF-16 units (surrogate pair), four UTF-8 bytes — three lengths for one emoji.
  • \uXXXX escapes encode UTF-16; \u{...} encodes full code points — the wrong language silently splits emoji.
  • The byte view shows exactly what storage and network layers will see.

One character is not one byte

Escapes both ways

Plain text becomes \uXXXX sequences with uppercase four-digit hex, while printable ASCII passes through untouched; pasting escapes back in converts them to characters again.

🔒

Character-by-character inspector

Every code point in your string is listed with its U+XXXX form, its decimal value and its raw UTF-8 bytes — emoji, Chinese characters and control codes included, up to the first 200.

🎯

For decoding mojibake

When a JSON payload shows \u4f60\u597d instead of text, paste it here to read the real string, or flip any garbled output into escapes to see exactly which bytes are wrong.

Frequently asked questions

What's the difference between a code point and a UTF-16 code unit?

Most characters fit in one 16-bit code unit, but characters outside the Basic Multilingual Plane (many emoji, for example) need two — a "surrogate pair". The inspector reads by code point, so those show up correctly as one row, not two.

Why would I need \uXXXX escapes?

They're the standard way to represent non-ASCII characters inside JSON strings, JavaScript string literals, and many config/property file formats that don't accept raw UTF-8 text.

Is my text uploaded anywhere?

No. Character inspection and conversion run locally - the tool reads the code points already in your browser and shows them without any network request.

Why does my emoji show as two strange boxes in some logs?

The logger printed the surrogate pair as two separate escapes (D83D DE00). Anything treating them independently breaks them apart; combine them or switch to code-point escapes like \u{1F600} and the face returns intact.

Related tools

Related tools