Inspect invisible Unicode at original UTF-16 offsets, selectively clean copied text, and audit every local change.
Original coordinates & selective cleanup
Text cleaner & invisible character workspace
No uploads · No default body persistence
133 / 500,000 UTF-16
or drop a local file here (up to 1 MB)
133 UTF-16
Inspection never rewrites text; cleanup runs only when applied.
Selective cleanup rules
All off by default: inspection only. Counts reflect the last applied cleanup, not a preview of checked rules.
Markdown handles selected markers only, not full parsing; this is not a complete sensitive-data detector.
6 findings · 0 changes
Invisible characters in original input
Offsets are zero-based UTF-16 [start, end); lines and columns are one-based. Locate selects the original.
Kind / name
Codepoint
Original range
Line / column
Reason & location
BOM Zero width no-break space / byte order mark
U+FEFF
[0, 1)
1:1
Byte order mark / zero-width no-break space may be unexpected inside text.
Zero-width Zero width space
U+200B
[22, 23)
1:23
Invisible width or shaping character can alter copied text.
NBSP Unusual invisible character
U+00A0
[64, 65)
4:36
Non-breaking space looks like a space but has different semantics.
Zero-width Zero width joiner
U+200D
[116, 117)
7:29
Invisible width or shaping character can alter copied text.
Zero-width Zero width joiner
U+200D
[119, 120)
7:32
Invisible width or shaping character can alter copied text.
Zero-width Zero width joiner
U+200D
[122, 123)
7:35
Invisible width or shaping character can alter copied text.
Per-rule changes & original mapping
Rules run sequentially; every log retains original UTF-16 ranges, so cleaned offsets may differ.
No changes applied. Inspection-only defaults leave original and output identical.
Safe line-level before / after diff
Controls are escaped and content is rendered as plain text; capped at 300 lines.
# “Quarterly” summary
Copied from an AI response — review carefully.
```text
Preserve original offsets 👨👩👧👦 é
```
About this tool
Made for the task at hand.
Make suspicious formatting in AI, web, and PDF copies visible without sending the document anywhere. The inspector reports Unicode names, reasons, and original UTF-16 coordinates; conservative opt-in rules provide auditable cleanup, sequential original-range mapping, safe plain-text diffs, bounded undo, and downloadable reports.
How to use
Paste text or import a TXT/Markdown file up to 1 MB and 500,000 UTF-16 characters; inspection starts without changing it.
Select individual cleanup rules or independent NFC/NFKC normalization, review the code and normalization warnings, then apply cleanup.
Inspect paginated findings, per-rule counts, original-range changes, and the capped line diff before copying, undoing, or downloading text and a JSON report.
Your work stays yours. Tool inputs are processed locally in your browser and are never sent to KitVerse servers. Clear the workspace when using a shared device.
Common questionsDo inspector positions change after cleanup?
No. Findings and change logs always refer to the original input using zero-based UTF-16 [start, end) ranges and one-based line/column locations. Rules run sequentially, so cleaned offsets may differ; each later change is mapped back to its original range.
Does this fully parse Markdown or detect all sensitive data?
No. Markdown cleanup removes a documented set of markers and fence lines only; it is not a full parser. The inspector targets supported invisible and control characters, not comprehensive sensitive-data detection.
Why are normalization and code-related rules opt in?
NFC and especially NFKC can alter compatibility characters and offsets. Whitespace, blank-line, and Markdown rules can break code indentation or strings, so code-like input requires explicit confirmation when those rules are selected.
What are the processing and privacy limits?
Everything runs locally with no body persistence. Input is capped at 500,000 UTF-16 characters, long processing uses a Worker, findings and change logs are capped at 10,000 and 5,000 entries, pagination renders 40 at a time, and visual diffs are capped or skipped for long text.