Unicode Character Inspector
See every code point in a string with its U+ number, category and UTF-8 bytes, and spot zero-width spaces, non-breaking spaces and decomposed accents.
Free · No sign-up · Your inputs stay in your browser
Input
Inspect Unicode code points
Output
11 code points, 22 UTF-8 bytes
| Char | Code point | Category | UTF-8 | Escape |
|---|---|---|---|---|
| C | U+0043 | Uppercase letter | 43 | \u0043 |
| a | U+0061 | Lowercase letter | 61 | \u0061 |
| f | U+0066 | Lowercase letter | 66 | \u0066 |
| é | U+00E9 | Lowercase letter | c3 a9 | \u00E9 |
| · | U+0020 | Space separator | 20 | \u0020 |
| ✓ | U+2713 | Symbol | e2 9c 93 | \u2713 |
| · | U+0020 | Space separator | 20 | \u0020 |
| 👍 | U+1F44D | Emoji / pictograph | f0 9f 91 8d | \u{1F44D} |
| 🏽 | U+1F3FD | Symbol | f0 9f 8f bd | \u{1F3FD} |
| · | U+200B | Format (invisible) | e2 80 8b | \u200B |
| ! | U+0021 | Punctuation | 21 | \u0021 |
NFC composes é into one code point; NFD splits it into e plus a combining accent. macOS file names arrive as NFD, which is a classic cause of 'file not found' on Linux.
Runs in this browser. Nothing you paste is sent to a server.
About this tool
Method, assumptions, practical next steps, and limits.
When two strings that look equal are not
The usual suspects are a zero-width space (U+200B) pasted from a web page, a non-breaking space (U+00A0) from a word processor, a byte order mark (U+FEFF) at the start of a file, and an accented letter stored as a base letter plus a combining mark. All of them make === fail and a database lookup miss.
NFC and NFD
Unicode allows é to be one code point (U+00E9) or two (e followed by U+0301). Unicode Standard Annex 15 defines NFC, which composes them, and NFD, which decomposes them. macOS file systems have historically stored names decomposed. Normalise to NFC on input with PHP's Normalizer::normalize() or JavaScript's String.prototype.normalize() before comparing.