CLAUDE WATERMARK REMOVER · MARKDOWN TEST
Why did a line of equals signs turn the previous line into a heading?
CommonMark treats a line of equals signs immediately below text as a level-one heading underline. Deleting U+200B can restore that syntax.
What changed in the preview
The fixture puts a zero width space between the second and third equals signs underneath Release summary. The original render puts both lines in one paragraph. After cleanup, the parser emits one h1 and the equals signs no longer appear as text. Both source lines still exist in the cleaned Markdown. When a separator suddenly changes the document outline, look at the line directly above it. A literal row of equals signs can go in a fenced example so it stays visible.
What this test covers
This measures the equals-sign form of a Setext heading. It does not cover dash underlines or predict how your editor assigns heading IDs.
Measured source and preview
Original Markdown
Release summary ==\u200B=
Cleaned Markdown
Release summary ===
The original source and its preview contain a literal U+200B, displayed below as \u200B. The HTML is shown as text.
Before cleanup
<p>Release summary ==\u200B=</p>
After cleanup
<h1>Release summary</h1>
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.