Zerowidth CleanerMeasured guides

CLAUDE WATERMARK REMOVER · MARKDOWN TEST

Why did a link with a quoted title render as plain text?

Removing U+200B immediately before the opening quote lets CommonMark recognize the optional title and create the link.

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

What changed in the preview

The original Markdown uses an ordinary space after the URL, then U+200B, then a quoted title. The first render leaves the brackets and destination syntax as paragraph text. After one deletion, the generated anchor points to the existing URL and has a title attribute of Release notes. The label remains the release. When a titled link refuses to render, first compare it with a title-free link, then inspect the characters at the boundary between the destination and quote.

What this test covers

This fixture uses a quoted inline title. Reference definitions, title tooltip behavior and links that are altered by the destination editor were outside the test.

Measured source and preview

Original Markdown

Read [the release](https://example.com/release \u200B"Release notes").

Cleaned Markdown

Read [the release](https://example.com/release "Release notes").

The original source and its preview contain a literal U+200B, displayed below as \u200B. The HTML is shown as text.

Before cleanup

<p>Read [the release](https://example.com/release \u200B&quot;Release notes&quot;).</p>

After cleanup

<p>Read <a href="https://example.com/release" title="Release notes">the release</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.