Invisible Text Generator: Blank Characters That Survive

Conversion direction

The braille blank is the default because it is not classified as whitespace, not a format character, and not default-ignorable — the three things filters look for.

10 / 20000 Runs in your browser — nothing is uploaded

Type anything on the left and the right fills with the same number of invisible characters, ready to copy. Switch the direction to do the opposite: paste text in and every hidden character it contains is named. Nothing you type is uploaded.

How the Invisible Text Generator Works

There is no such thing as "the invisible character". There are several dozen Unicode code points that render as nothing or as blank space, they exist for unrelated reasons, and they behave completely differently when software looks at them. Choosing between them is the whole task.

This page offers four, and the selector explains what each one is for. Type text on the left and you get the same number of invisible characters on the right — line breaks are preserved, so a multi-line block of blank lines comes out as a multi-line block.

The reverse direction is the more interesting one. Paste anything in and every invisible code point is named in place, so you can see exactly what is hiding in text you copied from somewhere else. There is a reason to care about that, covered below.

One thing this page will not do is tell you that a character "works 95% of the time on Discord". Every number like that you find on this topic is invented — no site publishing them has run a test, dated it, or described a method. What can be established is which class of check a character passes, and that comes straight from Unicode's own character database.

Which Blank Character to Use, and Why

Almost every input validator does one of six things. This is how the four characters fare against each, and it is checkable rather than guessed:

The checkU+2800 brailleU+2060 joinerU+3164 hangulU+200B ZWSP
Rejects empty after trimmingPassesPassesPassesPasses
Strips whitespace by Unicode propertyPassesPassesPassesPasses
Strips format (Cf) charactersPassesRemovedPassesRemoved
Strips default-ignorable charactersPassesRemovedRemovedRemoved
Requires at least one letterFailsFailsPassesFails
Normalises with NFKC firstPassesPassesChangedPasses

The braille blank comes out ahead for a reason that is structural rather than lucky. Unicode classifies it as an ordinary symbol — the same category as ★ or ♥ — that simply happens to have no raised dots. It is not whitespace, not a formatting instruction, and not on the default-ignorable list. Filters written to catch invisible characters are looking for exactly those three properties, so they do not catch it.

Its cost, stated plainly: it is not invisible, it is blank. It occupies real width, roughly two and a half ordinary spaces. If you need something with genuinely zero width — to sit between two letters without moving them apart — the braille blank cannot do it and U+2060 can. It also permits a line break after it, so a long run will wrap.

The hangul filler is the one to reach for when a field demands a letter, because Unicode really does classify it as one. Two warnings come with it: it is default-ignorable, so security-conscious platforms filter it, and NFKC normalisation silently rewrites it into a different character — meaning what you paste and what gets stored may not be the same thing.

Three characters this page deliberately does not offer

  • U+FEFF — Unicode superseded it for this purpose back in version 3.2, and it is the only zero-width candidate that JavaScript's own .trim() removes, because ECMAScript counts it as whitespace even though Unicode does not. It cannot survive a form validator that does nothing more than trim its input.
  • U+00A0 — a non-breaking space. Unicode marks it as whitespace, both JavaScript and Python strip it, and NFKC turns it into an ordinary space. It is a space, not an invisible character.
  • U+180E — see below. It is a coin flip.

The Character Unicode Changed Its Mind About Twice

U+180E, the Mongolian vowel separator, is the reason to distrust any list that claims a blank character "works" without saying when it was checked.

It entered Unicode 3.0 as a format character. Unicode 4.0 reclassified it as a space. Unicode 6.3 reclassified it back to a format character. Each move changed how software treats it, and software does not update in step with the standard.

The consequences were real. Jon Skeet documented C# source files that compiled under one version of the runtime and failed under another, because the two disagreed about whether U+180E was a space — the older compiler carried a Unicode 3.0 table inside it while the newer one read the current classification. JavaScript engines went through the same correction: a regular expression matching whitespace used to match U+180E and now does not.

The lesson generalises. Platform filters are built on whatever Unicode data the platform's language runtime shipped with, and those runtimes span many years. A character's behaviour is not one fact — it is a different fact per system, changing quietly as libraries update. That is why this page describes mechanisms instead of publishing a compatibility table with confident ticks in it.

What Platforms Actually Say About This

Two platforms have gone on the record. Both are worth reading carefully, because they say more about the situation than any third-party claim.

Discord

Discord's developer documentation states that it limits some zero-width and non-rendering characters in names, that names are sanitised and trimmed, and — in the same section — that further rules exist which it will not publish, for anti-abuse reasons.

That last part is the important one. Discord deliberately does not disclose its filter list. Any page telling you which specific code points Discord blocks today is guessing. Separately, the newer unique username (the @handle) uses a strict allow-list of lowercase letters, digits, underscores and full stops — no invisible character can appear in one at all. Display names and per-server nicknames are the only places the question even arises.

VRChat

Asked to ban invisible characters in names, VRChat's community team confirmed that new accounts can no longer use them, while existing accounts were left alone rather than being forced to rename. The reasons users gave are the reasons every platform eventually closes this door: impersonation of an existing user whose name looks identical, and — the serious one — an invisible name can make a person impossible to report, because the name shown in the app cannot be typed into the report form.

