AI Watermark Detector · hidden characters

Invisible character remover

Paste text and take away every code point that renders as nothing. You get a clean copy to paste back, and a list of exactly what was removed.

Last updated

In one line

Paste text and take away every code point that renders as nothing. You get a clean copy to paste back, plus a list of exactly what was removed — because a silent removal is just a second invisible edit.

Clean your text

The text is cleaned in your browser. Nothing is uploaded, nothing is stored, and the original is still in the box if you decide the characters were legitimate.

Hidden-character remover

offline · local only
0 chars
Try a sample:

Tip: press ⌘↵ to run. Nothing leaves this device.

Paste some text above, or pick a sample under the box.

What gets removed, and what stays

Not every invisible code point should go. A variation selector is what makes an emoji render as an emoji, and a non-breaking space is doing a job in a price. This page removes what has no display role and converts what has a visible equivalent, so the words you see stay the words you saw.

What the cleaner does, category by category
CategoryWhat the cleaner doesWhy
Zero-width characters Removed. They carry no meaning and break string matching. Removing one cannot change a visible word.
Unicode tag characters Removed, after the payload is decoded and shown to you. They are an invisible ASCII channel. You should see the message before you decide to drop it.
Direction overrides Removed. They reorder what is displayed. Removing one can change the reading order, which is exactly why the list is shown first.
Variation selectors Kept in U+FE00–U+FE0F, removed above it. The low range carries emoji presentation and is legitimate. The U+E0100 range has no display role in ordinary text.
Look-alike letters Replaced with the Latin letter they imitate. Deleting them would delete the word. Substituting keeps the text readable and stops it resolving somewhere else.
Private-use and noncharacters Removed. No agreed meaning, no display, no reason to keep one.
Odd whitespace Replaced with an ordinary space. A non-breaking space is a real gap. The intent is preserved; the character that breaks your parser is not.
Line and paragraph separators Replaced with a newline. The line break is wanted; the exotic separator is not.
Ordinary text Untouched. Every other code point is copied through, character for character.

How to remove invisible characters from AI text

  1. Copy the text out of whatever produced it. Select the whole thing, including the end. A fingerprint is often placed in the last few characters.
  2. Paste it into the box above and press the button. The check runs in the page, so it works with the network disconnected.
  3. Read the list before you copy. If the text is code, a direction override may be deliberate. If it is a translation into a right-to-left language, a bidirectional mark is part of the text, not noise.
  4. Press “Copy cleaned text” and paste that into your document, your editor or your form.

The characters are usually not a watermark. In practice they arrive from a PDF export, a content management system, a word processor’s smart-quote conversion, or a copy from a web page that used a private-use icon font. The check tells you which one you have, because the fix is different in each case.

Removing a fingerprint is not the same as making text human

Two things are worth saying plainly, because a page like this one is often read as a promise it cannot make.

First, this does not remove a statistical watermark. A zero-width character is a mark inserted next to the text. A statistical watermark is a bias in how the words were chosen, and it lives in the word choices themselves. Deleting invisible characters leaves every one of those choices exactly where it was. If a provider watermarked the text with its own key, the text still carries it.

Second, removing provenance to deceive is against this site’s terms. Cleaning text so that it stops breaking your parser is the ordinary case and it is welcome. Stripping an invisible mark so that content cannot be traced back to where it came from is not, and the terms of use say so. The line is intent, not the operation.

If the text is legitimate and the characters are deliberate, keep the original. Nothing here changes it — the box still holds what you pasted.

What this page does not do

  • It does not keep a copy. The cleaned text exists in the page until you reload it. There is no account, no history and no server that received anything.
  • It does not check images. Provenance metadata in an image is a different job. The homepage checker reads C2PA Content Credentials, EXIF, XMP and IPTC.
  • It does not read a statistical watermark. That needs the provider’s key. For images, video and audio, Google publishes its own detector at synthid.com; the SynthID page explains what it covers and what it leaves out.
  • It does not tell you who wrote the text. Removing a hidden character does not change authorship, and it does not make generated text read as human.

Where else this runs