Cadmeo

Text Cleaner

Paste from Word, Google Docs, a PDF or a chat window. That is where these characters come from.

Cleaned
What changed
  • Curly double quotes straightened : 2
  • Zero-width and bidirectional characters removed : 1
  • Non-breaking and exotic spaces replaced : 1

Text copied out of Word, Google Docs, a PDF or a chat window carries characters that look ordinary and are not: curly quotes, em dashes, non-breaking spaces and zero-width marks. This finds them, replaces them with their plain equivalents, and tells you how many of each it changed.

How it works

Each option is a targeted substitution rather than a blanket strip, so the text keeps its content while losing the characters that break things downstream.

  • Curly quotes become straight ones. A curly apostrophe in a code string or a CSV field is a different character from the straight one and will not match.
  • Em and en dashes become hyphens, and the single-character ellipsis becomes three full stops.
  • Invisible characters (zero-width spaces, bidirectional marks, control characters) are removed entirely. These survive copy-paste unseen and then break string comparisons and URL slugs.
  • Non-breaking spaces and the exotic Unicode spaces become ordinary spaces. A non-breaking space is not matched by a normal space in a search.
  • Repeated punctuation can be collapsed, turning "really!!!" into "really!".

Nothing is guessed at. The report lists exactly which substitutions ran and how many characters each one touched, so an unexpected result is traceable rather than mysterious.

Examples

Text pasted from a word processor

Text

“Smart quotes” and an em: dash

Result

"Smart quotes" and an em-dash

Two curly double quotes and one em dash replaced. This is the exact set of characters that breaks a CSV import or a JSON string.

A hidden zero-width character

Text

A word with a zero-width space inside it

Result

The word joins up; the report shows 1 character removed

Nothing looks different, which is why this one is worth running before you wonder why a lookup fails on a value that appears correct.

A non-breaking space

Text

Copied from a web page

Result

Replaced with an ordinary space

Search and replace in most editors will not match a non-breaking space with a normal one, so a find that should work simply returns nothing.

Frequently asked questions

What exactly is an invisible character and why does it matter?

Zero-width spaces, bidirectional marks and stray control characters occupy no visual width but are real characters in the string. They break exact-match lookups, produce broken URL slugs, and make two values that look identical compare as different.

Will this ruin my formatting?

It removes typographic characters and replaces them with plain equivalents, which is a downgrade in appearance and an upgrade in compatibility. Run it on text heading for code, a CSV or a plain-text field, not on text heading for print.

Why replace an em dash with a hyphen?

Because an em dash is a non-ASCII character that can render as a question mark or a mojibake sequence in a system with the wrong encoding. If your destination handles UTF-8 correctly, leave the option off. The em dash is the better typography.

Does it remove line breaks or extra spaces?

No. It works on individual characters within lines. For line breaks use the line-break tool, and for runs of spaces and indentation use the whitespace remover.

Why does the report show changes when the text looks the same?

Because the characters that changed were invisible or nearly so, a non-breaking space replaced by a normal one looks identical. The count is the only evidence, which is precisely why it is shown.

Compared with