Unicode is the universal standard that gives every character in every writing system, plus symbols and emoji, its own unique number called a code point. Your phone, browser and word processor all use those numbers, which is why a € or a é you copy in one app still shows up as € or é in another.
€DetailsWhat Unicode actually does
Computers only store numbers. To store text, every system needs an agreed table that says which number means which character. Before Unicode there were hundreds of these tables (called character sets or code pages), and they disagreed with each other. The number 128 meant € in one Windows code page, Ç in the old DOS code page, and nothing at all in plain ASCII. Send a file from one system to another and accented letters turned into garbage.
Unicode fixes this with one table for everything. It assigns a permanent number to each character, whether that is the Latin letter A, the Greek letter π, the Chinese character 中, a mathematical operator like ∑, or an emoji. Once a character is assigned a code point, that number never changes. The standard is maintained by the Unicode Consortium, a nonprofit whose members include the major operating system, browser and software companies, and it is kept in sync with the international standard ISO/IEC 10646.
Today Unicode covers roughly 160,000 characters across well over a hundred scripts, and it adds more with each new version. The first version was published in 1991.
Code points: the number behind every character
A code point is written as U+ followed by at least four hexadecimal digits. Some examples:
| Character | Code point | Unicode name |
|---|---|---|
| A | U+0041 | LATIN CAPITAL LETTER A |
| é | U+00E9 | LATIN SMALL LETTER E WITH ACUTE |
| ° | U+00B0 | DEGREE SIGN |
| π | U+03C0 | GREEK SMALL LETTER PI |
| € | U+20AC | EURO SIGN |
| → | U+2192 | RIGHTWARDS ARROW |
| ✓ | U+2713 | CHECK MARK |
| 😀 | U+1F600 | GRINNING FACE |
The hexadecimal number is just another way of writing an ordinary integer. U+20AC is 8364 in decimal, which is why the HTML reference € also produces the euro sign. Every character also has an official name in capital letters. Names are unique and never change, even when they contain a spelling mistake (the Greek letter λ is officially GREEK SMALL LETTER LAMDA, without the b).
If you want to see the code point of any character, paste it into the Unicode Lookup tool. To go the other way, from a code point like U+2713 to the character, use the Unicode Converter.
Planes and blocks: how the code space is organized
Unicode has room for 1,114,112 code points, from U+0000 to U+10FFFF. That space is divided into 17 planes of 65,536 code points each:
- Plane 0, the Basic Multilingual Plane (BMP), U+0000 to U+FFFF. Almost all characters in everyday use live here: Latin, Greek, Cyrillic, Arabic, Hebrew, the most common Chinese, Japanese and Korean characters, punctuation, currency signs, arrows, math operators and most classic symbols.
- Plane 1, the Supplementary Multilingual Plane, U+10000 to U+1FFFF. Most emoji, historic scripts, musical notation and the mathematical alphanumeric symbols (the bold, italic and script letters people use for “fancy text”).
- Plane 2 and Plane 3. Additional, rarer Chinese, Japanese and Korean ideographs.
- Plane 14. Special-purpose format characters such as tag characters and extra variation selectors.
- Planes 15 and 16. Private use: code points that Unicode will never assign, so organizations can use them for their own icons or custom glyphs.
Most of the space is still empty, so there is plenty of room to grow. Within each plane, characters are grouped into named blocks such as Basic Latin, Latin-1 Supplement, Greek and Coptic, Arrows, Mathematical Operators and Dingbats. SymbolHero’s symbol categories are built on top of these blocks, regrouped by what people actually look for.
Encodings: UTF-8, UTF-16 and UTF-32
A code point is an abstract number. To save text in a file or send it across a network, that number has to be turned into bytes. The rules for doing that are called an encoding, and Unicode defines three main ones.
UTF-8
UTF-8 uses one to four bytes per character. The first 128 code points (plain ASCII) take exactly one byte, identical to ASCII, so any old ASCII file is already valid UTF-8. Accented Latin letters and Greek take two bytes, most other BMP symbols take three, and emoji take four. UTF-8 is the dominant encoding on the web and the default for most modern software, file formats and programming languages. When in doubt, use UTF-8.
UTF-16
UTF-16 uses two bytes for every character in the Basic Multilingual Plane and four bytes for everything above it. Those four-byte characters are stored as a surrogate pair: two special 16-bit values from the range U+D800 to U+DFFF, which is reserved for exactly this purpose. Windows, Java and JavaScript use UTF-16 internally, which is why a single emoji can count as two characters in JavaScript’s length.
UTF-32
UTF-32 uses exactly four bytes for every code point. It is simple to process because every character is the same size, but it wastes space, so it is rarely used for storage or transmission.
| Character | Code point | UTF-8 bytes | UTF-16 units | UTF-32 |
|---|---|---|---|---|
| A | U+0041 | 41 | 0041 | 00000041 |
| é | U+00E9 | C3 A9 | 00E9 | 000000E9 |
| € | U+20AC | E2 82 AC | 20AC | 000020AC |
| 😀 | U+1F600 | F0 9F 98 80 | D83D DE00 | 0001F600 |
The key point: the character and its code point stay the same no matter which encoding you use. Only the bytes differ. Problems start when text is written in one encoding and read as another. The two bytes of é in UTF-8 (C3 A9) read as Windows-1252 become “é”, a classic symptom covered in our guide to why symbols show up as boxes or question marks.
Characters, glyphs and what you see on screen
Unicode defines characters, not their appearance. The drawing you see is a glyph, and it comes from whatever font is displaying the text. That is why the same heart ♥ or emoji looks slightly different on an iPhone, a Windows PC and an Android phone: each platform draws it with its own font. If no installed font contains a glyph for a character, you see an empty box instead. The underlying character is still there and still correct, it just cannot be drawn.
A few other distinctions matter in practice:
- One visible character can be several code points. The family emoji 👨👩👧 is five code points: three people joined by two invisible zero width joiner characters. Letters with accents can also be built from a base letter plus a combining mark.
- Look-alikes are different characters. The Ohm sign Ω (U+2126) and the Greek capital omega Ω (U+03A9) look identical but have different code points. So do the minus sign − and the hyphen -.
- Some characters are invisible. Spaces, joiners and format controls such as the zero width space have code points but no visible shape.
Normalization: when two sequences mean the same thing
Because é can be stored either as the single code point U+00E9 or as e (U+0065) followed by a combining acute accent (U+0301), Unicode defines normalization forms that convert text to a consistent representation. NFC composes characters where possible, NFD decomposes them. Search engines, databases and programming languages use normalization so that visually identical text compares as equal. If a search for a word with an accent fails even though you can see the word on the page, a normalization mismatch is a likely cause.
Why Unicode matters to you
- Copy and paste just works. When you copy a symbol from the SymbolHero symbol search, you copy its code point, and any Unicode-aware app can display it.
- Keyboard shortcuts map to code points. Typing U+00B0 in Microsoft Word and pressing Alt + X produces the degree sign. Windows Alt codes with a leading zero, such as Alt + 0176, come from the older Windows-1252 table, which is one reason not every character has an Alt code. See the Alt code finder for the ones that do.
- Web pages can mix any languages and symbols on one page, as long as the page is served as UTF-8.
- Emoji are Unicode characters, not images, which is why you can type them in any text field.
How to type any Unicode character
- Windows: press Windows + . to open the emoji and symbol panel, then open its Symbols tab. For anything else, search the Start menu for Character Map.
- Mac: press Control + Command + Space to open the Character Viewer and search by name.
- Microsoft Word: type the hex code point (for example
2192) and press Alt + X to turn it into →. - Google Docs: Insert > Special characters, then search by name or draw the symbol.
- HTML: use a numeric reference such as
→or→. See HTML entities explained. - Anywhere: search for the character on SymbolHero and click to copy it.
Frequently asked questions
Is Unicode the same as UTF-8?
No. Unicode is the table of characters and their code points. UTF-8 is one way of encoding those code points as bytes. UTF-16 and UTF-32 are other encodings of the same Unicode characters.
How many characters are in Unicode?
Roughly 160,000 assigned characters out of a possible 1,114,112 code points. The number grows with each new version, mostly through new scripts, CJK ideographs and emoji.
What does the “U+” mean?
It is simply the conventional prefix for a Unicode code point, followed by the number in hexadecimal. U+00E9 means code point 0xE9, which is 233 in decimal.
Why does a character show as a box even though it is valid Unicode?
Your device has no font containing a glyph for it. The character data is intact; installing a font with wider coverage or viewing it on a newer system usually fixes the display.
Is ASCII part of Unicode?
Yes. The first 128 Unicode code points are identical to ASCII, and UTF-8 encodes them with the same single bytes. Read more in Unicode vs ASCII.