Your text

Each hidden character is listed with its type, Unicode code point, and position in your text.

Highlighted view
Nothing uploadedRuns locally in your browser

Invisible Character Guide — Unicode, Platforms, Encoding & SEO

Blank text, empty characters, and zero-width symbols all live in the same Unicode family. The sections below cover what each code point does, where it works, and when hidden bytes cause real problems.

What Is an Invisible Character?

An invisible character is a Unicode code point that software stores as real text even when it prints little or nothing on screen. The same string can look empty to a reader while still holding one or more bytes in memory.

Unicode is the global encoding system that gives every symbol a number and official name. UTF-8 is the byte format most websites and apps use to store those numbers on disk and over HTTP. Invisible characters are valid Unicode — not typos — and include format controls, special spaces, and script fillers.

Why it matters: Validation rules check the byte sequence, not what your eyes see. A “required” field can pass with a single Hangul Filler (U+3164) while rejecting only spaces.

Example: Two Discord nicknames can look identical in chat while storing different code points — one is truly empty (rejected), one holds U+3164 (accepted).

Edge case: A missing-glyph box (□) in some fonts means the character has no glyph in that font file, not that the code point is invalid.

Zero-Width Characters Explained

Zero-width characters take no horizontal space in typical Latin rendering. They still occupy a code-point slot in the string and change how search, wrap, and equality checks behave.

Common code points: Zero Width Space (U+200B), Zero Width Non-Joiner (U+200C), Zero Width Joiner (U+200D), Word Joiner (U+2060), and Zero Width No-Break Space / BOM (U+FEFF) when it appears inside text rather than at a file start.

Legitimate roles

  • U+200B: Line-break hint inside long words in scripts that do not use spaces between words.
  • U+200C / U+200D: Control letter joining in Arabic and Indic scripts; U+200D also builds multi-code-point emoji.
  • U+2060: Keeps two visible characters on the same line (word glue).

Why it matters: A find query for product-id returns zero rows when the database column holds product​-id with U+200B after the letter t.

Example: Pasting a URL from a PDF can insert U+200B inside the hostname. The link looks correct; the browser treats it as a different address.

Edge case: Chat apps may strip U+200B on send but keep U+2800 or U+3164 — never assume all invisible types survive delivery.

Filler Characters: Hangul, Braille, and Halfwidth

Filler characters were designed for Korean typography and Braille grids. On many platforms they render as blank space while counting as non-whitespace content.

Hangul Filler (U+3164)

Hangul Filler is a Korean script placeholder. Unicode classifies it as a letter, not a space. That distinction matters: validators that block “whitespace only” inputs often still accept U+3164.

Example: A game client may show an apparently empty display name when the field contains only U+3164.

Braille Pattern Blank (U+2800)

Braille Pattern Blank represents an empty Braille cell. It usually renders as a blank glyph with width similar to a space character.

Why it matters: Messengers that block whitespace-only sends often still deliver U+2800 because it is classified as a symbol, not a space separator.

Example: A one-character WhatsApp message containing only U+2800 can send when tapping space and hitting send does nothing.

Halfwidth Hangul Filler (U+FFA0)

A compatibility-width variant used in legacy East Asian encodings. Some older forms accept it when U+3164 fails.

Edge case: A platform may normalize U+FFA0 to another code point on save, changing length and comparison behavior overnight after an app update.

Hangul Filler vs Braille Blank vs Zero-Width Space

Hangul Filler (U+3164) is a letter-class filler; Braille Blank (U+2800) is a symbol; Zero Width Space (U+200B) is a format character with zero width. Pick based on how the target app classifies input, not on how blank it looks.

CharacterCodeUnicode categoryVisible widthTypical use
Hangul FillerU+3164LetterOften blank, may take spaceEmpty-looking usernames, display names
Braille Pattern BlankU+2800SymbolBlank cell widthBlank messages, bios, comments
Zero Width SpaceU+200BFormatZeroHidden separators, soft breaks
No-Break SpaceU+00A0Separator, spaceSpace widthNon-breaking gap; some apps accept as “non-empty”

Why it matters: The wrong code point passes paste but fails on save, or meets minlength with one invisible glyph while looking empty.

Example: Instagram bio line breaks often need U+200B between lines; a blank-looking display name on Free Fire or PUBG more often needs U+3164 or U+2800.

Edge case: TikTok comment fields may strip U+200B while accepting U+2800 in the same app’s bio field — rules vary by input type, not by brand alone.

How Unicode and UTF-8 Store Invisible Text

Unicode assigns each character an abstract code point (written U+XXXX). UTF-8 is the byte encoding most websites and apps use to store those code points on disk and in HTTP.

