Article — Unicode Text Converter
Unicode text converter — text to U+ code points and back
The Unicode text converter turns any text into its sequence of Unicode code points (in U+XXXX format) and back. It also displays UTF-8 bytes, UTF-16 units, and decimal code-point values. The Unicode range is U+0000 to U+10FFFF — about 1.1 million possible characters, with 155 000+ assigned in Unicode 16 (2024).
Unicode is the standard that assigns every written character a unique integer code point. ASCII (the original 128-character set from 1963) is the first slice — U+0000 to U+007F. Unicode then extends across every script in active use plus historical scripts, mathematical symbols, technical icons, and emoji.
What is a Unicode text converter?
A Unicode text converter takes a string and outputs its underlying numerical representation: the sequence of code points (U+XXXX), the UTF-8 bytes, the UTF-16 units, and decimal values. Reverse decoding is also supported — paste "U+1F600 U+0041" and the tool reconstructs the emoji and letter.
The converter has two main use cases. First, debugging: when text renders incorrectly (mojibake, missing glyphs, broken encoding), seeing the actual code points reveals what the bytes really are. Second, escape-code generation: HTML, JavaScript, CSS, and most programming languages have syntax for inserting Unicode by code point, and the converter formats it for direct paste.
Unicode code points and the U+ notation
A code point is just an integer between 0 and 0x10FFFF (1 114 112 possible values). The standard notation is "U+" followed by the hexadecimal value with at least 4 digits — U+0041 for "A", U+1F600 for "". Code points are abstract — they do not specify how the integer is stored. UTF-8 and UTF-16 are two different encoding schemes that turn code points into bytes.
- U+0000 to U+007F = ASCII (128 characters)
- U+0080 to U+07FF = Latin extended, Greek, Cyrillic, Hebrew, Arabic
- U+0800 to U+FFFF = CJK, hiragana, katakana, Thai, Devanagari
- U+10000 to U+10FFFF = supplementary plane: math symbols, emoji, rare scripts
UTF-8 vs UTF-16 in the Unicode text converter
UTF-8 encodes each code point as 1-4 bytes. ASCII characters use 1 byte (identical to ASCII files). Latin accents, Greek, Cyrillic use 2 bytes. CJK ideographs use 3 bytes. Emoji and rare scripts use 4 bytes. The variable-length scheme makes UTF-8 efficient for English-heavy text and the most common encoding on the web (95%+).
UTF-16 encodes each code point as 2 or 4 bytes. Characters in the Basic Multilingual Plane (U+0000 to U+FFFF) use 2 bytes; characters above U+FFFF use a surrogate pair of 4 bytes. UTF-16 is the internal string encoding of JavaScript, Java, Windows, and.NET. The Unicode text converter shows both encodings side by side so you can see the byte cost of any string.
The emoji (party popper, U+1F389) is one code point. UTF-8: 4 bytes (F0 9F 8E 89). UTF-16: 2 surrogate units (D83C DF89). JavaScript's ''.length returns 2 because JavaScript counts UTF-16 units. Use [...str].length to get the code-point count (1).
Unicode text converter for emoji and CJK
Emoji live in the supplementary plane (U+1F300-1FAFF mostly). They are 4-byte UTF-8 sequences. Many emoji are actually multi-code-point sequences joined by zero-width joiner (U+200D). The family emoji is 5 separate code points stitched into a single rendered glyph. The Unicode text converter shows each component, useful for debugging emoji rendering issues.
CJK (Chinese, Japanese, Korean) ideographs occupy the largest contiguous Unicode block: U+4E00-9FFF holds 20 992 characters. Most everyday CJK text fits in this range and uses 3 UTF-8 bytes per character. Less common ideographs in CJK Extension blocks (U+20000-2FFFF) use 4 bytes.
ASCII letter = 1 byte café é = 2 bytesCyrillic letter = 2 bytes 中文 char = 3 bytes emoji = 4 bytes ZWJ family = 4 cp + ZWJMajor Unicode blocks
Unicode is organised into blocks, each covering a script or category. The Unicode text converter cannot enumerate all 320+ blocks, but the most common ones cover most everyday text. Basic Latin handles English and most Western European text without accents. Latin-1 Supplement and Latin Extended-A add accented letters for French, Spanish, Polish, Czech, and other European languages. Greek, Cyrillic, Hebrew, Arabic, and Devanagari each have dedicated blocks. CJK Unified Ideographs covers Chinese, Japanese, and Korean. Emoji and Symbols spans U+2000-2FFF (general symbols) and U+1F000-1FFFF (emoji, transport, signs).
Decoding U+ code points back to text
The Unicode text converter also runs in reverse: paste a sequence like "U+0048 U+0065 U+006C U+006C U+006F" and get back "Hello". The converter accepts several formats: "U+XXXX", "u+xxxx", "0xXXXX", or just "XXXX". Separators can be spaces, commas, or semicolons. This is useful when copying Unicode escapes from documentation or fixing broken text where the hex codes are visible but the rendered glyphs are not.
Common Unicode conversion mistakes
Counting characters incorrectly: JavaScript's .length counts UTF-16 units, not code points. PHP's strlen() counts bytes, not characters. Always use code-point-aware functions (mb_strlen, [...str].length) for human-meaningful counts.
Storing UTF-8 in a 3-byte-only column: MySQL's old utf8 charset is actually a 3-byte subset and rejects emoji. Always use utf8mb4 for full Unicode support. PostgreSQL, SQLite, and SQL Server are full Unicode by default.
Confusing escape syntaxes across languages: HTML uses 😀, JavaScript uses '\u{1F600}' (with braces), Python uses '\U0001F600' (8 hex digits), CSS uses "1F600 " (space-terminated). The Unicode text converter formats each correctly so you can copy directly.
Unicode text converter quick rules
To check whether a string contains emoji: look at the code points — anything above U+FFFF is supplementary plane (probably emoji or rare CJK). To estimate UTF-8 byte size: ASCII is 1 byte, accents 2, CJK 3, emoji 4 — multiply character counts accordingly. To debug rendering: paste the broken text into the Unicode text converter; if code points are sensible, the font is missing; if code points are nonsense, the encoding is wrong (often Latin-1 misinterpreted as UTF-8 or vice versa).
When designing a database column or API field, know the byte budget of your character set. A VARCHAR(255) UTF-8 column stores up to 255 characters of ASCII, but only ~63 characters if all emoji (255 ÷ 4 bytes). For tweet-style 280-character limits, the actual byte ceiling is 280 × 4 = 1120 bytes worst case. The Unicode text converter shows the exact byte count for any string so you can plan storage and bandwidth accordingly.