Zero Width Space Remover

Free · 100% LocalFind every zero width space (U+200B) hiding in pasted text and delete it before it reaches your code, your JSON or your database. The scan and the cleanup run entirely in your browser.

🔒 Zero upload · works offline
⚡ Flags every U+200B position
🧾 Per-character report

1 Original Text · Paste Code or Text Here

Total 0 Hidden 0 Types 0

2 Detection Preview · Red Marks = Hidden Characters

Paste text above and every hidden character will "reveal" itself here as a red tag.

3 Cleaned Result · U+200B-Free Copy

Your cleaned text will appear here.
Output 0 Removed 0

Cleaning Options

Dash handling:
Dash range: — U+2014, ⸺ U+2E3A, ⸻ U+2E3B, ― U+2015. These appear frequently in AI text — whether to process them is up to you.

What Is a Zero Width Space (U+200B)?

A zero width space is what its name describes: a character that marks a possible line break without occupying any width. Its code point is U+200B, and Unicode classifies it as a formatting character rather than a space separator — which is why no editor widens a gap when one is present.

Used deliberately, it is a typesetting device: a browser can wrap a long URL at the invisible boundary instead of overflowing. The trouble starts when one arrives uninvited, because no font, no editor and no diff view will ever show it.

That fact explains almost every bug here: two strings can look identical on screen and still fail a comparison, because one carries a U+200B the other does not.

How U+200B Ends Up in Copied Text

Zero width spaces are rarely typed on purpose. They arrive as a side effect: chat interfaces insert them at soft-wrap points, some web forms re-render input with them, and PDF extraction produces them where a line broke inside a word. Email signatures are another carrier.

Once one sits in the source, an ordinary copy and paste carries it forward — into your editor, your spreadsheet and your database. Every step looks clean, because the character has no width. The only signal is downstream: a parse error, a failed lookup, or a value that refuses to match.

Where It Breaks Things: Three Real Cases

1. The API Key That Will Not Authenticate

A key copied from a chat window can carry a U+200B at the end. Requests fail with an authentication error, the key looks correct in every screenshot, and regenerating it changes nothing — the replacement travels through the same clipboard. JSON fails the same way: inside a string the character silently becomes part of the value; outside a string it stops the parser with an unexpected-token error.

2. The Syntax Error on a Blank-Looking Line

Paste Python containing a zero width space into a modern interpreter and the error is explicit: SyntaxError: invalid non-printable character U+200B. Older toolchains report a generic error on a line that looks empty — how a five-minute fix becomes an hour.

3. The Row That Will Not Match

In a database, a value with a trailing U+200B is not the string you see. A UNIQUE index will store the second version of a username, a WHERE clause will not find the row you just inserted, and a lookup returns missing against data that looks identical.

Zero Width Space vs Zero Width Joiner and Non-Joiner

U+200B is the one member of the zero-width family that is safe to delete on sight.

U+200D, the joiner, glues characters into a single glyph: many emoji are sequences held together by it, and deleting those can turn one symbol into several. U+200C, the non-joiner, does the opposite — it blocks cursive joining in Arabic, Persian and Indic scripts, and removing it can change how a word is written.

The practical rule: strip U+200B from code and data without hesitation, and pause before touching U+200C or U+200D in text containing emoji or non-Latin scripts. This tool groups the zero-width family as one, so check the preview first — for the wider catalogue, see the invisible character remover.

How to Remove Zero Width Spaces (3 Steps)

  1. Paste the text. The scan runs as you type, and the counters report how many hidden characters were found.
  2. Read the preview. Every U+200B and its relatives appear as a red tag where they sat, so a harmless stray is easy to tell from a joiner you need to keep.
  3. Copy the cleaned result. The right-hand panel holds the text with the selected groups removed, ready to paste back into your editor, request or upload.

Nothing is uploaded, and the page works offline. The broader workflow lives on the ChatGPT watermark remover home page.

Frequently Asked Questions

What is a zero width space remover?

A zero width space remover is a tool that scans text for U+200B — the invisible line-break character — and deletes it. This one works character by character in your browser: it counts every hidden code point, marks each position in a preview, and returns a cleaned copy for code, JSON, a database field or a document. It is the narrow counterpart to the invisible character remover.

Does it delete only U+200B?

Not quite. The cleaner treats the zero-width family as one group: U+200B, U+200C and U+200D are removed together when the group is enabled. If you specifically need U+200B gone while joiners are preserved — for example in text full of emoji — inspect the preview first and adjust the options before copying the result. The detection report lists exactly which code points were found.

Is it free and does it upload my text?

Yes, it is free — no account, no usage limit, no paywall on the copy button — and nothing is uploaded. Detection and cleanup both run as local JavaScript, so the text you paste never leaves your device, which is also why the tool keeps working with the network disconnected. That matters for the everyday case of pasting keys, code or client data.

Why does my code say "invalid character" when the line looks empty?

Because the character is present and invisible. Errors like SyntaxError: invalid non-printable character U+200B point at a code point your editor refuses to draw, so the line looks blank or normal while the parser sees an illegal character. Pasting the offending line into the preview above turns the invisible into a red tag and tells you precisely which code point the parser is complaining about.

Will removing U+200B change how my text looks?

No. A zero width space occupies no space and renders as nothing, so deleting it does not alter a single visible character. The text simply behaves better afterwards: comparisons start matching, parsers stop complaining, and word counts agree with character counts. The only visible change is the disappearance of the bugs — nothing you can see in the text itself is touched.

Will it break my emoji?

It can, if joiners are deleted carelessly. Some emoji are not single characters but sequences glued by U+200D, so removing every zero-width character can split one pictograph into several. Check the preview before copying if your text contains family, profession or flag emoji. Plain prose without emoji is unaffected, and the detection report shows which code points are involved so you can decide with evidence.

How is this different from the invisible character remover?

This page is the specialist: it exists for people who searched for U+200B by name, and explains the code, JSON and database failures this one character causes. The invisible character remover is the generalist — the same engine, organised around the full catalogue of blank-rendering characters, from the byte order mark to Unicode tag characters. The cleaned output is identical either way.

More Tools on This Site

Same engine, different problems: