Zerowidth CleanerAll measured guides

CLAUDE WATERMARK REMOVER · PRACTICAL TEST

Is it safe to clean an entire Markdown code example?

Review code literals separately. Our cleaner removes actual hidden characters inside fenced examples, but preserves a written backslash-u escape. That can change the very bug a code sample is meant to demonstrate.

Tested October 4, 2026 · v24.19.0 · 3 measured runs

Open the Claude text cleaner · Full measured data

Code-point comparison for Literal bug demonstration

Measured inputs and outputs

These are locally constructed test strings, not evidence that Claude inserts these characters. We executed the saved homepage script snapshot with a minimal DOM harness and compared exact strings. Invisible removal is enabled; the dash mode appears in each row. The observations below test this page's specific question. We make no detector-score or statistical-watermark removal claim.

Before and after observations; full code points and strings are in the JSON download.
Fixture and modeInput string and code pointsOutput and cleaner statusObserved before / after
Literal bug demonstration
direct string / keep
"```js\nconst sample = \"A​B\";\n```"
U+0060 U+0060 U+0060 U+006A U+0073 U+000A U+0063 U+006F U+006E U+0073 U+0074 U+0020 U+0073 U+0061 U+006D U+0070 U+006C U+0065 U+00 …
"```js\nconst sample = \"AB\";\n```"
Removed 1 invisible character
{"fenceCount":2,"lineFeeds":2,"hasWrittenEscape":false,"hasLiteralZeroWidth":true,"leadingIndent":false}
{"fenceCount":2,"lineFeeds":2,"hasWrittenEscape":false,"hasLiteralZeroWidth":false,"leadingIndent":false}
Written escape demonstration
direct string / keep
"```js\nconst sample = \"A\\u200BB\";\n```"
U+0060 U+0060 U+0060 U+006A U+0073 U+000A U+0063 U+006F U+006E U+0073 U+0074 U+0020 U+0073 U+0061 U+006D U+0070 U+006C U+0065 U+00 …
"```js\nconst sample = \"A\\u200BB\";\n```"
No selected invisible characters found
{"fenceCount":2,"lineFeeds":2,"hasWrittenEscape":true,"hasLiteralZeroWidth":false,"leadingIndent":false}
{"fenceCount":2,"lineFeeds":2,"hasWrittenEscape":true,"hasLiteralZeroWidth":false,"leadingIndent":false}
Indented code and prose
direct string / keep
"# Note\n\n print(\"re⁠view\")\n\nKeep two spaces.\n"
U+0023 U+0020 U+004E U+006F U+0074 U+0065 U+000A U+000A U+0020 U+0020 U+0020 U+0020 U+0070 U+0072 U+0069 U+006E U+0074 U+0028 U+00 …
"# Note\n\n print(\"review\")\n\nKeep two spaces.\n"
Removed 1 invisible character
{"fenceCount":0,"lineFeeds":5,"hasWrittenEscape":false,"hasLiteralZeroWidth":false,"leadingIndent":true}
{"fenceCount":0,"lineFeeds":5,"hasWrittenEscape":false,"hasLiteralZeroWidth":false,"leadingIndent":true}

The measured change inside a fence

The first fixture contains an actual U+200B between A and B in a JavaScript string literal. The cleaner returns the same Markdown fence and surrounding code with that string changed to AB. The code block still looks plausible, but it no longer demonstrates an invisible-character mismatch. The second fixture spells a backslash-u escape in ASCII. Those characters survive cleanup and continue to express the intended JavaScript escape when a reader executes the sample. Our result JSON distinguishes these two inputs unambiguously.

What remained intact in these examples

We counted triple-backtick delimiters and line feeds before and after cleaning. Their counts stay equal. The third example retains four leading indentation spaces and a double ordinary space in prose, while deleting U+2060 inside a quoted string. This establishes preservation only for these explicit characters and fixtures. It does not prove that every Markdown document renders identically: a change inside a link destination, code literal or heading can matter without changing delimiters. We did not run a Markdown renderer or execute the examples as application code.

Choose what a technical article intends to teach

If the article demonstrates hidden-character bugs, show escaped code points or a clearly marked downloadable fixture, and preserve the original sample bytes. Clean prose separately from code blocks and data examples. After any edit, compare the rendered article and the copied code with the intended input. CommonMark defines how fenced content becomes code; it does not authorize a text cleaner to edit that content. Our homepage reads Markdown as plain text, with no parser or protected-code mode. A clean removal report says nothing about whether a technical example still teaches the same behavior.

Reproduce this test

Save reproduce.cjs and tested-app.js in the same folder. Run the command below with Node.js. The harness prints its runtime, script SHA-256 and every measured row. Compare those rows with the original record. Using a newer script or runtime creates a new experiment; retain the version information with your rerun.

node reproduce.cjs

Reference and next check

CommonMark fenced code blocks provides the relevant primary definition. The table and fixture analysis are original measurements. For broader inspection, use our Unicode inspector. Read the scope distinction before interpreting cleanup as a watermark result.