Zerowidth CleanerMeasured guides

CLAUDE WATERMARK REMOVER · MARKDOWN TEST

Why did a Markdown reference link start resolving after cleanup?

Deleting U+200B makes the reference label match its definition; the link destination itself is unchanged.

Tested 9 November 2026 · Synthetic fixture · CommonMark.js 0.31.2

What changed in the preview

The reference in the sentence contains a hidden character between rev and iew, but the definition at the bottom uses the plain label review. The first render leaves the reference as literal brackets. The cleaned render emits an anchor to the existing example.com destination. No new URL was created by the cleaner. After cleaning link-heavy drafts, review where the rendered anchor points as well as whether it appears. A reference that starts matching may become clickable for the first time in your preview.

What this test covers

The parser only rendered a synthetic HTTPS link and never requested the URL. Inline links, duplicate definitions and destination rewriting are outside this test.

Measured HTML

The first preview contains a literal U+200B, displayed below as \u200B. The HTML is shown as text.

Before cleanup

<p>Read [notes][rev\u200Biew].</p>

After cleanup

<p>Read <a href="https://example.com/notes">notes</a>.</p>

Reproduce locally

Save reproduce.cjs and tested-app.js together. Run npm install --no-save commonmark@0.31.2, then node reproduce.cjs. Compare with the recorded input, output and HTML. The test uses the homepage callback with a minimal DOM. It does not use Claude output or test statistical watermark detection.

See the CommonMark specification and another measured Markdown case.