CLAUDE WATERMARK REMOVER · MARKDOWN TEST
Why can identical Markdown link labels open different paths?
The visible label can stay identical while the href changes. In this fixture the path loses the encoded form of U+200B.
What changed in the preview
Before cleanup both the original and cleaned Markdown are valid inline links labeled notes. CommonMark serializes the hidden point inside the first path as %E2%80%8B, the percent-encoded UTF-8 bytes. In the second render the href ends in /review. If a copied link appears right but opens the wrong page, inspect the exact destination including its percent escapes. Preserve the original if you do not know whether the hidden character belongs in the destination.
What this test covers
The fixture contains a literal Unicode point, and no request is sent to either path. A string already containing the visible characters %E2%80%8B is a different input and the character cleaner does not URL-decode it.
Measured source and preview
Original Markdown
Read [notes](https://example.com/re\u200Bview).
Cleaned Markdown
Read [notes](https://example.com/review).
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 <a href="https://example.com/re%E2%80%8Bview">notes</a>.</p>
After cleanup
<p>Read <a href="https://example.com/review">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.