Look up the code behind every character
This Unicode converter breaks text down one character at a time: code point, official Unicode name, block, category, UTF-8 and UTF-16 bytes, HTML entities and escape sequences for JavaScript, CSS, Python and URLs. It also flags invisible and look-alike characters, converts in both directions, normalizes text and finds special characters by name. Everything runs in your browser: nothing is sent.
How to use it
- Paste your text into “Text to analyze”. The counters show “Visible characters (graphemes)”, “Code points”, “UTF-16 code units” and “UTF-8 bytes”.
- In the table, click any code point to open “Character details”, where every value has its own “Copy” button.
- Check the “Invisible or misleading characters” box, then use “Remove invisible characters”, “Replace special spaces” or “Replace homoglyphs with Latin letters”.
- In “Convert both ways”, type in any field: U+1F600 gives 😀, ☺ gives ☺, é and C3 A9 both give é.
- “Find a character” searches by name or keyword: “euro” returns €. The “Special characters by theme” palette copies a character in one click.
Code points and encodings in plain words
Unicode gives a unique number to almost 150,000 characters. That number, the code point, is written in hex after “U+”: é is U+00E9, the pound sign £ is U+00A3, the emoji 😀 is U+1F600. To store it in a file, an encoding turns the number into bytes. In UTF-8, the standard on the web, a plain English letter takes 1 byte, £ takes 2 (C2 A3), € takes 3 (E2 82 AC) and an emoji 4 (F0 9F 98 80). UTF-16, used inside JavaScript, Java and Windows, counts 16-bit units: £ fits in one (00A3), 😀 needs two (D83D DE00). That is why a single emoji has a length of 2 in JavaScript.
Why “é” can be written two ways
The letter in “café” can be one code point (U+00E9) or a plain e followed by a combining acute accent (U+0065 U+0301). On screen they look identical; to a computer they are different strings; a search may miss a match. Normalization fixes this: NFC composes, NFD decomposes. NFKC and NFKD go further and replace compatibility forms, so the ligature fi becomes “fi” and the superscript ² becomes 2.
Composed emoji
👍🏽 is 2 code points, the thumb and a skin tone modifier, for 8 UTF-8 bytes. The family 👨👩👧 is 5 code points: three people joined by two zero width joiners (U+200D), 18 bytes in total. The tool groups them into graphemes, what a reader sees as one character.
Invisible characters and the trouble they cause
The zero width space U+200B, the joiners U+200C and U+200D, the byte order mark U+FEFF and the direction marks U+200E and U+200F take up no room on screen. Pasted from elsewhere, they make two equal-looking strings compare as different, turn a password you typed correctly into a wrong one, or break code. Non-breaking spaces (U+00A0) can also upset a spreadsheet formula. The tool shows exactly where each one sits.
Homoglyphs and phishing
The Cyrillic “р” (U+0440) and “а” (U+0430) look exactly like Latin p and a. Written with them, “раssword” is not “password”, and a fake username or web address can slip past a quick glance. The tool flags such letters when they are mixed into Latin text. It catches the common cases, not every trick, so if a link looks suspicious, type the address yourself.
Typing a special character
Depending on your system, you can hold a key to pick an accented variant, enter a numeric code on the keypad, open a character viewer, or type the hex code after a dedicated shortcut. Copying the character from this page is often quicker.
FAQ
Why does “naïve” take 6 bytes?
In UTF-8, ï takes 2 bytes, so 5 characters become 6 bytes.
Can I search in plain English?
Yes. The search reads the official Unicode names for common blocks, plus shortcuts such as tick, quote or nbsp. Characters outside the built-in table still show their block and category.
What does “Remove invisible characters” delete?
Zero width characters, direction marks and control characters, except tabs and line breaks. Joiners inside a composed emoji are kept, so the emoji stays whole.
Is my text sent anywhere?
No. Everything happens in your browser. Text under 20,000 characters is kept in local storage so it is there on your next visit.