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.
Open the Claude text cleaner · Full measured data
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.
| Fixture and mode | Input string and code points | Output and cleaner status | Observed before / after |
|---|---|---|---|
| Literal bug demonstration direct string / keep | "```js\nconst sample = \"AB\";\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(\"review\")\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.cjsReference 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.