Zerowidth CleanerMeasured guides

CLAUDE WATERMARK REMOVER · MARKDOWN TEST

Can U+200B stop a Markdown CDATA block from ending?

Removing U+200B from the CDATA closing sequence let the subsequent paragraph render.

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

What changed in the preview

The parser recognizes the CDATA block from its opening sequence and waits for the exact closing sequence. The safe HTML renderer omits the block. A blank line did not rescue the following paragraph before cleanup; inspect the closing brackets and angle bracket in the source.

What this test covers

This Markdown preview does not test XML parsing or tell whether a publishing system accepts CDATA. Compare the two rendered outputs below with the original and cleaned source.

Measured source and preview

Original Markdown

<![CDATA[note]]\u200B>

Next section

Cleaned Markdown

<![CDATA[note]]>

Next section

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

Before cleanup

<!-- raw HTML omitted -->

After cleanup

<!-- raw HTML omitted -->
<p>Next section</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.