Zerowidth CleanerAll measured guides

CLAUDE WATERMARK REMOVER · PRACTICAL TEST

Can direction controls remain after a no-findings result?

Yes. The homepage does not remove the tested direction controls. Its no-findings message means no selected deletion character was found, rather than no invisible character exists in the text.

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

Open the Claude text cleaner · Full measured data

Code-point comparison for Right-to-left mark

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. Invisible removal is enabled; the dash mode appears in each row. The observations below test this page's specific question. 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
Right-to-left mark
direct string / keep
"A‏B"
U+0041 U+200F U+0042
"A‏B"
No selected invisible characters found
{"directionControls":["U+200F"],"hasZeroWidthSpace":false}
{"directionControls":["U+200F"],"hasZeroWidthSpace":false}
Override with terminator
direct string / keep
"A‮BC‬"
U+0041 U+202E U+0042 U+0043 U+202C
"A‮BC‬"
No selected invisible characters found
{"directionControls":["U+202E","U+202C"],"hasZeroWidthSpace":false}
{"directionControls":["U+202E","U+202C"],"hasZeroWidthSpace":false}
Right-to-left isolate
direct string / keep
"A⁧BC⁩"
U+0041 U+2067 U+0042 U+0043 U+2069
"A⁧BC⁩"
No selected invisible characters found
{"directionControls":["U+2067","U+2069"],"hasZeroWidthSpace":false}
{"directionControls":["U+2067","U+2069"],"hasZeroWidthSpace":false}
Direction mark and unwanted space
direct string / keep
"A‏​B"
U+0041 U+200F U+200B U+0042
"A‏B"
Removed 1 invisible character
{"directionControls":["U+200F"],"hasZeroWidthSpace":true}
{"directionControls":["U+200F"],"hasZeroWidthSpace":false}

What the no-findings message actually measured

The first three fixtures retain their complete strings and receive the same no-selected-character status. They contain U+200F, U+202E with U+202C, and U+2067 with U+2069 respectively. These controls are not in the five-character removal map. The fourth fixture contains both U+200F and U+200B; the cleaner deletes the latter, reports one removal, and leaves the direction mark. The data file records the status and remaining controls together so that a removal count cannot be mistaken for a complete inspection.

Stored order and display order are different

Unicode Annex #9 explains bidirectional display and the roles of directional marks, overrides and isolates. Our table prints escaped strings and code points in stored order, deliberately avoiding a display that could conceal the tested control. We have not rendered these fixtures in Arabic or Hebrew, inspected a malicious file, or measured accessibility behavior. Controls can be meaningful in mixed-direction text. Their presence alone neither identifies AI output nor justifies deleting them from a document.

Investigate the exact symptom

For an unexpected visual order, use the full Unicode inspector, compare stored code points, and identify the surrounding language and application. Preserve an original before editing a control, then check the display in the destination application. For source code or a filename that seems misleading, inspect the complete string rather than relying on its rendered appearance. The homepage performs no bidirectional-security audit and emits no warning for the retained controls in these fixtures. Its removal action has a precise limited scope. Do not interpret that status as a certificate that text is safe or free of all formatting controls.

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

Unicode bidirectional algorithm 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.