CLAUDE WATERMARK REMOVER · PRACTICAL TEST
Why does my select show no selection for text that looks like AB?
Our select has option value AB with label Alpha Beta. Assigning A plus U+200B plus B leaves selectedIndex at -1. Cleaning gives the exact AB value and selects index 1. Visible option labels are separate from stored values.
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 were measured separately in Chromium 156 using detached native controls and programmatic value assignment. Node reruns the actual homepage callback and reads the saved browser observations; it does not independently rerun the browser. No form was submitted. 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 option direct string / keep / invisible true | "AB"U+0041 U+200B U+0042 | "AB"Removed 1 invisible character | {"options":[{"label":"Choose","selected":false,"value":""},{"label":"Alpha Beta","selected":false,"value":"AB"}],"selectedIndex":-1,"valid":false,"value":"","valueMissing":true}{"options":[{"label":"Choose","selected":false,"value":""},{"label":"Alpha Beta","selected":true,"value":"AB"}],"selectedIndex":1,"valid":true,"value":"AB","valueMissing":false} |
| Matching option direct string / keep / invisible true | "AB"U+0041 U+0042 | "AB"No selected invisible characters found | {"options":[{"label":"Choose","selected":false,"value":""},{"label":"Alpha Beta","selected":true,"value":"AB"}],"selectedIndex":1,"valid":true,"value":"AB","valueMissing":false}{"options":[{"label":"Choose","selected":false,"value":""},{"label":"Alpha Beta","selected":true,"value":"AB"}],"selectedIndex":1,"valid":true,"value":"AB","valueMissing":false} |
| Unknown option direct string / keep / invisible true | "CD"U+0043 U+0044 | "CD"No selected invisible characters found | {"options":[{"label":"Choose","selected":false,"value":""},{"label":"Alpha Beta","selected":false,"value":"AB"}],"selectedIndex":-1,"valid":false,"value":"","valueMissing":true}{"options":[{"label":"Choose","selected":false,"value":""},{"label":"Alpha Beta","selected":false,"value":"AB"}],"selectedIndex":-1,"valid":false,"value":"","valueMissing":true} |
| Empty choice direct string / keep / invisible true | "" | ""No selected invisible characters found | {"options":[{"label":"Choose","selected":true,"value":""},{"label":"Alpha Beta","selected":false,"value":"AB"}],"selectedIndex":0,"valid":false,"value":"","valueMissing":true}{"options":[{"label":"Choose","selected":true,"value":""},{"label":"Alpha Beta","selected":false,"value":"AB"}],"selectedIndex":0,"valid":false,"value":"","valueMissing":true} |
The source must match a stored option value
The observer builds a select with an empty placeholder option and an AB option whose visible label is Alpha Beta. Assigning the interrupted source results in value empty and selectedIndex negative one; neither option is selected. After the real homepage deletion, AB selects the second option, whose index is one. This evidence is stronger than noticing a similar label on screen because it records the option values, selected flags and the receiving control state together.
No selection differs from the placeholder
The unknown CD control also yields selectedIndex negative one. The empty-choice control instead selects the placeholder at index zero, although both cases expose an empty value and fail the required check. Saving only select.value would collapse those two distinct states. The plain AB control selects index one without cleanup. These controls show that missing selection can come from an ordinary unknown value as well as an inserted marker, so appearance alone is insufficient to diagnose the cause.
Labels do not rewrite identifiers
Alpha Beta is an authored display label, while AB is the option identifier used in this fixture. The cleaner returns strings and does not inspect a select, choose a label or invent an option. A destination may map human-readable labels to identifiers explicitly, but this experiment performs no such mapping. It uses one required, single-choice select with two options and no disabled group. Multiple selection, duplicate values, dynamic options and user navigation are not measured by these observations.
Record option inventory with a mismatch report
Keep the actual available values alongside the attempted assignment when diagnosing a real dropdown. Otherwise an outdated option list can look like a character problem. Our detached browser suite makes no form submission and saves its runtime identity. The Node rerun repeats the homepage callback against those recorded browser outcomes; use the browser download for a fresh native-control test. These local strings are not captured Claude output. Successful selection establishes only exact option matching in this fixture and gives no authorship or watermark guarantee.
Reproduce this test
For a fresh native-control measurement, save and open reproduce-browser.html in your browser. It embeds the exact fixture observer and saved homepage script, runs locally, and shows its user agent. For the Node cleanup rerun, save reproduce.cjs, tested-app.js and browser-observations.json 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
WHATWG HTML the-select-element 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.