Paste text or drop files. See every hidden character. Scrub it clean. Everything runs in your browser — nothing is uploaded.
Text copied between apps picks up characters you can't see: zero-width spaces, non-breaking spaces, byte-order marks, soft hyphens, curly quotes, em-dashes, ligatures. They break code, config files, CSV imports, terminal commands, search-and-replace, and they make pasted AI or word-processor text easy to spot.
Before pasting into source code, YAML/JSON, a database, a CMS, a spreadsheet formula, a shell — or any time text "looks right" but behaves wrong. Also handy for normalizing quotes and dashes to plain ASCII house style.
U+200B is a zero-width space — an invisible character that often sneaks in when you copy code from web pages, chat apps, PDFs, or AI assistants. Compilers and interpreters see it as an unexpected token ("invalid character U+200B", "SyntaxError: invalid character"), even though the line looks fine. Paste the offending line above: the x-ray view marks every zero-width space, and one click removes them all.
They're probably non-breaking spaces (U+00A0) or one of a dozen other Unicode space characters, which look identical to a regular space but don't match one. Word processors and web pages insert them constantly. The "exotic spaces" rule converts them all to plain spaces.
Yes — drop any text file on the page (or use "Open file…"), up to 5 MB. TextWash detects the encoding (UTF-8, UTF-16 with BOM, or legacy Windows-1252), keeps a leading BOM visible so you can see it's there, and "Download" saves the cleaned version next to your original as name.clean.ext, preserving CRLF line endings if the file used them. The file never leaves your machine.
Yes — drop several files together (up to 50, 5 MB each) and you get a batch table showing exactly what's hiding in each one. Click any row to inspect that file in the x-ray, and "Download all clean (.zip)" applies your current cleaning rules to every file and saves a zip of name.clean.ext copies. CRLF line endings are preserved per file; UTF-16 files are saved back as UTF-8 (noted in the table). Everything still happens in your browser — no file is ever uploaded.
Yes — "Copy link" packs the current text into the URL after the # (compressed). Whoever opens the link sees the same x-ray immediately. URL fragments are never sent to any server — the text is decoded locally in the recipient's browser, so this stays 100% client-side. Links carry up to a few KB of text; for anything bigger, share the file instead.
No. The page is static and all analysis happens locally in your browser. There's no server-side processing, no analytics on your text, no signup.
Guides for the common cleanup jobs — what the source puts into your text, exactly what it breaks, and the tool preloaded with a demonstration:
AI-generated text · Text copied from Word / Google Docs · Text copied from a PDF · Pasted code that won’t run · CSV & spreadsheet data · Invisible watermarks · Many files at once (batch)
Dedicated pages for the usual suspects — what each one is, where it sneaks in from, the exact errors it causes, and how to find it in your editor:
Zero-width space (U+200B) · Non-breaking space (U+00A0) · Byte order mark (BOM) (U+FEFF) · Soft hyphen (U+00AD) · Smart quotes · Em dash (U+2014) · Narrow no-break space (U+202F) · Ideographic space (U+3000) · Zero-width joiner (U+200D) · Zero-width non-joiner (U+200C) · Word joiner (U+2060) · Right-to-left override (U+202E) · Left-to-right mark (U+200E) · Line separator (U+2028) · Variation selector-16 (U+FE0F) · Object replacement character (U+FFFC) · Hangul filler (U+3164) · Braille pattern blank (U+2800) · Ligatures · Minus sign (U+2212)
Страницы на русском — те же инструменты с переведёнными правилами и примерами под задачу:
Невидимые символы в тексте · Убрать невидимые символы · Почистить текст нейросети · Неразрывные пробелы в числах · Текст из Word · Код не запускается