Zerowidth CleanerAll measured guides

CLAUDE WATERMARK REMOVER · PRACTICAL TEST

Why does item10 sort before item2 after cleaning?

In our English collator, ordinary lexical comparison places item2 after item10; numeric comparison places it before. Marker removal does not change either decision. Select sorting options according to the intended label order.

Tested October 12, 2026 · v24.19.0 · 4 measured runs

Open the Claude text cleaner · Full measured data

Code-point comparison for Marked item number

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.

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 item number
direct string / keep / invisible true
"item​2"
U+0069 U+0074 U+0065 U+006D U+200B U+0032
"item2"
Removed 1 invisible character
{"peer":"item10","lexical":1,"numeric":-1,"exactPeer":false}
{"peer":"item10","lexical":1,"numeric":-1,"exactPeer":false}
Ordinary two
direct string / keep / invisible true
"item2"
U+0069 U+0074 U+0065 U+006D U+0032
"item2"
No selected invisible characters found
{"peer":"item10","lexical":1,"numeric":-1,"exactPeer":false}
{"peer":"item10","lexical":1,"numeric":-1,"exactPeer":false}
Ordinary ten
direct string / keep / invisible true
"item10"
U+0069 U+0074 U+0065 U+006D U+0031 U+0030
"item10"
No selected invisible characters found
{"peer":"item10","lexical":0,"numeric":0,"exactPeer":true}
{"peer":"item10","lexical":0,"numeric":0,"exactPeer":true}
Leading zero
direct string / keep / invisible true
"item02"
U+0069 U+0074 U+0065 U+006D U+0030 U+0032
"item02"
No selected invisible characters found
{"peer":"item10","lexical":-1,"numeric":-1,"exactPeer":false}
{"peer":"item10","lexical":-1,"numeric":-1,"exactPeer":false}

An unchanged string can still have two sorting decisions

The observer compares each supplied label with the fixed peer item10. Both marked and plain item2 receive a positive lexical sign and a negative numeric sign. The marker deletion changes the exact string but neither sign. The ordinary ten control compares equal to the peer in both modes and is exactly equal as text. The leading-zero item02 sorts before the peer under both options in this runtime. We store only comparison signs rather than requiring a specific positive or negative magnitude. The table therefore exposes the order decision without treating a collator’s return value as a meaningful distance between labels.

Numeric collation is not parsing a whole field as a number

Both observers use Intl.Collator with English selected explicitly; the numeric option differs while the tested pair stays fixed. The labels contain the word item, so Number conversion is not part of this experiment. Our prior locale-collation guide examines visually similar spellings and exact equality; today’s issue is embedded digit ordering and the requested comparator policy. We do not measure filesystem directory order, a database collation, signed decimals or all locales. The cleaner edits selected characters and does not choose a sorting option. Runtime and ICU metadata belong with a rerun because the destination’s locale implementation is part of the experiment.

Record the intended order along with cleaned labels

When a numbered list appears out of order, compare a known pair under the actual comparator before deleting additional characters. Decide whether the destination expects lexical labels or number-aware ordering, and retain exact string equality as a separate condition when identity matters. A removed marker is not evidence that the comparator policy has changed. Our four controls demonstrate a concrete option difference and two unchanged reference cases. They do not guarantee every numerical spelling has the desired business order, validate a record identifier or provide locale-independent sorting rules. Keep the original labels and verify the final sorted output in the destination that consumes them.

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

Reference and next check

ECMA-402 Intl.Collator 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.