StripShot/Guides/Hidden Characters in AI Text

Unicode

Hidden Characters in AI Text: Where They Come From and How to Find Them

Updated September 2026

Text that looks clean is not always clean. Between the letters you can see there is room for characters you cannot: spacing controls, direction markers, glyph selectors and an entire alphabet that renders as nothing. They arrive through copy and paste, through chat interfaces, and sometimes on purpose. Here is what they are, what they break, and how to remove them without collateral damage.

Quick answer

The characters most often found in AI and web text:

Scan first, then strip. The tool below lists every one by code point and shows where it sits.

Where they come from

SourceWhat it leaves behindDeliberate?
Web pages and PDFsSoft hyphens from justified text, non-breaking spaces, byte order marks, directional marks around mixed-language snippetsNo
Word processors and emailNon-breaking spaces, curly quotes, em dashes, the occasional zero-width space from autocorrectNo
Chat interfacesNarrow no-break spaces and typographic punctuation; in 2025, U+202F in some ChatGPT model output, described by OpenAI as a training quirkNot as far as anyone has shown
Document fingerprintingA unique pattern of zero-width characters per recipient, so a leaked copy can be tracedYes
Prompt injection and filter evasionTag characters carrying hidden instructions; look-alike letters that slip past keyword filtersYes

What they break

The ChatGPT space episode

In April 2025, users and at least one research group documented that outputs from some then-current ChatGPT models contained narrow no-break spaces (U+202F) in places a keyboard would never put them. The pattern was regular enough to look intentional. OpenAI's response, reported at the time, was that the characters were a side effect of large-scale training rather than a watermark, and that it would be addressed. Whatever the cause, the episode made a general point: text that comes out of a model has been through a pipeline you did not control, and scanning it before you rely on it is reasonable.

Hidden characters are not the statistical watermark

Vendors that watermark text at the model level, the approach Google published as SynthID-Text and the class Anthropic describes for Claude, do it through word choice, not characters. Cleaning hidden characters does not touch that mark, and a scan that finds none does not mean the text is unmarked. The two problems are separate, and only the character problem has a certain fix.

How to clean without breaking things

The naive approach, delete every character in the Unicode format category, destroys legitimate text. The joiner between the members of a family emoji, the selector that turns ✔ into an emoji, the tag characters that spell out a regional flag, and the non-joiner that keeps a Persian word from mis-shaping are all format characters with jobs. A good cleaner looks at the neighbours: a joiner between two emoji stays, a joiner between two Latin letters goes. StripShot's cleaner is adapted from the MIT-licensed watermarks-remover project, which encodes exactly those rules, and every removal it makes is listed so you can check its work.

Spaces get normalized rather than removed, look-alike letters are swapped back to Latin only if you turn that option on, and typographic punctuation is optional too, because sometimes you want your curly quotes. The re-scan after cleaning shows the count at zero, which is the only proof that matters.

Scan your text

Find every hidden character in a paste

Runs in your browser. Nothing is uploaded.

0 words
Options
Processed in this tab. Nothing is uploaded.
0 free strips today·Scans are unlimited·Get Pro for $1 →

Need unlimited strips?

Scans are free. Pro is unlimited.

Images, video, audio, documents, PDF and text in one tool. Pro adds unlimited strips, whole-folder batches and zip download with a JSON report.

Frequently asked questions

Why does ChatGPT text have weird spaces in it?

In April 2025 several people documented narrow no-break spaces (U+202F) in output from some ChatGPT models. OpenAI described it as a training side effect rather than a watermark and said it would be addressed. Separately, chat interfaces and rich-text editors routinely emit non-breaking spaces (U+00A0), curly quotes and em dashes, which are typographic rather than hidden but cause the same search and code problems.

Are hidden characters a watermark?

They can be. A deliberate pattern of zero-width characters is the classic way to fingerprint a document so a leaked copy can be traced. Most hidden characters in everyday text are accidental copy residue, though, and you cannot tell the difference by looking. You can tell by scanning.

What is ASCII smuggling?

Unicode has a block of tag characters (U+E0000 to U+E007F) that mirror ASCII but render as nothing. Text written in them is invisible to a reader and legible to a language model, which makes them a vehicle for hiding instructions inside otherwise normal text. Any text you paste into an AI tool from an untrusted source is worth scanning for them.

Will removing hidden characters break my emoji or my Arabic text?

A careless cleaner will. A family emoji is four emoji glued with zero-width joiners; a flag is a base plus tag characters; Persian and Hindi words need joiners and non-joiners to shape correctly. StripShot keeps every one of those by checking what sits on either side of the character, and removes only the free-floating ones.

How do I see hidden characters in my text?

Paste it into the tool on this page and click Scan. Each hidden character is listed by code point and count, and the highlighted view shows exactly where each one sits before anything is changed.

Related guides

Tool

Remove Invisible Characters From Text

ChatGPT

Clean ChatGPT Text Before You Paste It

Explainer

How AI Text Watermarks Work

DOCX

Remove Metadata From Word Files