Find and remove the characters you can't see in any text

Paste text from ChatGPT, a PDF or a web page and every zero-width space, odd space and hidden character shows up where it sits. Clean it in one click, and keep what emoji and other scripts need.

  • Free, no sign-up
  • Runs in your browser: Nothing you paste or drop leaves your device.

Updated 18 October 2026

Your text

0 characters

What's hidden

Paste some text to see what's hidden in it.

Clean up

Em and en dashes

Clean text

The clean text shows here.

Building an AI feature people can trust?

Hidden characters are the small part. I design AI features that explain themselves, show how sure they are and let people correct them, then build them in code.

What counts as an invisible character

Unicode has dozens of characters that take up no space or look exactly like a normal space. They are useful in the right place and a nuisance everywhere else. This tool finds nine kinds:

  • Zero-width characters: the zero width space (U+200B), the joiner and non-joiner (U+200D, U+200C), the word joiner (U+2060), the byte order mark (U+FEFF) and blank fillers like the Hangul filler.
  • Unusual spaces: the no-break space (U+00A0), the narrow no-break space (U+202F), thin, hair, em and en spaces, and the ideographic space.
  • Direction marks: the left-to-right and right-to-left marks, embeddings, overrides and isolates that reorder how text is shown.
  • Soft hyphens, control characters, line and paragraph separators, and the object replacement character.
  • Tag characters and variation selectors, which can carry whole hidden messages.

Each one shows in the text as a small labelled box. Point at it to see its name and code point.

Did ChatGPT add a watermark?

In April 2025 people noticed that longer replies from some ChatGPT models contained narrow no-break spaces (U+202F) where a normal space belonged, and the idea of a hidden watermark spread fast. OpenAI said it was a side effect of how the models were trained, not a watermark, and the pattern faded soon after.

Two things are worth knowing either way. These characters are trivial to remove, so they could never be a reliable watermark. And removing them does not make text written by AI look like text written by a person: tools that detect AI writing look at the words, not at spaces. This tool cleans text so it behaves; it makes no promise about detection.

Why hidden characters break things

A zero-width space inside a word stops search from finding it, breaks a password or a coupon code that looks right, and splits a URL. A no-break space in code or a spreadsheet makes a value that looks identical fail to match. Direction overrides can make code read differently from how it runs, the attack known as Trojan Source. Soft hyphens and joiners throw off word counts, sorting and SEO titles.

If something you pasted behaves oddly, paste it here first. If the right side shows boxes, they are the reason.

Hidden text and AI prompt injection

Two families of characters can spell out a whole message that no one sees on screen. Unicode tag characters (U+E0020 to U+E007E) mirror the ASCII alphabet. Variation selectors, normally used to switch an emoji between colour and plain styles, can be stacked behind an emoji to carry any bytes at all.

Both are known ways to hide instructions for AI tools inside an ordinary looking comment, email or web page. When this tool finds them it decodes the hidden words and shows them to you, so you can see what was hiding before you clean it.

What the tool keeps on purpose

Some invisible characters are doing a job. The zero width joiner glues emoji together, so the family emoji or the rainbow flag stays one picture. Persian needs the zero width non-joiner inside words, and Hindi and other Indic scripts use joiners to pick letter shapes. Flag emoji for England, Scotland and Wales are written with tag characters, and a single variation selector after a heart or a digit chooses how it looks.

With Keep what emoji and scripts need on, the tool leaves all of these alone and shows them in grey. Turn it off only if you really want every invisible character gone.

Private by design

The text you paste never leaves your browser. There is no upload and no server step, so it is safe for drafts, client documents and code. I built it as one of a set of free tools for the jobs product teams do every day.

Questions people ask

  • Some ChatGPT replies in April 2025 contained narrow no-break spaces (U+202F), which many people read as a watermark. OpenAI said it was a side effect of training, not a watermark. Text from any source can still carry odd spaces and zero-width characters, and this tool shows you exactly which ones.
  • No. AI detectors judge the words and how they are put together, not the spaces between them. Cleaning hidden characters makes text behave properly in code, documents and search; it does not change who or what wrote it.
  • No. Everything runs in your browser with JavaScript on your device. Nothing is uploaded or stored, and the page works the same with your network turned off once it has loaded.
  • U+200B, a character that marks a place where a line may break but shows nothing. It is common in text copied from websites and chat apps, and it silently breaks searches, passwords, codes and URLs.
  • A thinner space that also stops a line break, used in French typography and between numbers and units. Elsewhere it makes words look normal but fail to match. With Turn unusual spaces into normal spaces on, the tool replaces it with an ordinary space, so words never run together.
  • Not with Keep what emoji and scripts need turned on, which is the default. The tool keeps joiners inside emoji sequences and inside Persian, Arabic and Indic words, the tags of subdivision flags, and single emoji style selectors.
  • Yes. Unicode tag characters and runs of variation selectors can spell out text that no one sees, a known way to hide prompts in comments, emails and web pages. The tool decodes such text and shows it before you clean it.
  • VS Code highlights many invisible and look-alike characters on its own (the editor.unicodeHighlight settings), and View, Render Whitespace shows spaces. For text outside an editor, paste it here and every hidden character gets a labelled box.

Need more than a free tool?

I design and build products around jobs like this one. Start with a free 30 minute call, then get one written scope and one fixed quote.

Book a free intro call