CLAUDE WATERMARK REMOVER Β· PRACTICAL TEST
Why does an RGI_Emoji property work with v but fail with u?
Our RGI_Emoji expression raises SyntaxError with u and matches a cleaned flag sequence with v. The flag contains two code points but is accepted as one string-property match. Validate the runtime and regex mode separately from cleanup.
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. Destination observations run independently on the exact input and cleaned strings in the recorded Node runtime. 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 |
|---|---|---|---|
| Marked flag sequence direct string / keep / invisible true | "πΊβπΈ"U+1F1FA U+200B U+1F1F8 | "πΊπΈ"Removed 1 invisible character | {"unicode":{"error":"SyntaxError"},"v":{"matched":false},"codepoints":3,"utf16":5}{"unicode":{"error":"SyntaxError"},"v":{"matched":true},"codepoints":2,"utf16":4} |
| Flag sequence direct string / keep / invisible true | "πΊπΈ"U+1F1FA U+1F1F8 | "πΊπΈ"No selected invisible characters found | {"unicode":{"error":"SyntaxError"},"v":{"matched":true},"codepoints":2,"utf16":4}{"unicode":{"error":"SyntaxError"},"v":{"matched":true},"codepoints":2,"utf16":4} |
| Single pictograph direct string / keep / invisible true | "π"U+1F600 | "π"No selected invisible characters found | {"unicode":{"error":"SyntaxError"},"v":{"matched":true},"codepoints":1,"utf16":2}{"unicode":{"error":"SyntaxError"},"v":{"matched":true},"codepoints":1,"utf16":2} |
| Two ASCII letters direct string / keep / invisible true | "AB"U+0041 U+0042 | "AB"No selected invisible characters found | {"unicode":{"error":"SyntaxError"},"v":{"matched":false},"codepoints":2,"utf16":2}{"unicode":{"error":"SyntaxError"},"v":{"matched":false},"codepoints":2,"utf16":2} |
The same property spelling has different compilation outcomes
The observer constructs the anchored RGI_Emoji expression independently under u and v. The u construction raises SyntaxError in every fixture. The v expression compiles and initially rejects the flag interrupted by U+200B. After the cleaner deletes that marker, it accepts the contiguous United States flag sequence. The saved code-point count changes from three to two and the UTF-16 length changes from five to four. A successful match therefore does not mean the accepted string consists of one scalar value or one UTF-16 unit.
Single and multiple code points can both satisfy this property
The plain flag reference has two regional-indicator code points and matches under v without cleanup. The single pictograph reference also matches but has one code point and two UTF-16 units. AB has two code points and two UTF-16 units yet fails the same expression. These controls distinguish sequence recognition from counting or broad acceptance of any two characters. No image rendering, font inspection or grapheme-break API is used; the results belong to regex matching against the runtime Unicode data. Counts are accompanying diagnostics rather than the matching algorithm.
Feature support and text preservation need separate checks
Use a runtime that supports the intended mode and string property, and retain the version with the experiment. An older engine may fail before it examines the text at all. Our observer catches compilation errors separately so an unsupported expression is not mislabeled a false match. The earlier flag guide tests duplicate or conflicting flag letters; here each flag is valid by itself and the property support differs by mode. The earlier emoji guide tests character preservation, while this one asks what sequence a destination regex recognizes.
One recognized sequence does not define all emoji behavior
The four controls do not enumerate every emoji sequence, modifier, variation selector or Unicode version. A retained joiner in other content is not automatically unwanted merely because this flag fixture has an inserted marker. The homepage uses a small explicit deletion set, not a universal emoji-normalization algorithm. All examples were locally authored and the flag fixture was deliberately interrupted for diagnosis. Recognition by a Unicode string property provides no evidence of Claude authorship, model-level marking or detector-score changes. Compare the real destination requirements before expanding a cleanup policy.
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 Unicode properties of strings 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.