Unicode Reference Hub — Blank / Invisible / Empty Characters

BlankTextCopy is an all-in-one toolkit to copy, inspect, clean, and generate blank text, invisible characters, and empty characters/space.

This Unicode Reference Hub explains the character families we support, when each is appropriate, what to avoid, and where to find a per-character deep-dive (with demos and “Copy” presets).

Last updated: 2025-09-20


How to use this hub ?

  • Need a quick invisible/blank character? Start at Quick Copy on the Home page, then come back here to understand what you just copied.
  • Unsure what’s inside your text? Use Inspector to reveal hidden characters (with [•] preview).
  • Text broken by weird spaces? Use Cleaner to remove selected classes (e.g., zero-width) or whitelist allowed ones (e.g., NBSP).
  • Want long blank strings for formatting? Use Generator, then verify with Inspector.

Real-world contexts: bios and captions on Instagram, Facebook, TikTok, display names on Discord or messenger apps like WhatsApp, and some game inputs (e.g., Roblox, Minecraft, PUBG Mobile, Arena of Valor, Free Fire). Platform rules vary—use characters responsibly.


Character families at a glance

We group “blank / invisible / empty” characters into four practical families:

  1. Zero-width format characters(usually invisible; category Cf)
    • ZWSP (U+200B) — Zero Width Space
    • ZWNJ (U+200C) — Zero Width Non-Joiner
    • ZWJ (U+200D) — Zero Width Joiner
    • FEFF (U+FEFF) — Zero Width No-Break Space / BOM (special)
    • WORD JOINER (U+2060) — no visible width; prevents breaks (advanced)
  2. Non-breaking & spacing(visible spacing; category typically Zs)
    • NBSP (U+00A0) — Non-Breaking Space (looks like a normal space, visible)
    • (Advanced: other spaces U+2000..U+200A are visible and not “invisible”)
  3. Blank-glyph characters(render as an empty glyph box; edge cases)
    • Hangul Filler (U+3164)
    • Braille Pattern Blank (U+2800)
  4. Combining marks / specials(not our default focus but relevant to “emptiness” and joining behavior)
    • Used in writing systems to combine with base characters; not spaces themselves.

Rule of thumb:

  • Use NBSP for a visible non-breaking gap.
  • Use ZWSP for zero-width break opportunities (formatting); do not expect it to show a gap.
  • Use ZWNJ/ZWJ only when you understand joining behavior; they’re not generic “spaces.”
  • Treat FEFF/BOM and Hangul Filler/Braille Blank with caution; they can behave unexpectedly and are often filtered.

Core catalog (quick reference)

Each entry links to a full character page with demos, caveats, and a big Copy button.

Zero Width Space — ZWSP (U+200B)

  • Category: Cf (format) — invisible
  • Best for: fine-grained formatting; soft break hints; preventing auto-linking without visible gaps.
  • Caution: Many inputs strip/normalize it (bios, usernames).
  • Try: /unicode/zwsp-u200b

Zero Width Non-Joiner — ZWNJ (U+200C)

  • Category: Cfinvisible
  • Best for: scripts with joining behavior (e.g., Persian/Arabic) to prevent ligature/connection.
  • Caution: Not a space; may be restricted in social/game inputs.
  • Try: /unicode/zwnj-u200c

Zero Width Joiner — ZWJ (U+200D)

  • Category: Cfinvisible
  • Best for: scripts/emoji sequences where you want a join (e.g., emoji ZWJ sequences).
  • Caution: Not a space; use only if you understand join semantics.
  • Try: /unicode/zwj-u200d

Non-Breaking Space — NBSP (U+00A0)

  • Category: Zs (space separator) — visible
  • Best for: visible gaps that won’t break across lines (captions on Instagram/TikTok, Facebook posts).
  • Caution: It looks like a normal space; copy/paste may retain non-breaking behavior.
  • Try: /unicode/nbsp-u00a0

Word Joiner — WJ (U+2060) (advanced)

  • Category: Cfinvisible
  • Best for: preventing line breaks without adding width (more predictable than ZWSP for some engines).
  • Caution: Advanced; some inputs discard it.
  • Try: /unicode/word-joiner-u2060 (create this page if you choose to support it)

Hangul Filler (U+3164)

  • Category: Letter other (Lo) — often renders blank
  • Best for: Legacy/edge tricks; not recommended for user-facing names.
  • Caution: Frequently filtered; semantics unrelated to spacing; can confuse rendering/validation.
  • Try: /unicode/hangul-filler-u3164

