Copy invisible Unicode characters for blank messages, empty usernames, and spacer text. Pick a character, choose how many, and copy โ nothing is uploaded and everything runs in your browser.
Invisible Character
Copy invisible Unicode characters for blank messages and names
The copied text looks blank on purpose โ paste it into chats, bios, or usernames that don't allow truly empty input. You're copying Zero-Width Space (U+200B).
The three characters, and how they differ
An "invisible character" is a real Unicode character that fonts are expected to draw as nothing. A field holding one is not empty: its length is 1, so checks that reject blank input pass, while the person looking at it sees nothing. The tool offers three, each with a different reason to exist.
| Character | Code point | Unicode category | What it is for |
|---|---|---|---|
| Zero-Width Space | U+200B | Format (Cf) | Marks a place where a line may break, without adding visible space. Used in scripts such as Thai that are written without spaces between words. |
| Word Joiner | U+2060 | Format (Cf) | The opposite job: it stops a line break at its position. It took over that role from U+FEFF, whose use for this is deprecated; U+FEFF is now meant only as a byte order mark. |
| Hangul Filler | U+3164 | Letter (Lo) | A placeholder from older Korean character encodings. Because it counts as a letter, it passes validation rules that the other two fail. |
All three are in Unicode's list of default-ignorable code points, which is why renderers are expected to show nothing for them. None of them is whitespace, though, so code that only trims spaces and tabs leaves them in place.
A worked example
Select Zero-Width Space and set How many to 3. The button reads
"Copy 3 invisible characters", and the clipboard receives three U+200B characters in a row,
with no separator between them. In JavaScript, that string has a length of 3; in
UTF-8 it is 9 bytes, E2 80 8B repeated three times; percent-encoded in a URL it
becomes %E2%80%8B%E2%80%8B%E2%80%8B. Paste it into the
Unicode Inspector and you will see three identical rows,
which is the quickest way to prove the "blank" text is really there.
Hangul Filler and Word Joiner are also 3 bytes each in UTF-8 (E3 85 A4 and
E2 81 A0), so the byte count grows the same way whichever you pick.
What it does and does not do
- It copies one, or up to 1,000, copies of a single character. It does not mix characters or add separators. For repeated visible text with separators, use the Text Repeater.
- The copy uses the browser's clipboard API, which needs a secure (HTTPS) page. If the button shows Failed, your browser blocked the write.
- It cannot guarantee a platform accepts the result. Sites change their filters, and many strip zero-width characters from names and messages on purpose.
- It does not detect or remove invisible characters in existing text. The Unicode Inspector does the detecting.
- Nothing is uploaded. The characters are built into the page, so it works offline once loaded.
When invisible characters cause trouble
The same property that makes a blank username possible makes these characters a nuisance when they arrive by accident: two strings that look identical fail to match, a search finds nothing, or a password copied from a document is rejected. The post Invisible Unicode characters: why two identical strings don't match catalogues the common ones, where they come from and how to strip them. For decorative text effects that are visible, see the Fancy Text Generator.
Frequently asked questions
Which invisible character should I use?
Start with the Zero-Width Space (U+200B); it is the most widely recognized and takes up no width. If a site rejects it or strips it out, try the Hangul Filler (U+3164), which Unicode classifies as a letter, so it gets past many "must not be blank" checks. Use the Word Joiner (U+2060) when you want an invisible character that also stops a line from breaking at that spot.
Why does the site still say my name or message is empty?
Some platforms remove known invisible characters before checking, or only accept letters and digits. A zero-width space is a format character, not a letter, so a rule like "must contain a letter" rejects it. The Hangul Filler is a letter in Unicode terms, which is why it often works where the other two fail. If all three are rejected, the site is filtering them deliberately.
Does an invisible character count toward a character limit?
Yes. Each one is a real character. In JavaScript and most web forms each of these counts as 1 character; in UTF-8 each takes 3 bytes. So 1,000 copied zero-width spaces are 1,000 characters and 3,000 bytes, even though nothing is visible.
Why does the Hangul Filler sometimes show as a wide blank space?
Unicode lists U+3164 as a character that should normally be drawn as nothing, but many fonts include a blank glyph for it with the width of a Korean character. On those systems it looks like a wide empty space instead of zero width. That is fine for a blank-looking name but noticeable in the middle of a sentence.
How can I find or remove invisible characters someone else pasted?
Paste the text into the Unicode Inspector on this site, which lists every code point including invisible ones. To remove them in code, replace the specific code points (for example U+200B, U+2060, U+3164 and U+FEFF) with nothing. Note that String.prototype.trim() in JavaScript does not remove any of the three characters this tool copies, because none of them is classed as whitespace.
Get weekly dev tools and tips