CLAUDE WATERMARK REMOVER · PRACTICAL TEST
Can an invisible-looking line separator end a JavaScript comment?
Yes. In our trusted local fixtures, retained U+2028 and U+2029 end a line comment, allowing the next expression to run. U+200B does not end that comment and its deletion does not change that result.
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. File API and event-lifecycle tests include an additional stage described in the analysis. 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 |
|---|---|---|---|
| Line separator direct string / keep / invisible true | "// note
1+1"U+002F U+002F U+0020 U+006E U+006F U+0074 U+0065 U+2028 U+0031 U+002B U+0031 | "// note
1+1"No selected invisible characters found | {"completion":2}{"completion":2} |
| Paragraph separator direct string / keep / invisible true | "// note
1+1"U+002F U+002F U+0020 U+006E U+006F U+0074 U+0065 U+2029 U+0031 U+002B U+0031 | "// note
1+1"No selected invisible characters found | {"completion":2}{"completion":2} |
| Selected marker direct string / keep / invisible true | "// note1+1"U+002F U+002F U+0020 U+006E U+006F U+0074 U+0065 U+200B U+0031 U+002B U+0031 | "// note1+1"Removed 1 invisible character | {"completion":"undefined"}{"completion":"undefined"} |
| Ordinary newline direct string / keep / invisible true | "// note\n1+1"U+002F U+002F U+0020 U+006E U+006F U+0074 U+0065 U+000A U+0031 U+002B U+0031 | "// note\n1+1"No selected invisible characters found | {"completion":2}{"completion":2} |
A comment has a grammatical end
Each fixture begins with a line comment, followed by one separator and the expression 1+1. The U+2028 and U+2029 fixtures return 2 in the recorded execution. Ordinary newline also returns 2. The U+200B fixture leaves the expression inside the comment and returns an undefined completion. Removing that selected character still leaves the expression inside the comment. These results go beyond our earlier raw line-ending preservation check: here we observe whether JavaScript executes the expression after a comment, not simply whether the cleaner retains a line-break code point.
This observer executes only our authored examples
The harness uses a fresh VM context and a short timeout for these four fixed, trusted programs. Never replace the fixtures with untrusted pasted code merely to inspect its characters. The lexical grammar identifies line terminators and explains the observed comment boundaries; a font showing little visible separation does not change that grammar. The cleaner retains the two Unicode separators and reports no selected removal for those cases. It does not tokenize comments, detect a hidden executable statement or verify the safety of code. No browser application or malicious payload was evaluated in this experiment.
Review syntax before running copied code
Use an editor or static inspector to display full code points and line boundaries in code you are reviewing. Keep the original and compare any proposed edit against its intended syntax. A line separator may be a deliberate terminator rather than a character to delete. Removing it can comment out later code, while inserting it can make later code executable. Validate the edited trusted source with the actual toolchain before running it. A character removal count does not prove that comments, statements or execution order retain their meaning, and it cannot establish the origin of the program.
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
ECMAScript lexical grammar 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.