The message that says nothing, beautifully

Someone in your group chat just sent a completely empty message. Not whitespace — a genuine bubble with nothing in it — and the chat is now debating whether their phone is broken, whether they are ghosting the group as a bit, or whether this is a new kind of reply we will all be using by spring. Meanwhile, in a Free Fire lobby, a player with no name at all just won the round, and their blankness is somehow more intimidating than any IGN like xX_Sniper_Xx ever managed.

The trick behind both moments is the same, and it is disarmingly old-school: Unicode contains characters that have no visible glyph, and some of them are not classified as whitespace, so name fields and message validators that reject empty input happily accept them. A blank name is one copy-paste away. A blank message likewise. The gaming world discovered this years ago and turned it into folklore — search 'invisible character' alongside Free Fire, Fortnite, or Discord and you will find a decade of tutorials, most hosted on sites that look like they were abandoned in 2014.

This invisible character generator is the clean version of that folklore: every useful blank character on one page, one-tap copy buttons, per-platform notes about which ones survive which validators — and, because we would rather be honest than viral, a frank section on where invisible characters stop being fun and start being problems. They can break screen readers, corrupt code, and smuggle data. You should know that before you copy anything.

The character shelf, catalogued

There are two distinct families here, and confusing them is where most tutorials go wrong. The zero-width family — U+200B, U+200C, U+200D and friends — are formatting characters that occupy no space at all; they are meant to live inside text, controlling line-break opportunities or joining behavior. The blank-glyph family — the Braille blank, the Hangul filler — are genuine letters that render as empty space with real width. Name fields usually reject the first family and often accept the second, which is the single most practical fact on this page.

CharacterCode pointWidthSurvives name fields?Honest purpose
ZERO WIDTH SPACEU+200BZeroRarely — stripped by sanitizersMarking legal line-break points in long words or URLs
ZERO WIDTH NON-JOINERU+200CZeroRarelyDisabling ligatures between letters in fine typography
ZERO WIDTH JOINERU+200DZeroRarelyAssembling multi-person emoji from sequences
LEFT-TO-RIGHT MARKU+200EZeroRarelyForcing directionality in mixed Arabic and Latin text
WORD JOINERU+2060ZeroRarelyPreventing a line break without adding a space
BRAILLE PATTERN BLANKU+2800One blank cellUsually yesThe blank Braille cell; the gaming community's workhorse
HANGUL FILLERU+3164One blank cellUsually yesFilling empty jamo positions in Korean typography
NO-BREAK SPACEU+00A0One spaceOften — but it is whitespace to humansGluing units to numbers so they never wrap apart
The shelf, sorted by practical survival in username fields. Width matters more than it looks.

A note on one character we deliberately left off the shelf's front row: U+FEFF, the zero-width no-break space, which is also the infamous byte-order mark. It can render invisibly, but it is responsible for a small plague of first-line-of-file bugs, and we do not hand out loaded weapons without a lecture.

Copying a blank in three taps

  1. Pick your target first

    Know whether you are styling a game name, a Discord nickname, or sending the legendary blank message. The platform decides which character works — the tool's platform notes exist for this step.

  2. Tap the character you need

    The copy buttons place the exact code point on your clipboard. For name fields, start with the Braille blank U+2800; for inside-text formatting tricks, the zero-width family.

  3. Paste and test where it counts

    Paste into the real field and save. If the platform strips it, come back and try the Hangul filler. Test in the actual game or app — forums are full of confidently wrong claims about which characters survive.

  4. Check the result on another device

    A blank that works on your phone may show as a box or question mark on a friend's device, because rendering depends on installed fonts. The only test that counts is the device your audience actually uses.

Zero-width characters, properly introduced

The zero-width family lives in a stretch of Unicode called General Punctuation, addresses U+2000 through U+200F, and its members were designed by typographers with genuine problems. The zero-width space, U+200B, marks where a browser may break a long word or URL at line's edge without adding a visible space. The zero-width non-joiner, U+200C, stops two letters from forming a ligature in scripts like Arabic and German Fraktur. The zero-width joiner, U+200D, does the opposite: it glues characters together so they combine — the mechanism behind every multi-person emoji.

