CLAUDE WATERMARK REMOVER · PRACTICAL TEST
Will this cleaner strip ANSI terminal color sequences?
No. Our actual ESC color sequence stays intact, and the literal text \x1b also stays intact. Removing an adjacent U+200B does not remove terminal controls.
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. The invisible-checkbox state and dash mode appear in each row. The observations below test this page's specific question. Three destination checks use separately recorded browser observations; those pages explain the distinction. 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 |
|---|---|---|---|
| Actual ANSI color direct string / keep / invisible true | "\u001b[31mRED\u001b[0m"U+001B U+005B U+0033 U+0031 U+006D U+0052 U+0045 U+0044 U+001B U+005B U+0030 U+006D | "\u001b[31mRED\u001b[0m"No selected invisible characters found | {"escCount":2,"stripped":"RED"}{"escCount":2,"stripped":"RED"} |
| Literal notation direct string / keep / invisible true | "\\x1b[31mRED\\x1b[0m"U+005C U+0078 U+0031 U+0062 U+005B U+0033 U+0031 U+006D U+0052 U+0045 U+0044 U+005C U+0078 U+0031 U+0062 U+005B U+0030 U+006D | "\\x1b[31mRED\\x1b[0m"No selected invisible characters found | {"escCount":0,"stripped":"\\x1b[31mRED\\x1b[0m"}{"escCount":0,"stripped":"\\x1b[31mRED\\x1b[0m"} |
| ANSI plus marker direct string / keep / invisible true | "\u001b[31mRED\u001b[0m"U+001B U+005B U+0033 U+0031 U+006D U+0052 U+200B U+0045 U+0044 U+001B U+005B U+0030 U+006D | "\u001b[31mRED\u001b[0m"Removed 1 invisible character | {"escCount":2,"stripped":"RED"}{"escCount":2,"stripped":"RED"} |
| Plain reference direct string / keep / invisible true | "RED"U+0052 U+0045 U+0044 | "RED"No selected invisible characters found | {"escCount":0,"stripped":"RED"}{"escCount":0,"stripped":"RED"} |
Escape notation is not the escape character
The first fixture contains two actual U+001B characters delimiting a color-setting sequence and a reset sequence. The cleaner retains both. The independent Node stripVTControlCharacters observer removes their VT control sequences and returns RED. The second fixture instead contains backslash, x, digit one and letter b as visible text. That notation is retained by both operations. The mixed fixture loses its separate U+200B during cleanup while the two ESC characters remain. Its stripped observation changes from marked text to RED only after the selected marker is removed. These are distinct string representations, not two displays of one input.
Do not execute terminal data to inspect it
The fixtures are passed to a string observer and stored as JSON. We do not print raw ESC sequences to an interactive terminal or execute pasted commands. Node documents its VT-control stripping function, which we use here as an independent comparison rather than a claim that the homepage implements it. Our earlier ASCII-control inventory showed retention of control code points; this page measures the surrounding control sequence and contrasts it with literal notation. No terminal emulator rendering, shell safety or malicious output behavior is tested. The record cannot establish where an unknown log acquired its controls.
Use a log-aware inspection path
Save raw log bytes or escaped strings before proposing edits. Determine whether a suspicious sequence contains an actual escape character, visible notation or other controls, then use the intended log-processing library for that representation. Do not run a command or render untrusted terminal output merely to see what it does. A character-cleaning count and a VT-control stripping result answer different questions, and neither proves that a log is safe to execute as code. Review the resulting ordinary text against the original data and state the chosen transformation explicitly. The homepage remains a selected Unicode character editor, not an ANSI sanitizer.
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
Node stripVTControlCharacters 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.