Zerowidth CleanerMeasured guides

CLAUDE WATERMARK REMOVER · DESTINATION TEST

Will Array.from keep my cleaned string as one export row?

No. It produces A, an emoji and B as three elements; wrapping keeps one row.

Tested 4 November 2026 · Synthetic fixtures · Minimal DOM

What the test establishes

The callback returns a single string containing two letters and an emoji. Passing that string directly to Array.from consumes its iterable values and creates three destination elements. An explicit array wrapper instead represents one text record. This is a schema choice for exports that accept an array of rows: passing the field directly changes its meaning from one row to a sequence of symbols. The recorded emoji remains intact in this fixture, but that does not establish grapheme segmentation for complex emoji sequences or combining marks.

Reproduce the observation

Save tested-app.js and reproduce.cjs together, then run node reproduce.cjs. Compare its output with the recorded observation. The harness executes the actual homepage callback in a minimal DOM and records its resulting field values and method calls. Destination operations run in Node.js; the homepage DOM is a controlled substitute. Runtime: v24.22.1. No submitted text or genuine Claude output is used.

{
  "from": [
    "A",
    "😀",
    "B"
  ],
  "wrapped": [
    "A😀B"
  ]
}

Capability boundary

One single-code-point emoji is tested. Grapheme clusters and line parsing are not measured.

This Claude watermark remover edits a small selected character set. These callback observations do not establish authorship, detector scores, statistical-watermark removal or end-to-end browser behavior. For real work, keep the original and compare the exact result at its destination.

Primary material and next step

The tested first-party source snapshot and complete harness are the primary material for this page. For broader scope, read invisible Unicode versus AI watermarks, or return to the cleaner.