U+200B  ZERO WIDTH SPACE          (break opportunity, no width)
U+200C  ZERO WIDTH NON-JOINER      (blocks ligature formation)
U+200D  ZERO WIDTH JOINER          (joins — the emoji glue)
U+200E  LEFT-TO-RIGHT MARK         (direction control)
U+200F  RIGHT-TO-LEFT MARK         (direction control)
U+2060  WORD JOINER                (no-break, no width)
U+FEFF  ZERO WIDTH NO-BREAK SPACE  (also the BOM — dangerous)

The family's dark side is that the same properties make it a hidden channel. Text can be watermarked invisibly by encoding bits into the choice between ZWSP and ZWNJ between words — a documented technique with documented misuse, from leaking documents to tracking leakers. A paragraph can look identical to yours while carrying a payload you cannot see. When we said this page comes with a warning label, this is the paragraph the label points at.

Which brings us to the mirror twin: if you have ever pasted code that will not compile, or text that searches wrong, or a field that will not match its twin, invisible characters are a prime suspect — and the Zero-Width Character Remover exists to strip the entire family out in one pass. Generator and remover, cause and cure, sold as a pair.

The ZWJ: the one that builds people

The zero-width joiner deserves its own section because it is the load-bearing trick in modern emoji. A family emoji like 👨‍👩‍👧 is not one character: it is the man, the woman, and the girl, glued together by two U+200D code points — five code points total that your phone renders as one picture. Skin-tone modifiers, mixed-family emoji, profession emoji, the handshake in two skin tones: all of them are ZWJ sequences, specified in Unicode's emoji technical standard.

One emoji, five code points

Input

👨‍👩‍👧 (family: man, woman, girl)

Output

U+1F468 (man) + U+200D (ZWJ) + U+1F469 (woman) + U+200D (ZWJ) + U+1F467 (girl) = 5 code points, 1 grapheme cluster — one visible emoji on a modern device, five separate glyphs on an old one

This is also why emoji counts disagree. When a message says it contains 250 characters but you counted 60 emoji, the ZWJ sequences are the explanation: each multi-person emoji counts its full code-point payroll. Our Text Repeater handles the same ambiguity when it repeats emoji strings — repeating the family emoji ten times produces fifty code points and ten pictures.

Per-platform notes, from the trenches

Free Fire and PUBG-style nickname fields are the reason this query family is enormous, and their validators are the reason the Braille blank became canonical: they trim whitespace, reject most control characters, and accept U+2800 because it is, to a validator, a letter. Discord allows blank-looking nicknames the same way. Global usernames, per the 2023 rules, do not — lowercase letters, digits, period, underscore — so the trick lives in nicknames, as our Discord Font Generator page explains from the styling side.

PlatformBlank-name trickNotes from testing
Free Fire / PUBG-style gamesU+2800 or U+3164 in the name fieldThe classic use; some servers strip it on save, so verify after
Discord nicknamesU+2800 works; global username will not accept itBlank nickname + styled display name is a whole aesthetic
WhatsApp messagesU+2800 sends a visibly empty bubbleEmpty-message pranks; moderation-fair, patience-unfair
Instagram biosBraille blanks for line spacing in biosBio formatting's open secret
SteamProfile fields vary; artwork guides use blanksCheck after saving — Steam sanitizes inconsistently
What works where, as of the last update. Platforms patch their validators, so treat this as a living table.

One habit worth forming: verify after saving, every time. A field can accept your paste, silently reject it server-side, and leave your old name in place — and the person who discovers this two weeks later is always someone else, in a lobby, reading your very visible name out loud.

Where blanks stop being funny

Accessibility first, because it is the harm people most often cause without knowing. Screen readers meet a zero-width space mid-word and things go wrong: pauses in impossible places, letter-by-letter spelling of fragments, mispronunciations that make the text incomprehensible. A blank username can leave a blind user hearing nothing at all where identity should be. The web accessibility guidelines treat unmarked invisible content as a defect, and the fix is the same one we keep repeating across our text tools: use the blanks for decoration in names, never in content meant to be read.

