Zerowidth CleanerAll measured guides

CLAUDE WATERMARK REMOVER · PRACTICAL TEST

Will hidden-character cleanup preserve a file checksum?

No. Deleting one invisible code point changes the UTF-8 bytes and therefore the checksum of these fixtures. Preserve the original whenever you need a signature, reproducible fixture or exact evidence copy.

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

Open the Claude text cleaner · Full measured data

Code-point comparison for Unchanged reference

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. Invisible removal is enabled; the dash mode appears in each row. The observations below test this page's specific question. 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
Unchanged reference
direct string / keep
"Invoice 1042\n"
U+0049 U+006E U+0076 U+006F U+0069 U+0063 U+0065 U+0020 U+0031 U+0030 U+0034 U+0032 U+000A
"Invoice 1042\n"
No selected invisible characters found
{"utf8Bytes":13,"sha256":"3ea56962d95bd697e58e53b4b44d2bd7a69aaed1769eec176b1eb685d3e4d5fb"}
{"utf8Bytes":13,"sha256":"3ea56962d95bd697e58e53b4b44d2bd7a69aaed1769eec176b1eb685d3e4d5fb"}
Hidden word joiner
direct string / keep
"Invoice⁠ 1042\n"
U+0049 U+006E U+0076 U+006F U+0069 U+0063 U+0065 U+2060 U+0020 U+0031 U+0030 U+0034 U+0032 U+000A
"Invoice 1042\n"
Removed 1 invisible character
{"utf8Bytes":16,"sha256":"e6fda7b4c3712523dca104bb21d8a8b55db1b79ae8cc8f5a2afbedf33bed8412"}
{"utf8Bytes":13,"sha256":"3ea56962d95bd697e58e53b4b44d2bd7a69aaed1769eec176b1eb685d3e4d5fb"}
Hidden soft hyphen
direct string / keep
"In­voice 1042\n"
U+0049 U+006E U+00AD U+0076 U+006F U+0069 U+0063 U+0065 U+0020 U+0031 U+0030 U+0034 U+0032 U+000A
"Invoice 1042\n"
Removed 1 invisible character
{"utf8Bytes":15,"sha256":"fb00ff1f6d39452d8e58408acbc570d6323d56f934c230ae1a6f5140b983e45b"}
{"utf8Bytes":13,"sha256":"3ea56962d95bd697e58e53b4b44d2bd7a69aaed1769eec176b1eb685d3e4d5fb"}

The bytes we actually measured

All fixtures are generated locally from explicit string literals; none is a downloaded invoice or Claude transcript. The unchanged reference contains 13 UTF-8 bytes. Adding U+2060 adds three bytes; adding U+00AD adds two. The cleaner deletes those characters and produces the same text as the reference in both modified fixtures. The result file includes full SHA-256 digests for the input and output, so readers can independently compare the bytes without relying on how their browser renders the strings.

A visible match is a weaker claim

The three source strings can look similar while their source digests differ. After cleanup the modified fixtures match the reference digest because the output bytes match that exact reference. This is expected for these inputs, not a promise that arbitrary cleaned files will share a checksum. A digest change confirms a byte change; it does not identify the source of that change, determine an author, or detect a statistical watermark. A matching digest is useful for checking an exact saved artifact, rather than certifying a passage as human written.

Keep an evidence copy before making a working copy

For signed messages, receipts, test corpora and records, retain the original bytes outside the cleaner. Record the encoding used to decode a working copy and calculate digests again after exporting it. Line-ending conversion, encoding changes and an added final newline can also affect integrity even when our character-removal pass leaves them alone. The experiment hashes the UTF-8 encoding of JavaScript strings and does not verify a digital signature or preserve a source file container. The WHATWG Encoding Standard describes decoding and encoding; the complete digests here are our own measured results.

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

WHATWG Encoding Standard 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.