
A zero-width space is a character with no width. It is not a space that happens to be narrow — it is a character that occupies a position in your text and renders nothing at all. Unicode calls it U+200B. Your document calls it a word. Your search function calls it a mismatch.
It is the most common of the invisible characters that arrive with text copied out of ChatGPT, Claude, or Gemini, and it is the one responsible for most of the strange behaviour people blame on their word processor.
Key Takeaways
What it was for
Zero-width spaces exist for a real typographic reason. In languages that do not put spaces between words, and in very long unbroken strings like URLs or chemical names, a renderer needs somewhere it is allowed to break a line. A zero-width space marks a legal break point without drawing anything.
That is a legitimate job. The trouble is that the character survives outside the context where it was doing that job. When a chat interface renders your response as HTML and you copy it back out as text, the break hints come with it — and in a Word document, a break hint inside the word "management" is not a feature.
What it actually breaks
Find-and-replace
This is the one that wastes an afternoon. You search for a word you can plainly see on screen and your editor reports zero matches. What is stored is not the word — it is the first half, then U+200B, then the second half. String comparison is exact, so nothing matches.
The same mechanism breaks spell-check (each half is a non-word, or worse, both halves are real words), autocorrect, and any script that counts occurrences.
Word counts and text statistics
Different tools split text on different character classes. One counts the fragments either side of a zero-width space as two words; another counts them as one. Neither is wrong, exactly, and the disagreement is impossible to debug if you do not know the character is there.
SEO and exact-match keywords
This one is quiet and expensive. Put a zero-width space inside your target keyword in a title tag or a meta description, and the string a crawler parses is not the string you see in your CMS preview. Your keyword density reports skew. Exact-match phrases stop matching. Nothing errors, nothing warns you, and the page just underperforms for a reason that never surfaces in any audit.
CMS and template parsers
WordPress's block editor stores structured content and validates it on save. Control and formatting characters copied from a rendered page can invalidate a block, at which point Gutenberg either scrambles the formatting or refuses to save cleanly. Static site generators, Markdown parsers, and templating engines fail in comparable ways.
Citation managers and reference matching
Reference tools match on author, title, and year strings. A zero-width space in an author name means the reference you are certain you imported does not link to the citation you are certain you inserted.
How to see one
You cannot see it, but you can catch it:
- Search for the character directly. In editors that support regular expressions,
\x{200B}or[-]will find them. VS Code, Sublime, and Notepad++ all handle this. - Watch the caret. Arrow-key through a suspicious word. If the caret pauses at a position where there is visibly no character, something invisible is there.
- Paste into a hex or code view. Anything that shows you bytes shows you the truth.
- Run a scan. The AI Phrase Detector on the homepage flags every hidden character in your text with a visible tag where it sits, so you can see the positions rather than hunt for them.
The last option exists because the first three all require you to already suspect the problem. Most people do not, which is exactly why the character is a problem in the first place.
How to remove one
Removing a zero-width space is a delete operation on a known code point. It carries no risk to your meaning because the character has no meaning — nothing about your sentence changes when it goes.
The complete set worth stripping alongside it:
| Character | Code point | Becomes |
|---|---|---|
| Zero-width space | U+200B | Nothing |
| Zero-width non-joiner | U+200C | Nothing |
| Zero-width joiner | U+200D | Nothing |
| Word joiner | U+2060 | Nothing |
| Byte-order mark | U+FEFF | Nothing |
| Soft hyphen | U+00AD | Nothing |
| Non-breaking space | U+00A0 | An ordinary space |
| Narrow non-breaking space | U+202F | An ordinary space |
| Thin space | U+2009 | An ordinary space |
Note the split. The first six are removed outright. The last three are replaced with a normal space rather than deleted, because deleting them would join two words together — a fix worse than the problem.
On PassMyEssay this runs automatically on every pass, before anything else happens to your text. Paste, hit Clean, copy the result out.
Does a zero-width space mean the text is AI-generated?
No. It means the text was copied out of something that renders HTML. That includes every AI chat interface, and it also includes web pages, PDFs, email clients, and documents that passed through any of the above years ago.
Nobody is inferring authorship from invisible characters, and any tool that claims to is guessing. What is true is narrower and more practical: if you pasted from a chat window, these characters are almost certainly in your document right now, and they will stay there until something removes them.
Related: ChatGPT hidden characters, why find-and-replace fails on pasted text, why AI writing sounds robotic.
Try PassMyEssay free → See every hidden character in your text, then strip them in one pass.
Keep Reading
Related guides
ChatGPT Hidden Characters: What Is Actually In Your Copied Text
The invisible characters that ride along when you copy out of ChatGPT — what each one is, what it breaks, and how to get rid of them before you submit.
Why Claude Artifacts Paste Badly Into Word and Google Docs
Copying out of a Claude Artifact gives you a rendered document, not plain text. What comes along, why it fights your template, and how to get clean text out.
Does ChatGPT Watermark Its Output? A Straight Answer
Separating what OpenAI actually does from what the internet claims — no hidden signature, two real traces, and what each one means for your document.
Why Find-and-Replace Fails on Text You Pasted From AI
Your search finds nothing on a word that is visibly on screen. Here is the invisible character causing it, how to confirm it, and how to fix the whole document at once.
Make your draft clearer
Use PassMyEssay to rewrite AI-assisted text responsibly, check weak sections, and keep your meaning intact.
Try PassMyEssay