Then code, then data. A single U+200B in a line of Python or JavaScript produces a syntax error pointing at a character that every editor insists is not there. Zero-width characters in database fields break exact matching, deduplication, and joins in ways that produce tickets titled 'impossible.' And the watermarking technique from earlier — encoding data into the choice of invisible characters — is a real exfiltration channel that document-leak investigators take seriously. The character sheet on this page is a toolbox, and like all toolboxes it contains at least one thing that should be handled with goggles on.

A worked scenario: the join that refused to match

A ticket lands in a data team's queue a few times a year, and it always reads the same. An analyst exports the customer list from the storefront, loads it into the warehouse, and joins it to the marketing table on email address. Sixty percent of rows match, forty percent come back empty, and every unmatched address looks character-for-character identical to a matched one in the spreadsheet. The query is correct, the types are correct, and the ticket title is one word long: impossible. An invisible code point is riding along in that forty percent.

The source is almost always a paste. Chat clients, slide decks, and smart form fields quietly insert zero-width joiners beside emoji, zero-width spaces at copied line breaks, and byte-order marks at the heads of exported documents. An address gets typed once into a rich-text environment, pasted into an export field, and the invisible rider is copied faithfully from system to system ever after — present in every byte, visible in no editor on the team.

One address, two strings, zero matches

Input

ada@lovelace.dev — the 17 characters the marketing table stores

Output

ada@lovelace.dev — the 18 characters the warehouse imported: a U+200B ZERO WIDTH SPACE sits after the final v, so the two strings differ by exactly one code point, render identically everywhere, and an equality join between them returns nothing
SymptomLikely invisible causeFast verificationFix at the source
Exact-match join fails on values that look identicalZWSP or ZWNJ inside one side of the comparisonCode-point scan of both values; compare character countsStrip U+200B–U+200D, U+2060 and U+FEFF on ingest, then re-run
A script errors on a character the editor cannot showU+FEFF byte-order mark at the file's first byteHex-dump the first three bytes and look for EF BB BFRe-save as UTF-8 without a byte-order mark
Search finds nothing for a word that is visibly presentZWSP splitting the word into two tokensPaste the word into a code-point inspectorRemove zero-width characters and rebuild the index
A name field rejects a value that passes every visible ruleTrailing Braille blank or Hangul filler copied in with the textVisible letters and character count disagree by oneTrim the blank-glyph family as well as ordinary whitespace
Four failure signatures, four hidden code points behind them. One scan line rules the entire family in or out.
python3 - << 'SCAN'
data = open('suspect.csv', encoding='utf-8').read()
hits = [c for c in data if 0x200B <= ord(c) <= 0x200F
        or ord(c) in (0x2060, 0xFEFF, 0x2800, 0x3164)]
print('invisible code points found:', len(hits))
print('unique:', sorted(hex(ord(c)) for c in set(hits)))
SCAN

The fix belongs at the boundary, not at the query. Any pipeline that accepts pasted text — imports, uploads, browser forms, chat bots that write to databases — should strip or flag the zero-width family at ingest time, the same way it trims trailing spaces. Patching at query time means every future join, export, and deduplication run re-inherits the problem and re-pays the debugging cost. Normalize once at the door, and the impossible ticket stops being possible.

Blank strategies compared

If you are choosing a blank for a purpose rather than a platform, the decision is cleaner than the folklore suggests. Four viable strategies, four different mechanisms, one table.

StrategyMechanismBest forFailure mode
Braille blank (U+2800)Real letter, blank glyphUsername fields, blank messagesStripped by aggressive sanitizers; boxes on ancient fonts
Hangul filler (U+3164)Real letter, blank glyphUsername fields as second choiceWidth varies slightly by font
Zero-width space (U+200B)Formatting character, no widthInvisible watermarks, break hints in long stringsRejected by name validators; invisible breakage in code
Plain no-break space (U+00A0)Space that never wrapsTypography: 10 kg, Dr. SmithIt is whitespace to humans and validators alike — no blank names
Pick by mechanism, not by vibe: letters for name fields, formatting characters for formatting, spaces for typography.

