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.
Large text: press Clean text or Inspect text to process it.
These can change meaning, so none are applied until you approve them.
Advanced options
Strict Clean
Formatting and safety
Punctuation (when Normalize punctuation is on)
Settings are remembered for this browser session only. Links, email addresses and code are never changed by punctuation or normalization.
What Clean changed
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.
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
- 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.
Secure checkout on SideRoad. You download both packages after purchase, and the files are yours to keep.
What it looks like
Setup
- 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/. - ChatGPT: create a custom GPT, paste the included instructions, turn on Code Interpreter,
and upload
clean.pyas 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 | Claude + ChatGPT package | |
|---|---|---|
| Where it runs | This page, in your browser | Inside Claude or ChatGPT, in their code sandbox |
| How you use it | Paste, inspect, clean, copy | Ask your assistant to clean or inspect text |
| Cleaning rules | textscrubr engine | Same engine and test suite |
| Price | Free | $29 once |
Using a different AI platform? Versions can be built for other assistants on request. Get in touch.