Hidden CharactersChatGPTWatermarkUnicode

ChatGPT Hidden Characters: What Is Actually In Your Copied Text

P
PassMyEssay TeamResearch Team
PublishedAugust 14
Read Time5 min read
Rendering the invisible characters inside a paste from ChatGPT

Copy a paragraph out of ChatGPT, paste it into Word, and you have moved more than the words. Somewhere in that block of text are characters that occupy real positions in the file and render as nothing at all. You cannot see them by looking. Your word processor cannot show them without being asked. Every parser that touches the document afterwards can see all of them.

This is the concrete half of what people call a ChatGPT watermark. It is not a tracking system and it is not deliberate. It is a side effect of copying text out of a web interface that renders formatting, and it causes a specific, boring, repeatable set of problems.

Key Takeaways

    The characters, one at a time

    Each of these is a legitimate Unicode character with a legitimate purpose somewhere. None of them has a purpose in an English essay you typed yourself, because your keyboard cannot produce them.

    CharacterCode pointWhat it looks likeWhat it does to you
    Zero-width spaceU+200BNothingSplits a word invisibly
    Zero-width non-joinerU+200CNothingLeftover from inline rendering
    Zero-width joinerU+200DNothingLeftover from inline rendering
    Word joinerU+2060NothingPrevents a line break you did not ask for
    Byte-order markU+FEFFNothingArtefact of how the text was encoded
    Soft hyphenU+00ADNothing, usuallyAppears as a hyphen only if the word wraps
    Non-breaking spaceU+00A0A spaceWraps differently from a real space
    Narrow non-breaking spaceU+202FA spaceSame, and narrower
    Thin spaceU+2009A spaceSame, and narrower still

    The first six are genuinely invisible. The last three are worse in one respect: they look exactly like the space bar output sitting next to them, so even someone who knows to look cannot spot them by eye.

    The one you can see

    Em dashes are the honourable mention. A dash is not hidden — it renders, obviously. But nobody typing an essay in a hurry produces three em dashes per paragraph, and heavy em dash use is the single most recognisable signal of AI-drafted prose in 2026. It belongs on the same checklist even though it belongs in a different category.

    Where they come from

    The chat interface is a web page. Your response is HTML: bold spans, list items, inline code, paragraph breaks. When you hit the copy button, the browser converts that rendered HTML into text, and the conversion is not lossless in the direction you would expect. It is lossy in the other direction — formatting that had structural meaning in HTML gets flattened into characters that hold the layout together in plain text.

    A non-breaking space existed so a number would not wrap away from its unit. A word joiner existed so an inline code fragment would not split across lines. A zero-width space existed so a very long token could wrap gracefully. Flatten the page and those decisions arrive in your document as literal characters.

    This is why the problem is not unique to ChatGPT. Claude, Gemini, Copilot, and every other chat interface renders HTML and gets copied the same way. If you want the model-specific version of this, we have one for Claude and one for Gemini, because their copy paths differ in the details.

    How you find out you have them

    Almost never directly. The characters announce themselves through symptoms that look like something else entirely:

    • Find-and-replace misses a word that is visibly right there. There is a zero-width space inside it, so management is stored as manage+U+200B+ment and your search for management matches nothing.
    • Your word count disagrees with your editor's. Different tools split on different characters.
    • An exact-match keyword silently stops matching. In a title tag or meta description, this means an SEO tool reports one thing and the crawler parses another.
    • A WordPress block scrambles on save. Control characters and leftover attributes crash Gutenberg's parser.
    • A citation manager fails to match a reference it should have matched. The author string contains a non-breaking space where a normal one should be.
    • Justified text breaks strangely. Non-breaking spaces refuse to stretch the way real spaces do.

    Every one of these costs half an hour and none of them points at the real cause. That is the actual damage: not that the characters are dangerous, but that they are expensive to diagnose.

    Do they prove you used AI?

    No, and this matters both ways.

    They are not evidence of anything on their own. Text copied from a PDF, a Wikipedia article, a Word document written in 2009, or a colleague's email can contain exactly the same characters. Nobody is running a scan for zero-width spaces and concluding you cheated, and any tool claiming to detect AI authorship from hidden characters is selling you something.

    But they do not help you either. If your work gets questioned, a document full of formatting artefacts from a chat interface is not the thing you want to be explaining. And the characters travel forever — they survive every copy, every save, and every export until something deliberately removes them.

    Removing them

    Deleting a known character is a lookup, not a judgement call. It requires no model, no cleverness, and no decision from you. That is why we do it automatically on every pass rather than making it a feature you have to remember to turn on.

    1. Paste your text into the workspace on the PassMyEssay homepage.
    2. Hit Clean. Every character in the table above is stripped in a single pass — the invisible ones removed outright, the space-like ones replaced with an ordinary space.
    3. Copy the result into Word, Docs, Gmail, or your CMS.

    Do it last, immediately before you send. The characters accumulate with every paste out of a chat window, so one clean at the end beats cleaning as you go.

    The half that is not characters

    Here is the thing worth being honest about: stripping these characters fixes your document, not your writing. A paragraph with every hidden byte removed still opens with "In today's rapidly evolving landscape," still runs a tricolon in every third sentence, and still reads to a human being exactly like a machine wrote it.

    That layer is not a lookup. It needs the sentence understood — which claim is load-bearing, which phrase is filler, where the rhythm has gone flat — and rewritten. That is the harder half of the job and the one that actually changes how your work is received.

    Related: why AI writing sounds robotic, how to humanize ChatGPT text, what is an AI humanizer.

    Try PassMyEssay free → Strip every hidden character in one pass, then fix the phrasing that gives it away.

    Keep Reading

    Related guides

    Make your draft clearer

    Use PassMyEssay to rewrite AI-assisted text responsibly, check weak sections, and keep your meaning intact.

    Try PassMyEssay