Who copies blanks here (and who should not)

  • Mobile gamers blanking their names in Free Fire, PUBG, and the neighborhood of games with similar nickname fields
  • Discord users making a nickname disappear while keeping the account obvious to friends
  • People formatting Instagram bios with the blank-line spacing that plain newlines will not give
  • Pranksters sending one perfectly empty message, once, to a group chat with a sense of humor
  • Developers testing how their validators handle non-plaintext — the legitimate engineering reason to paste blanks into your own test suite
  • Writers hiding invisible markers in drafts as a poor man's watermark — knowing it also breaks their own search-and-replace

If you arrived here debugging rather than decorating — text that will not match, code that will not compile, a paste that behaves strangely — head to the Zero-Width Character Remover instead. Diagnosis is the more common need, and the remover is the tool with the medicine.

Nothing here runs anywhere but your machine

The characters are embedded in the page itself, the copy buttons are local JavaScript, and there is no server on the other end of anything. That matters for a tool whose users include people being careful about what traces they leave — though we will note, with some affection, that the zero-width watermark crowd demonstrates exactly why everyone else should run the remover over documents from strangers. Load the page, cut the network, tap away: it all still works, and the blank you copy is the only thing that leaves.

The questions that follow the blank

What is an invisible character exactly?

It is a Unicode code point that carries no visible glyph. Some are zero-width — they occupy no horizontal space at all, like U+200B ZERO WIDTH SPACE — while others render as blank space, like U+2800 BRAILLE PATTERN BLANK or U+3164 HANGUL FILLER. They are real characters with real code points; they simply have nothing to show for themselves.

How do I get an invisible name in Free Fire or PUBG?

Copy one of the blank-visible characters (Braille blank U+2800 or Hangul filler U+3164 are the reliable choices for game nickname fields), paste it into the name field, and save. Fields that strip zero-width characters usually accept the space-rendering ones. Check in-game after saving — some games silently reject the change and keep your old name.

Why can I not just press the spacebar for a blank name?

Because name fields almost always trim and reject whitespace. A spacebar character is U+0020, and every competent form validator strips or refuses it. A Braille blank or Hangul filler is not classified as whitespace, so it survives the trim — which is the entire trick, and also why these specific code points became the gaming community's currency.

Can I send a completely blank message on Discord or WhatsApp?

Usually yes. Discord rejects a truly empty message but accepts one containing a Braille blank or Hangul filler, which renders as an apparently empty bubble. WhatsApp behaves similarly for the space-rendering characters. Whether you should send blank messages is a different question with a social rather than technical answer.

What is the difference between U+200B and U+2800?

U+200B ZERO WIDTH SPACE takes up no width at all — it is a formatting character used inside text, invisible even between letters. U+2800 BRAILLE PATTERN BLANK is a visible-width character whose glyph happens to be a blank Braille cell, so it renders as a blank space the width of a character. Fields that reject zero-width formatting characters often accept U+2800 because it is a real letter in the Braille block, not a control.

Do invisible characters break screen readers?

Sometimes, and it is a real problem. A zero-width space in the middle of a word can cause a screen reader to pause, spell out fragments, or mispronounce the word entirely, and blank usernames can leave blind users hearing nothing where a name should be. Use these characters for your own name decorations sparingly, and never embed them in content meant to be read aloud.

Can invisible characters damage code or data?

Yes — this is the serious side. A stray U+200B inside source code breaks parsers and compilers with errors that look impossible; zero-width characters in database fields break exact-match searches and joins; and they are a known exfiltration channel for data theft, since text can be invisibly watermarked with bit patterns encoded in ZWSP and ZWNJ. This is why our remover tool exists as this generator's mirror twin.

Does the tool store or send anything I copy?

No. The characters are embedded in the page and copied to your clipboard locally — there is no server, no account, and nothing to send. The tool works with your network fully disconnected, which is the strongest demonstration of local-only behavior a web page can offer.

Neighbors in the Unicode toolbox

The invisible character generator pairs naturally with its antidote, the Zero-Width Character Remover, for debugging pasted text; with the Discord Font Generator for the visible half of name decoration; and, when the goal is reachable contacts rather than blank ones, the WhatsApp Link Generator builds the clickable channel in the other direction. Blanks in, blanks out, contacts through — the Unicode utility drawer, complete.

Sources and further reading

We cite primary sources (standards bodies, government agencies, official documentation) wherever they exist so you can verify every number on this page yourself.