textscrubr
Runs in your browser · your text is never uploaded

Remove hidden characters.
Keep your text intact.

Paste anything. textscrubr shows every invisible character, removes the ones with no job, and keeps what carries meaning: formatting, other languages, emoji, links and code.

Off by default. Replaces or removes em dashes and straightens curly quotes. That can change meaning, so dash edits wait for your approval.
Your text
0 chars
0 chars
Advanced options

Strict Clean

Remove invisible characters with no job in your text. Meaningful ones (Persian and Indic joiners, emoji parts, right-to-left marks) are always kept.
Turn non-breaking and other unusual spaces into normal spaces. Full-width spaces in CJK text are kept.
Collapse runs of spaces and drop trailing spaces.
Remove empty paragraphs and runs of blank lines.

Formatting and safety

Keep bullets, headings, bold and code. Turn off to get plain text.
Off by default. These controls can legitimately set text direction, so they are flagged for review instead of removed.

Punctuation (when Normalize punctuation is on)

Number ranges such as 10–20 become 10-20. Other dash edits wait for approval when they use comma or remove.
“ ” ‘ ’ become straight quotes. Guillemets « » are kept.
The single … character becomes three dots.

Settings are remembered for this browser session only. Links, email addresses and code are never changed by punctuation or normalization.

What Clean changed

How it works

It removes what has no job in your text, and keeps what does.

Most cleaners strip every invisible character they recognize. Some of those characters matter: they join letters in Persian and Hindi, hold emoji together, and set direction in Arabic and Hebrew. textscrubr checks the context of each one before touching it, and shows you what it did.

Shows you what is hidden

Inspect lists every invisible character with its code point, Unicode name, position, and the reason it would be removed or kept. Nothing changes until you choose Clean.

Keeps what carries meaning

Formatting, other languages, emoji like 👨‍👩‍👧, URLs, email addresses and code are preserved. Bidirectional controls, the trick behind Trojan Source attacks, are flagged for review, never silently removed.

Never leaves your browser

All processing happens in this tab. Your text is not sent to a server, logged, or stored. The site uses Google Analytics for anonymous page statistics; it never receives what you paste.

What a text cleaner can and cannot do

Invisible characters
Removed or kept by the rules above. They usually come from copying between apps and are not, on their own, evidence that AI wrote the text.
Statistical AI watermarks
Some AI providers mark text through patterns in word choice. There are no characters to remove, so no cleaner removes them, this one included. How text watermarks work
AI detector scores
Estimates from a classifier, not proof of authorship. textscrubr does not try to change them. Why detectors are unreliable
File metadata and provider records
Author fields and timestamps live in files, not in pasted text, and AI providers may keep their own records. A text cleaner touches neither.
Claude + ChatGPT

The same cleaner, inside your AI assistant.

The browser tool is free and stays free. If you clean text inside Claude or ChatGPT often, the paid package installs this same engine there, so you can ask for clean text without copying it out to a website and back.

textscrubr for Claude + ChatGPT

$29One purchase. Both integrations.
  • Claude skill. SKILL.md plus the clean.py engine. Claude runs it in its code sandbox, and it also works in Claude Code.
  • ChatGPT kit. Custom GPT instructions, the same clean.py for Code Interpreter, and a step-by-step setup guide.
  • Same rules as this page. Inspection reports, Strict Clean, optional punctuation normalization, and the same protection for languages, emoji, links and code, checked against the same test suite.
Buy now · $29

Secure checkout on SideRoad. You download both packages after purchase, and the files are yours to keep.

What it looks like

YouClean this draft for my newsletter and tell me what was hidden.
AssistantRuns the bundled clean.py, then returns the cleaned text with a short report: which invisible characters were removed, which were kept on purpose, and anything that needs your review.

Setup

  1. Claude: turn on code execution (Settings, Capabilities), then Customize → Skills → + → Create skill → Upload a skill, and choose the zip. In Claude Code, unzip it into ~/.claude/skills/.
  2. ChatGPT: create a custom GPT, paste the included instructions, turn on Code Interpreter, and upload clean.py as a knowledge file.

Requirements

Claude: any plan with skills and code execution turned on (on Team and Enterprise an owner may need to allow it). ChatGPT: a plan that can create custom GPTs.

Free browser cleaner compared with the paid package
Free browser cleanerClaude + ChatGPT package
Where it runsThis page, in your browserInside Claude or ChatGPT, in their code sandbox
How you use itPaste, inspect, clean, copyAsk your assistant to clean or inspect text
Cleaning rulestextscrubr engineSame engine and test suite
PriceFree$29 once

Using a different AI platform? Versions can be built for other assistants on request. Get in touch.