Unicode Character Inspector
Every character in this tool gets a row showing: the character itself, the codepoint in `U+HHHH` hex, the UTF-8 byte sequence, an HTML decimal entity (`&#NNNN;`), a CSS escape (`\HHHH`), and the Unicode block it belongs to. Useful for debugging mojibake, finding the exact codepoint of a confusing character (is that a hyphen-minus or an em dash?), or seeing how many bytes your string takes in UTF-8 storage. Handles surrogate pairs correctly using Array.from for proper codepoint iteration.
string.length
13
Codepoints
12
UTF-8 bytes
19
| Char | Codepoint | UTF-8 bytes | HTML entity | CSS escape | Block |
|---|---|---|---|---|---|
| H | U+0048 | 48 | H | \0048 | Basic Latin (ASCII) |
| e | U+0065 | 65 | e | \0065 | Basic Latin (ASCII) |
| l | U+006C | 6C | l | \006C | Basic Latin (ASCII) |
| l | U+006C | 6C | l | \006C | Basic Latin (ASCII) |
| o | U+006F | 6F | o | \006F | Basic Latin (ASCII) |
| , | U+002C | 2C | , | \002C | Basic Latin (ASCII) |
| ␠ | U+0020 | 20 |   | \0020 | Basic Latin (ASCII) |
| 世 | U+4E16 | E4 B8 96 | 世 | \4E16 | CJK Unified Ideographs |
| 界 | U+754C | E7 95 8C | 界 | \754C | CJK Unified Ideographs |
| ! | U+0021 | 21 | ! | \0021 | Basic Latin (ASCII) |
| ␠ | U+0020 | 20 |   | \0020 | Basic Latin (ASCII) |
| 🌏 | U+1F30F | F0 9F 8C 8F | 🌏 | \1F30F | Miscellaneous Symbols & Pictographs |
Codepoints iterated with Array.from (surrogate-pair safe). Block names cover the most common Unicode ranges — niche blocks may show '—'.
How to use
- Paste or type text in the input box.
- Read each character's metadata in the table.
- Copy the parsed table as TSV with the copy button.
Frequently asked questions
- Why is 🌏 one row but len = 2?
- Emoji and other supplementary plane codepoints (>U+FFFF) take 2 UTF-16 code units in JavaScript strings, but they're one user-perceived character. The tool counts codepoints (Array.from) for the row count, but reports `string.length` separately so you can see the discrepancy.
- Total bytes vs UTF-8 column — same?
- Yes. Total bytes = sum of each row's UTF-8 byte count, computed via TextEncoder for accuracy on edge cases. Useful for sizing storage or wire format.
- What's mojibake?
- Garbled text from interpreting bytes in the wrong encoding. Classic: UTF-8 'é' (C3 A9) read as Latin-1 becomes 'é'. This tool can help diagnose it — paste the garbled string and see if the codepoints match what 'wrong-decoded UTF-8' would produce.
- What about combining characters / grapheme clusters?
- We show codepoints, not graphemes. 'é' can be one codepoint (U+00E9) or two (e + combining acute, U+0065 + U+0301). The visual character is the same; the byte representation isn't. For proper grapheme counting, you'd need Intl.Segmenter — beyond this tool's scope.
Guides on this topic
- Unicode Normalization and Invisible Characters Why two identical-looking strings can fail an equality check, what NFC, NFD, NFKC and NFKD actually do, which invisible characters hide in pasted text, and the rules that keep text handling safe.
- Why your text turns into strange characters A name comes out as é, a Korean file becomes a wall of nonsense, or every accent is a black diamond. Text is stored as bytes and an encoding is only an agreement about what those bytes mean, so the damage tells you exactly which agreement was broken.
Related tools
Character & Word Counter
Count characters, words, sentences, lines, and bytes in real time.
ASCII Code Table
Browse and search the 256-row ASCII / extended-ASCII table — decimal, hex, octal, binary, and the named control characters.
Invisible / Zero-Width Character Detector
Spot NBSPs, zero-width characters, bidi marks, and tabs in pasted text — then clean them out.
Random Bytes Generator
Generate cryptographically secure random bytes in 9 output formats — hex, Base64, Base64URL, binary, decimal, C array, Python bytes, UUID v4.
Soundex Phonetic Code Generator
Generate the American Soundex code for names or words — a 4-character phonetic key that groups similar-sounding spellings together. Encodes one name per line in your browser.
Mojibake Fixer (Repair Garbled UTF-8)
Repair text mangled by a wrong-encoding round-trip — turn café, don’t, and 😀 back into café, don't, and 😀 — automatically, safely, and entirely in your browser.