What Is Unicode?
Unicode is a universal character encoding standard that assigns a unique number, called a code point, to every character in every writing system in the world. From the letters of the Latin alphabet to Chinese characters, from mathematical symbols to emoji, Unicode provides a consistent way for computers to represent and process text regardless of language or platform.
Before Unicode, computing relied on hundreds of incompatible encoding systems. ASCII only covered 128 English characters. ISO-8859-1 extended that to 256 characters for Western European languages. Shift-JIS, GB2312, and Big5 handled Japanese, Chinese, and Taiwanese text respectively. Each system used the same byte values to represent different characters, making text conversion between systems error-prone and incomplete. A document encoded in one system would appear as gibberish when opened with a different system.
The Unicode Consortium, a nonprofit organization founded in 1991, developed Unicode to replace this fragmented landscape. Today, Unicode is maintained by representatives from major technology companies including Apple, Google, Microsoft, and IBM. The standard currently defines over 149,000 characters across 161 scripts, with new characters added in each annual release.
How Unicode Encoding Works
Every character in Unicode is identified by a code point, which is a number written in the format U+XXXX, where XXXX is a hexadecimal value. For example, the capital letter A has the code point U+0041, while the snowflake emoji is U+2744. Code points range from U+0000 to U+10FFFF, giving Unicode space for over 1.1 million characters.
When a computer stores or transmits text, code points must be converted into byte sequences using an encoding form. The three primary encoding forms are UTF-8, UTF-16, and UTF-32. UTF-8 is the most widely used encoding on the web and in modern operating systems. It uses one to four bytes per character and is backward-compatible with ASCII, meaning any valid ASCII text is also valid UTF-8.
UTF-16 uses two or four bytes per character and is common in Windows and Java environments. UTF-32 uses exactly four bytes per character, making it the simplest encoding but also the most memory-intensive. For most practical purposes, UTF-8 is the encoding you will encounter and use.
Unicode Blocks and Categories
Unicode organizes characters into blocks, which are ranges of code points dedicated to related characters. The Basic Latin block (U+0000 to U+007F) contains the standard ASCII characters. The Latin-1 Supplement block (U+0080 to U+00FF) adds accented characters for Western European languages. The CJK Unified Ideographs block (U+4E00 to U+9FFF) contains over 20,000 Chinese, Japanese, and Korean characters.
Beyond language-specific blocks, Unicode includes several categories of special characters. The General Punctuation block (U+2000 to U+206F) contains various space characters, dashes, and invisible formatting characters. The Symbol and Punctuation block (U+2000 to U+206F) houses mathematical operators, currency symbols, and geometric shapes. The Miscellaneous Symbols block (U+2600 to U+26FF) contains emoji-like symbols such as weather icons and warning signs.
Understanding these blocks is important because it tells you where to find specific characters and helps predict how they will behave in different contexts. Characters from the same block often share rendering properties, input behaviors, and font support characteristics.
Invisible Characters in Unicode
One of the most interesting aspects of Unicode is its collection of invisible characters. These are characters that occupy space in a text stream but produce no visible output when rendered. They exist for technical purposes such as controlling line breaks, managing bidirectional text flow, and marking formatting boundaries.
The most commonly used invisible characters include the Zero Width Space (U+200B), which provides line break hints without visible spacing. The No-Break Space (U+00A0) prevents line breaks at its position while still providing visual spacing. The Hangul Filler (U+3164) is invisible on most platforms and is widely used for creating blank text in messaging apps and social media.
Other invisible characters serve more specialized purposes. Directional markers like the Left-to-Right Mark (U+200E) and Right-to-Left Mark (U+200F) control text direction in mixed-language documents. The Word Joiner (U+2060) prevents line breaks without adding space, similar to No-Break Space but invisible. The Soft Hyphen (U+00AD) indicates a valid line break position within a word, but only when the text needs to be wrapped.
These invisible characters have found creative uses beyond their original technical purposes. People use them to send blank messages, create unique usernames, bypass character restrictions, and add invisible watermarks to text content. Learn more about these use cases in our guides on invisible characters explained and using invisible characters in Discord.
The Importance of Code Points vs Glyphs
A critical distinction in Unicode is between a code point and a glyph. A code point is the abstract number assigned to a character by the Unicode standard. A glyph is the visual representation of that character when rendered by a font. The same code point can produce different glyphs depending on the font, operating system, or rendering engine being used.
This distinction explains why invisible characters exist. Some code points are defined to have no glyph at all. Others may have a glyph in some fonts but not others. The Hangul Filler (U+3164), for instance, is designed as a full-width placeholder character. In Korean text rendering, it occupies the space of a full character cell but displays nothing. On modern platforms, it consistently appears as completely invisible.
Understanding this difference helps explain why invisible characters behave differently across platforms. A character that is invisible in one font may show a small box or placeholder glyph in another. The Zero Width Space, by contrast, is designed to produce no output in any font, making it more consistently invisible across different systems.
Unicode and Emoji
Emoji are perhaps the most visible part of Unicode for everyday users. The first emoji were added to Unicode in version 6.0 in 2010, and they have since grown to include thousands of characters. Each emoji is assigned a code point just like any other character, and platforms render them using their own design interpretations.
Unicode emoji include skin tone modifiers (U+1F3FB to U+1F3FF), which allow users to select from five skin tone options for human emoji. Gender modifiers and profession emoji allow further customization. Sequence-based emoji like family groups, flags, and combined symbols use multiple code points to represent a single visual element.
The emoji subsystem demonstrates Unicode's ability to evolve with user needs while maintaining backward compatibility. Older devices that do not recognize newer emoji code points simply display a placeholder square, but the text data remains intact and can be interpreted correctly by newer systems.
How Different Platforms Handle Unicode
While Unicode defines the abstract characters, each operating system and application is responsible for rendering them. This leads to visual differences between platforms. Apple, Google, and Microsoft each design their own emoji sets, so a smiley face looks different on an iPhone than on an Android phone. These differences extend to how fonts handle less common characters, including invisible ones.
Web browsers handle Unicode through a combination of system fonts and web fonts. When a character is not available in any installed font, the browser may display a replacement character, typically a hollow square or question mark. This is why some invisible characters may appear as visible boxes on older or non-standard systems.
Messaging apps add another layer of complexity. Some apps normalize text input by stripping certain Unicode characters before processing. WhatsApp, for example, trims regular spaces but not the Hangul Filler. This is why different invisible characters work on different platforms, and why testing is important when using invisible characters for practical purposes. See our guide to using blank text in forms for more details on how platforms handle these characters.
Related Guides
- Invisible Characters Explained — A deep dive into every type of invisible character in Unicode.
- Zero Width Space in HTML — How to use zero width space characters in web development.
- Blank Text for Online Forms — Using invisible characters to fill required form fields.
Try It Now
Use our free blank text generator to create invisible characters and learn how they work:
Open Blank Text Generator