Zerowidth CleanerMeasured guides

CLAUDE WATERMARK REMOVER · DESTINATION TEST

Does spreading cleaned text into an object follow its code points?

No. The measured object spread exposes two surrogate-unit properties for the emoji; array spread produces one emoji entry.

Tested 30 October 2026 · Synthetic fixtures · Minimal DOM

What the test establishes

The same string feeds two destination constructions. Array spread follows the string iterator, while object spread copies indexed properties. For an astral symbol those routes produce different data shapes even though both start from the intact cleaned value. Define whether a record needs indexed UTF-16 units or iterable code points before using spread syntax as a conversion shortcut.

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.

{
  "cleaned": "😀",
  "object": {
    "0": "\ud83d",
    "1": "\ude00"
  },
  "array": [
    "😀"
  ]
}

Capability boundary

This tests construction rather than Object.entries enumeration. Array iteration still does not guarantee one entry per grapheme cluster or visible glyph.

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.