Zero Width Space (U+200B) encodes as three bytes in UTF-8: E2 80 8B. Hangul Filler (U+3164) uses three bytes: E3 85 A4. A string that looks empty can still have a non-zero byte length.

Normalization (NFC vs NFKC)

Unicode normalization rewrites equivalent sequences to a canonical form. NFKC compatibility normalization can remove or alter some format characters. Two strings that look identical before normalization may compare unequal in a database that normalizes on insert.

Why it matters: Exporting usernames from one system and importing to another can silently drop invisible characters during NFKC cleanup.

Example: A CSV row length is 12 bytes in UTF-8 but only 9 visible glyphs because three bytes belong to U+200B.

Edge case: UTF-16 systems count UTF-16 code units, not Unicode scalar values — emoji with joiners and some rare characters inflate counts differently than UTF-8 byte length.

Blank Messages and Invisible Names on Social Apps

Chat and profile forms usually reject truly empty strings. They often trim U+0020 SPACE but accept filler or format characters that render blank — see the platform table below for limits.

Blank messages

Messengers need at least one code point in the payload. U+2800 and U+3164 are the usual choices when a space bar does not produce a sendable message.

Invisible display names

Games (Free Fire, PUBG, Fortnite) and social apps store a Unicode sequence even when the tag looks empty on screen. Moderation filters that only check for empty strings will not catch these accounts.

Bio spacing

Profile bios on Instagram, X, and LinkedIn sometimes collapse normal line breaks. U+200B or thin spaces (U+2009) can add visual gaps without punctuation.

Edge case: App updates change filters without notice. Test in the live field after each major client release.

Platform Rules and Character Limits

Character limits count code points or encoded units, not what you see. An invisible character usually counts as one character toward the cap even when it prints nothing.

Platform / fieldLimit typeBlank-input behaviorNotes on invisible chars
X (Twitter) post280 charactersEmpty post blockedSome zero-width format chars stripped; fillers may still count
WhatsApp message65,536 charsWhitespace-only blockedU+2800 / U+3164 commonly used for empty-looking sends
Discord nickname32–80 chars (context)Empty rejectedHangul filler often accepted in server nicknames
Instagram bio150 charactersEmpty allowedU+200B for line gaps; U+2800 for spacing
Telegram message4,096 charsWhitespace-only blockedU+200B common; U+2800 for blank-looking sends
Free Fire / PUBG nameVaries by seasonEmpty rejectedU+3164 or U+2800; filters change after patches
HTML form (generic)minlength / requiredTrims varyLetter-class fillers pass “not whitespace” checks

Example: A 280-character X post that includes twelve U+200B separators still consumes twelve slots from the limit even though the bar looks shorter.

Edge case: Server-side validation may differ from what the mobile UI preview shows — especially for DMs versus public posts.

Copy-Paste Pollution From PDFs, Word, and the Web

Invisible characters rarely appear from typing alone. They ride along when text is copied from rich sources.

  • PDFs: Insert soft hyphens (U+00AD) at line breaks and non-breaking spaces for layout.
  • Microsoft Word / Google Docs: Smart quotes, non-breaking spaces, and object replacement characters.
  • Websites: Non-breaking spaces in HTML, zero-width joiners in fancy text generators.
  • AI-generated text: Curly quotes, em dashes, and occasional zero-width spaces from tokenization artifacts.

Why it matters: Pasting into code editors, CMS fields, or spreadsheets imports hidden bytes that break diff tools and duplicate detection.

Example: A keyword pasted into a title tag matches visually in the browser but fails CMS search because U+FEFF sits at the start of the string.

Edge case: Removing every zero-width joiner from Arabic or Indic text can break shaping — strip surgically, not blindly.

Invisible Characters and SEO

Hidden Unicode does not add keyword relevance. Search engines index the stored byte sequence; invisible code points can make a title tag differ from what renders in a SERP preview.

Padding meta tags, headings, or anchors with zero-width characters is a spam signal. Crawlers may strip the bytes, ignore them, or flag a mismatch between indexed and displayed text.

Why it matters: Clean Unicode improves reliable title matching, internal link equity, and analytics UTM parsing.

Example: A product SKU copied from a PDF into an H1 may include U+00AD; Google Search Console shows the title with an unexpected hyphenation point.

Edge case: JSON-LD injected with zero-width characters can invalidate rich-result parsing in strict validators even when the page renders fine.

Passwords, Code, and String-Matching Bugs

Security issues arise when humans trust their eyes more than the byte sequence. Invisible characters enable homograph-style confusion without changing visible glyphs.

Authentication and passwords

A password manager may copy a trailing U+200B from a notes field. Login fails because the server hashes a different byte sequence than the user believes they typed.

Source code and BiDi controls