Everywhere else

We could not find documentation for Instagram, Roblox, Google Docs or the games most commonly mentioned in connection with blank usernames, and we are not going to make it up. Reports about games in particular contradict each other, and blank-name loopholes get patched without announcement. Assume anything specific you read about a named app — here or elsewhere — may already be out of date.

Invisible Does Not Mean Empty

These characters are absent to your eye and entirely present to everything else. Four consequences people run into:

  • They count. A Discord nickname limit of 32 characters counts them. So does an Instagram bio limit. The braille blank takes three bytes in UTF-8, so anything that measures bytes fills up three times faster than you expect.
  • They break comparisons. "text" and "text" with a hidden character appended are different strings. Spreadsheet lookups, database queries and deduplication scripts fail silently — the two values look identical on screen.
  • They break code. Python raises SyntaxError: invalid non-printable character; JavaScript raises Invalid or unexpected token. The usual source is code copied out of a chat app, a PDF or a rendered web page. The file looks perfect in the editor.
  • Never paste one into a password field. It is invisible to you and to your password manager, and it will fail authentication forever with no way to see why.

The one that is worth knowing about: invisible characters can carry a payload

Zero-width characters are used to watermark text. Encode a recipient's identity in binary, spell it out with two zero-width characters standing in for ones and zeros, scatter it across word boundaries, and any copy of the document carries a marker identifying who leaked it. The technique is well documented and browser extensions exist to detect it.

The practical implication is direct: invisible characters you copied from a random website are not necessarily the character you asked for. A generator can emit anything it likes and you cannot see the difference. That is what the reverse direction on this page is for — paste anything in and every hidden code point is named. Use it on text from anywhere, including here.

Where This Is Fine and Where It Gets You Banned

Worth being straight about, because the uses are not equivalent.

Fine

Spacing and layout in a bio. Sending a message that appears blank as a joke between friends. Padding a display name. Testing how your own software handles unusual input. None of this harms anyone and none of it is what platform rules are aimed at.

Not fine

  • Evading moderation or a ban. Breaking up a word so a filter cannot match it, or making a name that cannot be typed into a report form, is exactly the abuse that led VRChat and Discord to restrict these characters. It also removes another user's ability to report you, which is the part that actually matters.
  • Hiding text on a web page. Invisible keywords in a page are cloaking under Google's spam policies. It does not work and it puts the site at risk.
  • Slipping content past a review system. Ad reviews, app store checks and email filters all treat this as evasion. The same trick was used in 2018 to smuggle phishing links past Office 365's link protection, and that is how security teams categorise it now.

There is also a standards-level reason platforms are suspicious. Unicode's own security guidance places default-ignorable characters on its restricted list for identifiers — meaning Unicode itself advises against allowing them in usernames. Every character on this page except the braille blank is on that list. A platform treating an invisible name as a red flag is following the standard, not being unreasonable.

What People Use It For

  • Adding blank lines and spacing to an Instagram or TikTok bio
  • Sending a message that appears empty as a joke
  • Padding a display name where the field rejects ordinary spaces
  • Inspecting text you copied to see whether it carries hidden characters
  • Testing how your own form validation handles unusual input
  • Checking whether a field strips a given character before you rely on it

Frequently Asked Questions

Which invisible character works best?

U+2800, the braille blank, passes the widest range of input checks — it is not whitespace, not a format character and not default-ignorable, which are the three things filters look for. Its trade-off is that it is blank rather than zero-width, so it takes up real space.

Why does this page not list success rates per platform?

Because those numbers are invented. No site publishing them describes a method, a sample or a date. What is verifiable is which type of check a character survives, so that is what the comparison table shows.

Does invisible text work on Discord?

Discord states that it limits some zero-width and non-rendering characters, and explicitly declines to publish which ones for anti-abuse reasons. It cannot be used in the newer @username at all, which allows only lowercase letters, digits, underscores and full stops.

Why did my invisible character disappear when I pasted it?

Most likely the field trimmed or normalised it. U+FEFF is removed by JavaScript's own trim function, non-breaking spaces are stripped by nearly everything, and NFKC normalisation rewrites the hangul filler into a different character.

Do invisible characters count towards character limits?

Yes, every one. A 32-character nickname limit counts them the same as letters, and the braille blank uses three bytes in UTF-8, so byte-based limits fill up faster still.

Can invisible characters be used to track me?

They can carry a watermark. Encoding an identifier in zero-width characters scattered through a document is a known way to trace who leaked it. Use the reverse direction on this page to see exactly what any text contains.

Will invisible text get my account banned?

It can, if it is used to evade something. Platforms treat unreportable or unmatchable names as an abuse signal, and Unicode's own security guidance recommends against allowing these characters in usernames. Spacing a bio is not the same thing as dodging a filter.

Is it safe to paste text here?

Yes. Everything happens in your browser. Nothing is sent anywhere, nothing is stored, and this tool emits only the single code point you selected — which you can verify with the reverse direction.

Last updated 2026-08-03.