CLAUDE WATERMARK REMOVER · DESTINATION TEST
Does JSON.parse ignore a BOM already present in a string?
In the measured runtime it throws SyntaxError; passing the same string through the cleaner first makes parsing succeed.
What the test establishes
This experiment starts with a JavaScript string, so no byte decoder has an opportunity to consume its initial BOM. Direct parsing fails. The actual homepage callback removes that character, leaving an ordinary object document that parses successfully. Inspect the exact string entering a parser instead of assuming a prior file decoder already consumed the signature.
Reproduce the observation
Save tested-app.js and reproduce.cjs together, then run node reproduce.cjs. Compare its output with the recorded observation. The harness executes the actual homepage callback in a minimal DOM and records its resulting field values and method calls. Destination operations run in Node.js; the homepage DOM is a controlled substitute. Runtime: v24.22.1. No submitted text or genuine Claude output is used.
{
"rawError": "SyntaxError",
"cleaned": "{\"a\":1}",
"parsed": {
"a": 1
}
}Capability boundary
This does not retest File.text or TextDecoder BOM behavior. It measures a parser receiving an existing string, not an encoded file, and does not validate arbitrary JSON schemas.
This Claude watermark remover edits a small selected character set. These callback observations do not establish authorship, detector scores, statistical-watermark removal or end-to-end browser behavior. For real work, keep the original and compare the exact result at its destination.
Primary material and next step
The tested first-party source snapshot and complete harness are the primary material for this page. For broader scope, read invisible Unicode versus AI watermarks, or return to the cleaner.