CLAUDE WATERMARK REMOVER · PRACTICAL TEST
Why does a cleaned minus one display as yesterday?
With English day units, our cleaned -1 formats as yesterday under numeric auto and 1 day ago under numeric always. Zero becomes today only under auto. These words are generated by the formatter after cleanup, not removed or inserted by the cleaner.
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 minus one direct string / keep / invisible true | "-1"U+002D U+200B U+0031 | "-1"Removed 1 invisible character | {"numberLabel":"NaN","errorName":"RangeError"}{"numberLabel":"-1","always":"1 day ago","auto":"yesterday"} |
| Plain minus one direct string / keep / invisible true | "-1"U+002D U+0031 | "-1"No selected invisible characters found | {"numberLabel":"-1","always":"1 day ago","auto":"yesterday"}{"numberLabel":"-1","always":"1 day ago","auto":"yesterday"} |
| Zero control direct string / keep / invisible true | "0"U+0030 | "0"No selected invisible characters found | {"numberLabel":"0","always":"in 0 days","auto":"today"}{"numberLabel":"0","always":"in 0 days","auto":"today"} |
| Two control direct string / keep / invisible true | "2"U+0032 | "2"No selected invisible characters found | {"numberLabel":"2","always":"in 2 days","auto":"in 2 days"}{"numberLabel":"2","always":"in 2 days","auto":"in 2 days"} |
Two formatter options render the same accepted value differently
The marked minus one fails numeric conversion before deletion, and the observer records RangeError from formatting that NaN. Once the selected character is removed, both formatters accept minus one. The always option returns 1 day ago, while auto returns yesterday. The plain minus-one reference repeats that difference without cleanup. For zero, the outputs are in 0 days and today. For two, both return in 2 days. These paired controls locate the word substitution in the formatter option rather than the cleaner. The output strings and numeric label are recorded together, so a changed word is not mistaken for a changed numeric value or a measured shift in time.
A relative label does not identify a calendar instant
The observer fixes English, day units and the numeric option. It does not read the current clock, subtract timestamps, compute a timezone boundary or derive a date from the words yesterday and today. The earlier epoch guide interprets numeric timestamp units; this page only formats a supplied relative quantity. The plural-category guide classifies a number without producing these relative-time phrases. Our recorded English outputs depend on the runtime’s locale data, whose ICU and Unicode versions accompany the experiment. We do not generalize the exact wording to every language, unit or future runtime. The pre-cleanup RangeError records one failed formatting attempt rather than a complete validation policy for date input.
Keep the quantity and presentation choice available
Store or retain the actual relative value and its declared unit when an interface needs to explain or update a label. A human-readable word is a presentation result, not a parseable timestamp contract. Choose numeric always if that is the desired product wording, or numeric auto when its contextual labels are intended, then verify the actual locale output. Neither option proves an event happened on a particular calendar day. The two-day control demonstrates that auto does not replace every numeric phrase with a special word. Our downloaded harness constructs four invented inputs and performs no scheduling operation. It can help distinguish character cleanup from a later display choice without implying that generated words are watermark evidence.
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
ECMA-402 Intl.RelativeTimeFormat 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.