CLAUDE WATERMARK REMOVER · PRACTICAL TEST
Will cleanup make a pasted email address valid?
Only the selected-marker fixture becomes valid in our browser email input. A retained joiner and a missing @ remain invalid. Format acceptance does not verify mailbox ownership or delivery.
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 |
|---|---|---|---|
| Selected marker direct string / keep / invisible true | "user@example.com"U+0075 U+200B U+0073 U+0065 U+0072 U+0040 U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D | "user@example.com"Removed 1 invisible character | {"typeMismatch":true,"valid":false,"value":"user@example.com"}{"typeMismatch":false,"valid":true,"value":"user@example.com"} |
| Retained joiner direct string / keep / invisible true | "user@example.com"U+0075 U+200D U+0073 U+0065 U+0072 U+0040 U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D | "user@example.com"No selected invisible characters found | {"typeMismatch":true,"valid":false,"value":"user@example.com"}{"typeMismatch":true,"valid":false,"value":"user@example.com"} |
| Ordinary address direct string / keep / invisible true | "user@example.com"U+0075 U+0073 U+0065 U+0072 U+0040 U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D | "user@example.com"No selected invisible characters found | {"typeMismatch":false,"valid":true,"value":"user@example.com"}{"typeMismatch":false,"valid":true,"value":"user@example.com"} |
| Missing at direct string / keep / invisible true | "user.example.com"U+0075 U+0073 U+0065 U+0072 U+002E U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+006D | "user.example.com"No selected invisible characters found | {"typeMismatch":true,"valid":false,"value":"user.example.com"}{"typeMismatch":true,"valid":false,"value":"user.example.com"} |
The browser validates the edited address
Each observation creates a detached HTML input, sets its type to email and assigns the exact fixture string. The selected U+200B address produces a typeMismatch before cleanup and no mismatch after the output becomes user@example.com. The U+200D address stays invalid because that joiner is retained. The ordinary reference is valid at both stages, while the missing-at fixture remains invalid. We save the actual input value, typeMismatch and validity.valid from the browser. No form is submitted, no mailbox is contacted and no address is inferred from a real user account.
This check has a defined destination grammar
The HTML Standard defines the email input state and its validity rules. The homepage performs selected character deletion without implementing those rules, and it cannot repair missing syntax such as an at sign. The recorded Chromium version and browser JSON identify this experiment independently from the Node cleanup harness. These inputs are simple ASCII addresses with one chosen inserted character, not a test of every internationalized address, multiple-address input or server-side validation library. Browser format validity is only this grammar result; it does not establish existence, ownership, deliverability or the address that a person intended to provide.
Confirm the intended identity before editing
Preserve the original pasted address and ask its owner or originating system for the intended spelling when uncertain. After an evidence-based edit, validate through the destination application and use its normal verification workflow if ownership matters. Do not treat every invisible character as permission to rewrite an account identifier automatically. A change can select a different identity even when the resulting string is accepted by a form. Our downloadable browser harness reruns these detached-element checks locally, and the Node harness independently rechecks cleanup. The results establish one selected-character repair and two unchanged failures, rather than a general email sanitizer.
Reproduce this test
Download the independent browser test and open it locally to rerun the destination observer. Original Chromium record identifies the browser version. The Node harness rechecks the cleanup callback and joins its outputs with those saved browser observations; it does not rerun the browser validator. Save browser-record.json beside the other downloads for that join. 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
HTML email input state 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.