AI Text Cleaner: Remove Hidden Characters

Strip zero width spaces, no-break spaces, soft hyphens and other invisible Unicode from ChatGPT, Claude or Gemini text, with a count of every change and a highlighted before and after diff.

Last updatedHow we build & check our tools
Results will appear here once you enter your values.

How the cleaner works

Paste text into the box and the cleaner runs up to six passes in your browser. It lists how many times each rule fired and shows a diff where removed characters appear as labels such as ⟨ZWSP⟩ or ⟨NBSP⟩. Nothing is uploaded.

  • Remove hidden characters (on by default): ZERO WIDTH SPACE U+200B, ZERO WIDTH NON-JOINER U+200C and ZERO WIDTH JOINER U+200D when they touch Latin text, WORD JOINER U+2060, the byte order mark U+FEFF, SOFT HYPHEN U+00AD, bidi controls such as RIGHT-TO-LEFT OVERRIDE U+202E, and Unicode tag characters U+E0000 to U+E007F.
  • Normalize special spaces (on): NO-BREAK SPACE U+00A0, NARROW NO-BREAK SPACE U+202F, thin and hair spaces become a normal space.
  • Straighten quotes and ellipses (on): curly quotes become straight quotes and HORIZONTAL ELLIPSIS U+2026 becomes three periods.
  • Convert dashes (off): EM DASH U+2014 becomes a spaced hyphen, and an en dash between digits becomes a plain hyphen.
  • Strip Markdown (off) removes headings, bold and italic markers, bullets, links and code ticks. Tidy whitespace (on) drops trailing spaces, doubled spaces and runs of blank lines.

Is there really a ChatGPT watermark?

No hidden signature is added to ChatGPT text that a tool can find and delete. OpenAI has said it researched a text watermarking method for ChatGPT but chose not to release it. What people call a watermark is almost always one of two things.

Invisible characters. Zero width spaces, no-break spaces and similar code points ride along when text is copied from chat interfaces, word processors and web pages. They are invisible on screen but cause real bugs: a U+00A0 inside Python source raises a syntax error, a U+200B in a spreadsheet cell makes an exact lookup fail, and a U+FEFF at the start of a CSV can change the first column name.

Style tells. Frequent em dashes, curly quotes and bolded bullet lists are writing habits, not markers. Converting them changes typography only, not wording.

Common mistakes

  • Expecting it to beat AI detectors. Detectors score word choice and sentence structure. Deleting a U+200B does not change a single word, so a detector result will not meaningfully move.
  • Converting dashes in edited prose. A correct em dash becomes " - ", which most style guides treat as an error. Enable it only when the destination system mangles non-ASCII punctuation.
  • Stripping Markdown you still need. If the text is going into GitHub, Notion or another Markdown editor, keep the Markdown pass off. It turns "## Title" into "Title" and removes bullet markers.
  • Assuming every joiner is junk. U+200C and U+200D are required for correct shaping in Persian, Hindi and other scripts, and U+200D joins multi-person emoji. The cleaner keeps them when they sit between two non-Latin characters and removes them only next to plain ASCII text, but still check the diff for mixed-script text.

Tips for getting clean output

Click Load sample to watch every rule fire. The sample hides a ZWSP in a heading, an NBSP after a sentence, a soft hyphen inside the word particular and a byte order mark at the very end.

Review the Highlighted changes view before you copy. Removed text is struck through in red and replacements are shown in green, so you can confirm only formatting changed. When a paste is too large to diff quickly, switch to Clean text, then copy it or download cleaned-text.txt.

Compare the counters. Hidden/special characters found scans the input no matter which options are on, while Total changes made counts only the passes you enabled. If characters were found but no hidden or space rule appears under What was changed, they are still in your output.

Frequently Asked Questions

Common questions about the AI Text Cleaner: Remove Hidden Characters

Not one you can see or remove. OpenAI has said it researched a text watermarking approach for ChatGPT but has not released it. Invisible characters such as U+200B or U+00A0 that show up in pasted text come from copy and paste paths and formatting, not from a deliberate signature, so removing them does not strip any proof of authorship.
From the same team

Stop paying per token — route AI requests to your own GPU

Wide Area AI is a local-first AI gateway: repeated requests hit an edge cache, the rest run free on your own hardware, and the cloud is only a failover. OpenAI-compatible endpoint, free tier.

Start routing — free

Sources & References

Unicode Names List: General Punctuation (U+2000 to U+206F)

Official names of zero-width, joiner, bidi and typographic space characters (U+2000 block).

Unicode Names List: Latin-1 Supplement (NO-BREAK SPACE, SOFT HYPHEN)

NO-BREAK SPACE U+00A0 and SOFT HYPHEN U+00AD.

Unicode Names List: Tags block (U+E0000 to U+E007F)

Unicode tag characters U+E0000 to U+E007F.

OpenAI Scraps ChatGPT Watermarking Plans (Search Engine Journal)

Reporting that OpenAI researched but did not ship ChatGPT text watermarking.