This page cleans text copied out of PDFs: ligatures are unfolded into plain letters and invisible soft hyphens are removed. The sample below came out of a typeset PDF — Ctrl+F can’t find "final" in it. Everything runs in your browser — nothing is uploaded.
A PDF stores the exact glyphs the typesetter placed, not the plain text behind them. When you copy from one, you get those glyphs back: ligatures like fi (U+FB01) instead of the letters f+i, invisible soft hyphens where words were broken across lines, and sometimes hard line breaks mid-sentence or exotic spaces from the justification engine. The pasted text looks right and behaves wrong.
Search is the big one: "finance" never matches "finance" — not in Ctrl+F, not in grep, not in a database query. Résumé/ATS keyword matching famously fails on PDF CVs full of "certified" and "office". Soft hyphens split words invisibly, so "documentation" won't match either. Quotes copied from typeset PDFs arrive curly and break code, and page numbers or footnotes ride along as stray fragments.
Paste the text above. The "Unfold ligatures & fullwidth chars" rule (NFKC normalization) expands every ligature to plain letters, the invisible-characters rule strips soft hyphens, and the quotes/dashes rules normalize the punctuation. The x-ray shows each fix. In your own pipeline, unicodedata.normalize("NFKC", text) (Python) or text.normalize("NFKC") (JavaScript) handles the ligature half — soft hyphens you must strip separately (\u00ad).
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 · Код не запускается