Text Cleaner

Clean up pasted text: fix smart quotes, extra spaces, blank lines, invisible characters, HTML tags, emoji and line endings.

Runs in your browser

Input text

Cleaning options

Whitespace

Indentation at line start is kept.

Characters

“ ” ‘ ’ → " '

– → -, — → --, … → ...

Zero-width space/non-joiner, BOM, soft hyphen, direction marks, control characters.

Breaks combined emoji such as 👩‍💻 into parts.

©, ® and ™ are kept.

Accents and typographic symbols are converted first: é → e, “ → ".

Combines letters + accent marks into single characters.

<p>, <br> and block tags become line breaks.

Cleaned text

Cleaned text appears here as you type.

What changed

A summary of every fix appears here.

Why pasted text needs cleaning

Text copied from Word, Google Docs, PDFs, emails and web pages carries hidden baggage: curly "smart" quotes, non-breaking spaces, double spaces, tabs, runs of empty lines and invisible zero-width characters. In a CMS these cause odd line wrapping, broken shortcodes, failed searches ("hello" does not match "hel​lo") and validation errors in fields that expect plain text.

The Text Cleaner fixes all of these in one pass. Pick a preset or tick exactly the operations you want: trim lines, collapse spaces, convert tabs, remove or collapse empty lines, join everything into one line, straighten quotes, normalize dashes, strip zero-width characters, strip HTML tags, remove emoji or reduce the text to plain ASCII. Operations run in a fixed, safe order — for example HTML is stripped before whitespace is tidied — so the result is predictable.

A summary lists every fix with a count, so you can see what was wrong with the original. Everything happens in your browser; nothing you paste is uploaded.

How to use the Text Cleaner

  1. Paste your text into the input box, or click Sample to see a deliberately messy example.
  2. Choose a preset: Paste from Word/Google Docs for everyday clean-up, Plain ASCII for systems that reject special characters, or Single line to turn a paragraph or list into one line.
  3. Adjust individual options — they apply instantly and are remembered for your next visit.
  4. Check What changed, then copy or download the cleaned text, or click Use as input to run another pass.

Example

Text pasted from a document (· marks a non-breaking space, ⟨ZWSP⟩ a zero-width space):

Before:  “Pricing”·–·from €25…   per seat⟨ZWSP⟩



After:   "Pricing" - from €25... per seat

Invisible characters explained

  • Zero-width space (U+200B) — an invisible break opportunity, often pasted from web pages and chat apps. It silently breaks searches, URLs and code.
  • Zero-width non-joiner (U+200C) and joiner (U+200D) — control how letters join. ZWJ is also what glues emoji like 👩‍💻 together, so it has its own option.
  • Byte order mark (U+FEFF) — a leftover from file encoding that can appear at the start of text and break PHP files and CSV headers.
  • Soft hyphen (U+00AD) — an invisible hyphenation hint that appears as a stray hyphen in some places.
  • Non-breaking space (U+00A0) — looks like a space but is a different character, so it is not matched by a normal space in searches.

Tips for WordPress users

  • Paste into the block editor with Ctrl+Shift+V (paste as plain text) after cleaning to avoid inline styles.
  • Straight quotes are required inside shortcodes and HTML attributes: [gallery ids="1,2"] fails with curly quotes.
  • To clean a list, remove duplicates next with the Duplicate Line Remover and order it with Sort Lines.

Frequently Asked Questions

In what order are the operations applied?

HTML stripping and entity decoding first, then Unicode normalization, invisible characters, emoji, special spaces, quotes, dashes and non-ASCII conversion, then tabs, line joining, trimming, space collapsing, empty-line handling and finally line endings.

Will removing emoji leave strange symbols behind?

No. Whole emoji sequences are removed, including skin tones, flags, keycaps and ZWJ combinations, and leftover variation selectors are cleaned up. The ©, ® and ™ symbols are kept because they are ordinary text symbols.

What does "Remove non-ASCII" do with accented letters?

It converts them first — é becomes e, ß becomes ss, “ becomes " and € becomes EUR — and removes only characters with no reasonable ASCII equivalent, such as Chinese characters or emoji.

Is stripping HTML here safe for untrusted input?

The output is plain text and is never rendered as HTML, so nothing in it can run. For converting entities only, use the HTML Entity Decoder; for escaping text for use in HTML, use the HTML Entity Encoder.

Should I use LF or CRLF line endings?

LF is the standard on Linux, macOS, Git and web servers. Choose CRLF only for Windows tools that require it, such as some older CSV importers or batch files.