Zerowidth CleanerAll measured guides

CLAUDE WATERMARK REMOVER · PRACTICAL TEST

Can valid JSON containing 1e400 parse into Infinity?

Yes in our recorded runtime. JSON.parse accepts 1e400 and returns a number labelled Infinity; Number.isFinite is false. Cleanup repairs the marked exponent’s syntax but does not constrain its magnitude. A quoted exponent remains a string.

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

Open the Claude text cleaner · Full measured data

Code-point comparison for Marked large exponent

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 large exponent
direct string / keep / invisible true
"1e4​00"
U+0031 U+0065 U+0034 U+200B U+0030 U+0030
"1e400"
Removed 1 invisible character
{"accepted":false,"errorName":"SyntaxError"}
{"accepted":true,"type":"number","valueLabel":"Infinity","finiteNumber":false}
Overflow reference
direct string / keep / invisible true
"1e400"
U+0031 U+0065 U+0034 U+0030 U+0030
"1e400"
No selected invisible characters found
{"accepted":true,"type":"number","valueLabel":"Infinity","finiteNumber":false}
{"accepted":true,"type":"number","valueLabel":"Infinity","finiteNumber":false}
Finite exponent
direct string / keep / invisible true
"1e3"
U+0031 U+0065 U+0033
"1e3"
No selected invisible characters found
{"accepted":true,"type":"number","valueLabel":"1000","finiteNumber":true}
{"accepted":true,"type":"number","valueLabel":"1000","finiteNumber":true}
Quoted exponent
direct string / keep / invisible true
"\"1e400\""
U+0022 U+0031 U+0065 U+0034 U+0030 U+0030 U+0022
"\"1e400\""
No selected invisible characters found
{"accepted":true,"type":"string","valueLabel":"1e400","finiteNumber":false}
{"accepted":true,"type":"string","valueLabel":"1e400","finiteNumber":false}

Syntax recovery does not establish a finite magnitude

The marked source places U+200B between the digits of the exponent in 1e400. Before cleanup JSON.parse throws SyntaxError. After the selected deletion it accepts the numeric document and produces Infinity. The unmarked overflow control reaches the same result without any cleaning. By contrast, 1e3 is accepted as the finite number one thousand. We record acceptance, JavaScript type, a textual value label and a finite-number predicate separately. Storing the intermediate value only as a JSON number in the experiment record would obscure the nonfinite result, so the label is intentional. These rows show that a parser accepting the repaired text and an application accepting its resulting numeric value are separate decisions.

Quoted numeric text belongs to a different branch

The quoted exponent fixture is a JSON string containing the characters 1e400. It parses successfully, but its type is string and the finite-number predicate is false because our predicate first requires a numeric type. That false value does not mean the quoted document overflowed; no numeric conversion is applied to it. This control prevents the same printed label from being used as evidence of identical runtime types. Earlier guides cover number-token grammar and nonfinite JSON export. This matrix starts with a JSON source document and checks the value produced by parsing it. It tests neither arbitrary precision arithmetic nor an application schema, and it makes no promise about preserving every decimal digit.

Validate the parsed type and range explicitly

If the destination requires a finite number, check both its type and finiteness after parsing and before using it in calculations. Apply any smaller application range separately. Decide deliberately whether a quoted numeric field should remain text or enter a documented conversion path. The cleaner cannot infer that policy from the appearance of the exponent, and a removal count describes only the selected character deletion. Preserve the unmodified document when investigating a rejected or overflowing field. Our four synthetic controls provide a repeatable boundary test with a successful finite case, a successful overflowing case, a syntax failure that becomes overflow, and a successful string parse. None represents an actual Claude response or a measured watermark signal.

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

ECMAScript JSON.parse 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.