Zero-Width Space Explained: What It Is, How It Works, and When to Use It
A complete technical and practical guide to Zero-Width Space (U+200B) — what it is, how it's rendered by different systems, when to use it, and when to choose a different invisible character.
Zero-Width Space is one of the most useful — and most misunderstood — characters in the Unicode standard. It's invisible, it takes up no visual space, and yet it exists as a real character in every string it's placed in.
This guide explains exactly what Zero-Width Space is, how it works at a technical level, and how to use it effectively across different platforms.
What Is Zero-Width Space?
Zero-Width Space (U+200B) is a Unicode character that represents a potential line-break position in text — but with zero visible width. It was originally created to help text rendering systems know where long strings of text (especially in languages like Thai, Khmer, and other non-spaced scripts) could be safely broken across lines.
In practical terms: it's a character that exists in memory and in text data, but renders as nothing you can see.
Key Properties
| Property | Value |
|---|---|
| Unicode code point | U+200B |
| Unicode name | ZERO WIDTH SPACE |
| Unicode block | General Punctuation |
| UTF-8 encoding | E2 80 8B (3 bytes) |
| UTF-16 encoding | 200B (2 bytes) |
| HTML entity | ​ or ​ |
| CSS content | \200B |
| JavaScript | \u200B |
| Visual width | 0px |
| Counts as a character | Yes |
How Zero-Width Space Is Different From a Regular Space
A regular space (U+0020) and a Zero-Width Space (U+200B) look the same on screen — both invisible. But they behave very differently:
| Behavior | Regular Space | Zero-Width Space |
|---|---|---|
| Visual width | ~4-8px depending on font | 0px |
| Causes line break | Only at word boundaries | Suggests break opportunity |
| Counted in string length | Yes | Yes |
| Counted in character limits | Yes | Yes |
| HTML rendering | Renders as space | Renders as nothing |
Trimmed by trim() | Yes | No (in most languages) |
| Passes "non-empty" validation | Yes | Yes |
This last point is crucial: Zero-Width Space satisfies form validation that requires a non-empty field, even though it's completely invisible. That's what makes it useful for blank usernames, bio lines, and messages.
The Original Purpose: Line Breaking in Complex Scripts
In languages like Thai, Burmese, and Khmer, words run together without spaces. Text rendering systems need hints about where to break lines. Zero-Width Space provides those hints without inserting a visible space.
For example, in a long Thai URL or compound word, a developer might insert U+200B at logical break points. The browser uses those positions for line wrapping but doesn't display any character.
This "zero-width but valid" property is exactly what makes it useful beyond its original purpose.
How Zero-Width Space Is Used Today
1. Invisible Usernames and Display Names
Paste U+200B into a username or display name field on platforms like Discord, WhatsApp, or Instagram. The platform sees a valid non-empty string — but users see nothing.
Try it on our tool — one click to copy.
2. Blank WhatsApp Messages
WhatsApp won't send an empty message, but it will send a message containing U+200B. The recipient sees a blank message bubble.
3. Instagram Bio Formatting
Instagram collapses extra blank lines in bios. Insert U+200B on "empty" lines to preserve spacing between bio sections.
4. Preventing Automatic Link Detection
Some messaging apps auto-convert URLs to clickable links. Inserting U+200B in the middle of a URL (e.g., https://example.com with a Zero-Width Space before .com) breaks link detection while keeping the text readable.
5. Web Development and Testing
Developers use Zero-Width Space to:
- Test how applications handle non-printable characters
- Prevent XSS filter bypasses (by breaking up suspicious strings in output)
- Test character counting functions
- Handle edge cases in text processing
Platform Compatibility
| Platform | Support | Notes |
|---|---|---|
| Discord (display name) | ✅ Good | Works, but Hangul Filler more reliable for blank names |
| ✅ Excellent | Ideal for blank messages | |
| ✅ Excellent | Best choice for bio spacing | |
| Twitter / X | ✅ Good | Works for name fields |
| TikTok | ✅ Good | Bio spacing works well |
| Roblox | ⚠️ Often filtered | Try Braille Blank instead |
| ✅ Good | Generally accepted | |
| Steam | ✅ Good | Profile names work |
| Most web forms | ✅ Excellent | Very high compatibility |
How to Detect Zero-Width Space in Text
Zero-Width Space is invisible, but it leaves traces:
Method 1: Character count A string that looks empty but has a length > 0 contains invisible characters. In JavaScript:
"".length // Returns 1 — that "empty" string contains U+200B
Array.from("").length // Returns 1
Method 2: Copy and paste into a text editor
Open Notepad (Windows) or TextEdit (Mac), paste the text, then use Find & Replace to search for \u200B. If it finds matches, invisible characters are present.
Method 3: Use our test area Paste any text into the Test Area on our homepage — it will reveal if invisible characters are present.
Method 4: Hex editor
View the raw bytes. U+200B in UTF-8 is the byte sequence E2 80 8B.
Common Misconceptions
"Zero-Width Space is a hack or exploit"
No. It's a standard Unicode character (since Unicode 1.0) with a well-defined purpose. Using it doesn't exploit any security vulnerability — it simply uses the character as designed.
"It's invisible so it must be safe to put anywhere"
While Zero-Width Space is harmless, some content filters treat it as suspicious in usernames or form submissions. Always test on your target platform first.
"Zero-Width Space and Zero-Width Non-Joiner are the same"
They're different characters:
- U+200B — Zero-Width Space: suggests line-break opportunity
- U+200C — Zero-Width Non-Joiner: prevents character joining in complex scripts
- U+200D — Zero-Width Joiner: forces character joining (used in emoji sequences)
"It works on every platform"
Most platforms — but not all. Gaming platforms and apps with anti-cheat systems sometimes filter it. For those, try Hangul Filler or Braille Blank.
Copy Zero-Width Space
The easiest way to get a Zero-Width Space is to use our tool — click the copy button and it's on your clipboard instantly.
You can also copy it manually if your system supports Unicode input:
- Windows: Hold Alt and type
8203on the numeric keypad (in some apps) - Mac: Use the Unicode Hex Input method (enable in System Settings → Keyboard)
- HTML: Use
​in your markup
Frequently Asked Questions
Does Zero-Width Space affect SEO?
Search engines generally ignore Zero-Width Space in page content. It won't help or hurt rankings. In URLs, it can break canonicalization — avoid it there.
Is Zero-Width Space the same as a "blank character"?
It's one type of blank character. The term "blank character" loosely refers to any invisible Unicode character. Zero-Width Space is the most commonly used one, but Hangul Filler and Braille Blank are also popular.
Can I remove Zero-Width Space from a string?
Yes. In most programming languages:
// JavaScript
str.replace(/\u200B/g, '')
// Python
str.replace('\u200b', '')
For a complete cleanup of all invisible characters, see our guide on removing invisible characters.
How many Zero-Width Spaces can I use at once?
Our tool generates up to 1,000 at a time. In practice, 1–3 is usually enough for most use cases.
Why does Zero-Width Space sometimes appear as a small dot?
Some text rendering environments (particularly older ones or certain PDF viewers) render it as a visible placeholder. This is a rendering quirk — modern browsers and apps don't show it.
Want to copy a Zero-Width Space right now? Go to Blank Space Copy and get one in a single click.