Skip to main content

Remove Invisible Characters

Delete zero-width spaces, byte order marks and other characters you cannot see but your parser can.

Feedback

Key Features

  • Removes zero-width space, joiner and non-joiner
  • Removes the byte order mark and the word joiner
  • Removes soft hyphens and bidirectional control marks
  • Turns non-breaking and narrow spaces into ordinary spaces
  • Leaves every visible character in place

Benefits

  • Fix string comparisons that fail for no visible reason
  • Clean text pasted out of PDFs, spreadsheets and web pages
  • Stop invisible characters from breaking CSV and JSON imports
  • Remove the watermarking characters some tools inject

How to use this tool

Paste the text that is behaving strangely

Click Process

Copy the cleaned text back into your document or code

The characters you cannot see and what they break

Invisible characters occupy no visual space and are present in the file. That combination is what makes them expensive: you cannot proofread them away, and they surface later as behaviour nobody can explain from reading the text.

The common ones have ordinary origins. A non-breaking space is what a word processor inserts to stop a line breaking in the wrong place, and it is what many websites emit between a number and its unit. Zero-width spaces are used by some systems as soft line-break hints. Zero-width joiners hold together emoji sequences and certain scripts, where they are genuinely necessary. A byte order mark sits at the start of some files as an encoding hint. None of these is a defect in itself; all of them are a problem when they arrive somewhere that did not expect them.

The symptoms are the recognisable part. A search that finds nothing although the word is clearly on screen. Two strings that look identical and compare as different, which in code is a test failing on a line that reads correctly. A word that refuses to wrap and pushes a layout sideways. A CSV column that will not match a lookup. A username or a coupon code rejected as invalid. In each case the character is doing exactly what it was designed to do, somewhere it was never meant to be.

The risk of removing them is small but real, and it is worth naming. Zero-width joiners inside emoji sequences and inside Arabic, Persian and several Indic scripts are meaningful: strip them and you change how the text renders or, in some scripts, what it says. A blanket removal is safe for English prose and is not safe for multilingual content, which is the one case to check the result rather than trust it.

Non-breaking spaces are the one to think about rather than delete reflexively. If the source deliberately used one to keep a figure with its unit, replacing it with an ordinary space allows a line break in the middle of a measurement. For most pasted text they are accidental and removing them is right; in typeset material they may be doing their job.

This runs entirely in your browser, which matters because the text people paste into an invisible-character cleaner is normally something already misbehaving in production: a config value, a credential, a record that will not match.

Frequently Asked Questions

How do I know I had invisible characters?

The usual symptoms are two strings that look identical but do not compare equal, a search that finds nothing, or a character count higher than what you can see.

Does it remove line breaks or tabs?

No. Line breaks and tabs are real whitespace and are kept. Use Remove Line Breaks if you want to unwrap paragraphs.

Related tools

Need this in a script?

The same tool answers on HTTP. Free, 1,000 calls a day, no card, and one token works across every Astral API.

POST https://astraltext.com/api/v1/remove-invisible-characters

Remove invisible characters APIGet a free token