Tools
Free tool / no signup

Text Cleaner

Paste text and remove zero width and other invisible characters, swap em dashes, straighten or curl quotes, fix spacing and doubled punctuation, change case and strip tracking parameters from links. See exactly what changed. Runs in your browser.
No invisible characters found in the pasted text.

Cleanups

Cleaned text

Nothing needed changing.

Before and after

Paste some text to see the diff.

Red is removed, green is added. Invisible characters appear as their code, like [U+200B].

Characters this tool treats as invisible
  • U+200B Zero width space
  • U+200C Zero width non-joiner
  • U+200D Zero width joiner
  • U+2060 Word joiner
  • U+FEFF Byte order mark (zero width no-break space)
  • U+200E Left-to-right mark
  • U+200F Right-to-left mark
  • U+00AD Soft hyphen
  • U+180E Mongolian vowel separator
  • U+202A Left-to-right embedding
  • U+202B Right-to-left embedding
  • U+202C Pop directional formatting
  • U+202D Left-to-right override
  • U+202E Right-to-left override
  • U+2066 Left-to-right isolate
  • U+2067 Right-to-left isolate
  • U+2068 First strong isolate
  • U+2069 Pop directional isolate

How to use the Text Cleaner

  1. Paste your text. Drop in a draft, a copied article or an exported caption. Nothing leaves your browser.
  2. Choose the cleanups. Switch on the fixes you want: invisible characters, quotes, dashes, spaces, punctuation, emoji, case and link tracking. Defaults are safe for most posts.
  3. Review what changed. Read the count for each fix and the before and after diff. Any invisible characters found are listed by name and code.
  4. Copy the clean text. Press Copy and paste the result into your scheduler or editor.

What the cleaner does and does not touch

What it checks

Each fix is optional and shown with a count. Invisible characters are matched by exact code point. Quotes can be straightened or curled. Dashes are swapped for the mark you pick. Runs of spaces collapse to one, trailing spaces are trimmed from every line, and doubled punctuation such as !! or ,, is reduced. Case can be set to sentence case, title case or lowercase.

Web addresses, hashtags and @mentions are lifted out before the text fixes run and put back afterwards. That keeps a CamelCase hashtag readable to screen readers and stops a link from being lowercased or having its dashes rewritten.

Rules it applies

Title case keeps these small words lowercase unless they open or close the title or follow a colon: a, an, and, as, at, but, by, for, if, in, nor, of, off, on, or, per, so, the, to, up, via, vs, yet. Words with inner capitals such as iPhone are left alone when the rest of the text has lowercase letters. Sentence case capitalises after a full stop, question mark, exclamation mark or line break.

Two dots become one, three or more stay as an ellipsis, and a question mark followed by an exclamation mark is left alone. Tracking parameters are matched by name, case insensitive. Host specific ones such as the si parameter on YouTube and Spotify share links, and s and t on X status links, are only removed on those hosts.

Limitations

Sentence case lowercases everything else, so acronyms like NASA become Nasa. Turn it off, or fix them after. The tool cannot know whether a dash is stylistic or part of a name. The diff compares up to about 2,500 words and then falls back to counts only. It does not check spelling or grammar.

Frequently asked questions

How do I remove weird characters from text?

Paste the text here and keep Remove invisible characters on. That strips zero width spaces (U+200B), zero width non-joiners (U+200C), zero width joiners (U+200D), word joiners (U+2060), byte order marks (U+FEFF), soft hyphens and the left-to-right and right-to-left marks. The tool lists each one it finds. Characters that are visible but odd, such as non-breaking spaces, are turned into normal spaces by the spacing fix.

Where do invisible characters in my text come from?

Mostly from copying. Web pages, chat apps, documents and some editors insert zero width characters for line breaking, text direction or tracking, and they come along when you paste. They can break hashtags, make two identical looking words fail a match, or add to a character count without showing.

Will removing zero width joiners break my emoji?

No. A zero width joiner sitting between two emoji is what glues family, profession and many other emoji together, so the tool keeps it there. A joiner anywhere else is removed. If you strip emoji entirely, the joiners go with them. Zero width non-joiners are also used in some scripts, so check the diff if you write in Persian or a similar language.

How do I remove utm parameters and tracking from a link?

Paste the text with the link and leave Clean tracking from links on. It removes utm_ parameters, fbclid, gclid, igshid, msclkid and similar click identifiers, and keeps every other parameter, so a link like a product page with an id still works. The removed names are listed so you can see exactly what was taken out.

Can I replace em dashes in text?

Yes. Choose a comma, colon, period or hyphen. Spaced and unspaced dashes are both handled, a period capitalises the next word, and a number range such as 10 to 20 written with an en dash becomes a hyphen. Choose Leave as is to keep dashes.

How is this different from the Social Media Text Formatter?

The Text Formatter adds style: bold, italic and monospace Unicode letters, bullets and numbering. The Text Cleaner does the opposite job. It removes things you did not mean to include and standardises what is left. Clean first, then format.