Zerowidth CleanerAll measured guides

CLAUDE WATERMARK REMOVER · PRACTICAL TEST

Will deleting a hidden marker repair every invalid URL port?

No. Our :8 + U+200B + 080 fixture becomes port 8080, but :65536 remains invalid. An explicit HTTPS port 443 serializes as an empty port because it is the scheme default.

Tested October 9, 2026 · v24.19.0 · 4 measured runs

Open the Claude text cleaner · Full measured data

Code-point comparison for Marked port

Measured inputs and outputs

These are locally constructed test strings, not evidence that Claude inserts these characters. We executed the saved homepage script snapshot with a minimal DOM harness and compared exact strings. The invisible-checkbox state and dash mode appear in each row. The observations below test this page's specific question. Destination observations run independently on the exact input and cleaned strings in the recorded Node runtime. We make no detector-score or statistical-watermark removal claim.

Before and after observations; full code points and strings are in the JSON download.
Fixture and modeInput string and code pointsOutput and cleaner statusObserved before / after
Marked port
direct string / keep / invisible true
"https://example.com:8​080/x"
U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+00 …
"https://example.com:8080/x"
Removed 1 invisible character
{"accepted":false,"errorName":"TypeError"}
{"accepted":true,"port":"8080","host":"example.com:8080","href":"https://example.com:8080/x"}
Out of range
direct string / keep / invisible true
"https://example.com:65536/x"
U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+00 …
"https://example.com:65536/x"
No selected invisible characters found
{"accepted":false,"errorName":"TypeError"}
{"accepted":false,"errorName":"TypeError"}
Default HTTPS port
direct string / keep / invisible true
"https://example.com:443/x"
U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+00 …
"https://example.com:443/x"
No selected invisible characters found
{"accepted":true,"port":"","host":"example.com","href":"https://example.com/x"}
{"accepted":true,"port":"","host":"example.com","href":"https://example.com/x"}
Retained joiner
direct string / keep / invisible true
"https://example.com:8‍080/x"
U+0068 U+0074 U+0074 U+0070 U+0073 U+003A U+002F U+002F U+0065 U+0078 U+0061 U+006D U+0070 U+006C U+0065 U+002E U+0063 U+006F U+00 …
"https://example.com:8‍080/x"
No selected invisible characters found
{"accepted":false,"errorName":"TypeError"}
{"accepted":false,"errorName":"TypeError"}

A valid port has more than visible digits

The selected-marker row throws during URL construction before cleanup and yields a URL whose port property is 8080 afterward. Its digits were deliberately split at a known position. The out-of-range row fails at both stages even though it contains no selected invisible character. The default-443 reference succeeds and returns an empty port property, reflecting default-port serialization rather than a missing value. The retained-joiner row keeps failing. Each rejection records an error name and an explicit accepted flag, avoiding a misleading blank field that could look like the default-port result.

The parser is the measured destination

This matrix uses HTTPS URL strings in the saved Node runtime. WHATWG specifies the URL port processing rules, including the range and scheme defaults. We do not open a socket, scan ports, contact example.com or establish that a service is available. A parsed port is distinct from an operating system service or firewall rule. The previous numeric-conversion guide measures Number on isolated fields; it cannot describe this URL grammar or serialization. The homepage neither enforces a port range nor reports a URL-construction error. Its success message concerns only the selected deletion.

Validate structure and intended service separately

Keep the original link and confirm the expected port with the service documentation before editing it. Parse the edited link through the actual application and distinguish an omitted default port from a rejected string. Then verify the intended endpoint through the normal workflow if a connection is required. Do not remove arbitrary non-digits to force an unknown link into a usable shape. These fixtures establish one deletion repair, two unchanged failures and one default-port representation; they do not prove connectivity, trust or universal parsing behavior across older libraries and non-URL configuration formats.

Reproduce this test

Save reproduce.cjs and tested-app.js in the same folder. Run the command below with Node.js. The harness prints its runtime, script SHA-256 and every measured row. Compare those rows with the original record. Using a newer script or runtime creates a new experiment; retain the version information with your rerun.

node reproduce.cjs

Reference and next check

WHATWG URL Standard provides the relevant primary definition. The table and fixture analysis are original measurements. For broader inspection, use our Unicode inspector. Read the scope distinction before interpreting cleanup as a watermark result.