Bidirectional override characters (U+202E and related) can reorder how code displays versus how compilers execute it (Trojan Source class of issues). Production repositories should reject these in commits.

Data interchange

CSV, JSON, and API keys break when a zero-width character sits inside a quoted field. Trim and normalize at system boundaries, not only at display time.

Example: "hello" and "hello\u200b" are different JSON strings with identical visual length in many editors.

Edge case: Intentional zero-width joiners inside emoji flags (U+1F1FA U+200D U+1F1F8) must be preserved — they are not pollution.

Common Invisible Unicode Characters — Reference

Lookup table for code points named in this guide. Use the comparison section above to choose between U+3164, U+2800, and U+200B; use this table to identify bytes found in polluted paste.

CodeNameCategoryTypical role
U+0020SpaceSeparatorStandard word space; often rejected for “blank” tricks
U+00A0No-Break SpaceSeparatorLayout space that prevents line break
U+00ADSoft HyphenFormatOptional hyphen from PDF line breaks
U+200BZero Width SpaceFormatInvisible separator / break hint
U+200CZero Width Non-JoinerFormatPrevents ligatures in complex scripts
U+200DZero Width JoinerFormatJoins emoji and script clusters
U+2060Word JoinerFormatPrevents line break between glyphs
U+2800Braille Pattern BlankSymbolBlank-looking cell; common in chat
U+3164Hangul FillerLetterBlank-looking name filler
U+FEFFZero Width No-Break Space (BOM)FormatFile marker; breaks string compare at start
U+FFA0Halfwidth Hangul FillerLetterLegacy-width blank filler

For typographic spaces (em space U+2003, thin space U+2009, hair space U+200A), see the glossary and whitespace remover for visible-space cleanup after hidden Unicode is gone.

Frequently Asked Questions

What is an invisible character?

An invisible character is a Unicode symbol with little or no visible glyph that still counts as text in apps, databases, and messages. Examples include Zero Width Space (U+200B), Hangul Filler (U+3164), and Braille Pattern Blank (U+2800).

What is a zero-width space (U+200B)?

Zero Width Space is a format character with no display width. It can suggest line breaks inside words and acts as an invisible separator. It often enters text through web copy-paste or fancy text generators.

What is Hangul Filler (U+3164) used for?

Hangul Filler is a Korean script placeholder classified as a letter. Platforms that reject whitespace-only input may still accept it, which is why it appears in empty-looking usernames and display names.

What is Braille Pattern Blank (U+2800)?

Braille Pattern Blank is an empty Braille cell. It usually renders as blank space and is widely used for empty-looking chat messages when a normal space is blocked.

Why doesn't a normal space work for blank messages?

Many apps trim U+0020 SPACE and treat the message as empty. Filler or no-break characters are non-empty in validation logic even when they look blank on screen.

How do I send a blank message on WhatsApp?

Copy a single Braille Blank (U+2800) or Hangul Filler (U+3164) and paste it into the message field. WhatsApp requires a character to send; these code points pass validation while appearing empty.

Which invisible character works for Discord blank names?

Hangul Filler (U+3164) is commonly used for server nicknames when empty strings are rejected. Policies change; verify in your server after paste.

Do invisible characters count toward character limits?

Yes. Each code point typically consumes one character from platform limits even when nothing visible prints. Zero-width characters still occupy a slot in the stored string.

Can invisible characters affect SEO?

They do not improve rankings. Hidden characters in titles or body text can cause mismatches between displayed and indexed strings and may trigger quality issues if used to manipulate snippets.

Why do passwords fail when they look correct?

A trailing zero-width or non-breaking character from copy-paste changes the hashed byte sequence. The visible letters match what you expect; the stored string does not.

Where do invisible characters come from?

Common sources are PDFs, Word documents, web pages, messaging apps, and AI-generated text. They are rarely typed directly from a standard keyboard.

Should I remove all zero-width characters?

Remove unintended pollution in passwords, code, and SEO fields. Keep intentional joiners in Arabic, Indic scripts, and emoji sequences where they carry meaning.

When should I use U+3164 instead of U+2800?

Try U+3164 when the field rejects whitespace or symbols but accepts letters — common for game display names. Try U+2800 when the field blocks spaces but allows symbols — common for chat messages. If one fails, switch to the other.

What is blank text?

Blank text is a string that looks empty but contains one or more Unicode code points such as U+2800 or U+3164. It is not the same as an empty string, which holds zero characters.

Do invisible characters work on iPhone and Android?

Unicode behaves the same across mobile OS versions. Whether an app accepts a given code point depends on the app's validation rules, not the phone model.

Is hidden Unicode always malicious?

No. Most invisible characters are formatting debris from legitimate documents. Abuse exists — filter bypass and Trojan Source attacks — but accidental paste is far more common.