Zerowidth CleanerAll measured guides

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.

Tested October 25, 2026 · v24.22.1 · 4 measured runs

Open the Claude text cleaner · Full measured data

Code-point comparison for Marked option

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.

Before and after observations; full code points and strings are in the JSON download.
Fixture and modeInput string and code pointsOutput and cleaner statusObserved before / after
Marked option
direct string / keep / invisible true
"A​B"
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.cjs

Reference 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.