Braille Pattern Blank (U+2800)

  • Category: Symbol (So) — visible width in some fonts; often appears blank
  • Best for: Rare; can produce an empty-looking cell.
  • Caution: Behavior varies by font/platform; not truly zero-width.
  • Try: /unicode/braille-blank-u2800

FEFF — ZWNBSP / BOM (U+FEFF)

  • Category: Cfspecial (Byte Order Mark)
  • Best for: Don’t use as spacing; treat as BOM in text streams.
  • Caution: Can cause subtle bugs; many sanitizers remove it.
  • Try: /unicode/feff-bom

Decision guide: which one should I use?

  • I want a visible gap that doesn’t break across lines: use NBSP (U+00A0).
  • I want no visible gap but to influence breaks/links: try ZWSP (U+200B) or WJ (U+2060).
  • I’m dealing with script joining (Arabic/Persian): ZWNJ to prevent joins; ZWJ to encourage joins.
  • I just want a “blank name” anywhere: be careful—many platforms forbid this. We do not advise bypassing rules. Use visible characters or platform-approved alternatives.

Platform behavior crib notes (illustrative, subject to change)

ScenarioWorks bestNotes
Instagram caption spacingNBSPUsually preserved; looks like normal space.
Facebook blank message(varies)Pure invisibles often blocked; add visible content.
TikTok bio formattingNBSP (for visible gaps)Zero-width may be normalized.
Discord nickname/message(varies by server rules)Use responsibly; invisibles may be restricted.
WhatsApp blank message(often trimmed)Consider adding visible punctuation.
Game display names (Roblox/Minecraft/AOV/Free Fire)(strict)Many block invisibles entirely. Respect rules.

We update observations in the Changelog and on per-character pages.


Developer corner (detect, clean, count)

Minimal detector (JS) for the core cluster

const INVISIBLE_RE = /[\u200B\u200C\u200D\u00A0\u2800\u3164\uFEFF\u2060]/gu;
// Add/remove code points to fit your policy or app needs.

Remove zero-width but keep NBSP

const ZERO_WIDTH_RE = /[\u200B\u200C\u200D\uFEFF\u2060]/gu;
const stripZeroWidthKeepNbsp = s => s.replace(ZERO_WIDTH_RE, '');

Count code points vs grapheme clusters

const codePoints = [...input].length;
const clusters = (Intl && Intl.Segmenter)
  ? Array.from(new Intl.Segmenter(undefined, {granularity:'grapheme'}).segment(input)).length
  : codePoints;

These mirror what our Inspector / Cleaner / Generator do so developers can reproduce behavior around blank text / invisible / empty characters.


Responsible-use stance

Blank/invisible characters are powerful—and abusable. We do not endorse:

  • Impersonation or deceptive usernames.
  • Evading moderation or obscuring malicious content.
  • Violating Instagram, Facebook, TikTok, Discord, WhatsApp or game terms.

Use this hub to choose characters that improve formatting, readability, accessibility, and legitimate layout control.


Glossary (fast definitions)

  • Blank text / empty character / invisible character: umbrella terms for code points that render with no glyph or special spacing behavior.
  • Zero-width (Cf): formatting characters that affect text without visible width (e.g., ZWSP, ZWJ, ZWNJ, WJ).
  • Space separator (Zs): visible whitespace (e.g., NBSP, EN SPACE); not “invisible.”
  • BOM (U+FEFF): Byte Order Mark; not intended for spacing within text.
  • Grapheme cluster: what users perceive as a single character; may contain multiple code points.
  • Joining behavior: in scripts where letters join; ZWNJ/ZWJ influence that join.

Related internal pages

  • About
  • Editorial Policy
  • Methodology & Test Matrix
  • Detect & Clean Invisible Charactersn
  • Responsible Use & Safety Notes
  • Character pages:
    • /unicode/zwsp-u200b · /unicode/zwnj-u200c · /unicode/zwj-u200d
    • /unicode/nbsp-u00a0 · /unicode/word-joiner-u2060
    • /unicode/hangul-filler-u3164 · /unicode/braille-blank-u2800 · /unicode/feff-bom

FAQ

Q: Which character is safest for visible spacing in captions?
A: NBSP (U+00A0). It looks like a normal space but won’t break across lines.

Q: Can I make a totally blank name?
A: Many platforms forbid that. We do not recommend trying to bypass rules.

Q: Why did my invisible character disappear after saving?
A: Inputs often normalize or strip zero-width characters. Use NBSP for visible spacing or follow platform guidelines.

Q: Is FEFF the same as ZWSP?
A: No. FEFF is a BOM; treat it carefully. Prefer ZWSP or WJ for formatting use-cases.