Blank Character Comparison Hub
The full reference for invisible and blank Unicode characters — 20+ characters, platform support, and how they differ. Need the fast copy-and-go tool instead? Use the blank character generator.
Full character catalog
24 invisible and blank-width characters, each with its Unicode code point and behavior notes.
Platform support matrix
General behavior across common platforms. Individual apps update often, so treat this as a starting point and test before relying on it for anything critical.
Zero-width vs blank-width vs whitespace: what’s the difference
These three terms get used interchangeably, but they describe different behavior at the Unicode level, and that difference decides where each character will actually work.
Zero-width characters
These have no width at all — they take up no visual space and don’t move the cursor visibly. They exist mainly for text-shaping purposes: joining or separating script glyphs (like Zero Width Joiner in emoji sequences), or marking word boundaries for layout engines. Because they render as literally nothing, they’re the most likely to get silently stripped by input fields that trim “empty” content.
Blank-width characters
These occupy real character width but render with no visible glyph — think of them as a printable character that happens to look empty, like a Hangul filler or a Braille blank pattern. Because the system sees them as an ordinary printable character rather than whitespace, they usually survive trimming logic that strips zero-width or whitespace characters.
Whitespace variants
These are true space characters with visible width, just not the standard U+0020 space — en space, em space, thin space, ideographic space, and similar. They’re recognized as whitespace by most systems, so they get collapsed or trimmed at the start/end of fields more often than blank-width characters, but they’re more predictable for controlling spacing width inside a line of text.
Technical deep dive
How trimming logic usually works
Most platforms run some version of trim() on user input before saving it, which strips characters matched by the Unicode whitespace property or a hardcoded list of “control” characters. Zero-width characters and standard whitespace variants are commonly included in that list. Blank-width characters like the Hangul filler or Braille pattern blank are usually not, because they’re categorized as printable symbols, not whitespace — this is the main reason they’re the most reliable choice for bios, usernames, and other fields that auto-trim.
Normalization and encoding
Unicode normalization (NFC/NFKC), which many platforms apply on save, can also collapse or remove certain formatting characters. This mostly affects zero-width joiners and directional marks rather than blank-width or whitespace variant characters, which is another reason results vary by platform and by field type within the same platform.
Line Separator and Paragraph Separator
U+2028 and U+2029 are technically whitespace-adjacent control characters used to mark line and paragraph breaks in plain text. Single-line input fields (usernames, display names) almost always reject or strip them since they imply a line break where one isn’t allowed. Multi-line fields (messages, documents, bios) are more likely to honor them, sometimes rendering an actual line break instead of a blank character.
Why identical-looking characters behave differently
Several characters in this catalog render identically — blank — in most fonts, but belong to different Unicode categories (Zs for space separators, Cf for formatting characters, So for symbols). Category is what trimming and validation logic actually checks, not visual appearance, which is why two characters that look the same can have completely different survival rates on the same platform.
Which one should you use
Pick your use case for a direct recommendation.
Username
Username fields validate strictly and almost always trim leading/trailing whitespace and zero-width characters. A blank-width character survives best because it reads as a normal printable character.
Bio
Bios are usually multi-line and more tolerant, so both zero-width and blank-width characters work for creating blank lines or invisible spacing between sections.
Message
Chat apps generally preserve whitespace variants and blank-width characters within a message body, and some (like Discord) even honor Line Separator for a real line break.
Formatting / spacing control
For controlling visible gap width inside a line — for example aligning text — a whitespace variant with a defined width is more predictable than a zero-width character.
File names
Operating systems trim trailing whitespace from file names and some reject zero-width characters outright. A blank-width character is the most consistent option across Windows, macOS, and mobile.
Programming / code
Avoid invisible characters in source code entirely where possible — they cause hard-to-debug errors and some linters/CI systems will flag or reject them. If you need an intentional zero-width marker (for example, testing input sanitization), Zero Width Space and Word Joiner are the most recognized by tooling.
Examples
Blank Instagram bio line
Insert a Braille Pattern Blank on its own line between sections of your bio to create visible spacing without an empty-line error.
Invisible name prefix for sorting
Some list-based apps sort a Hangul Filler before visible letters, pushing an entry to the top of an alphabetical list.
Custom-width gap between words
Using a thin space instead of a regular space gives a tighter, more deliberate gap — useful in display names or headings.