Invisible Character and Watermark Remover
Paste text below and this tool strips the invisible Unicode characters that survive a copy and paste: zero width spaces, directional marks, exotic spaces and tag characters. Nothing you can see changes. Letters, punctuation, accents and emoji are left exactly as they were.
What it removes
32 code points in three families. The list is short on purpose: every entry is a character that has no job in ordinary prose.
Zero width and formatting marks
Removed outright. They carry no meaning in ordinary text.
| U+200B | ZERO WIDTH SPACE |
| U+200C | ZERO WIDTH NON-JOINER |
| U+FEFF | ZERO WIDTH NO-BREAK SPACE |
| U+2060 | WORD JOINER |
| U+00AD | SOFT HYPHEN |
| U+034F | COMBINING GRAPHEME JOINER |
| U+180E | MONGOLIAN VOWEL SEPARATOR |
| U+061C | ARABIC LETTER MARK |
| U+200E | LEFT-TO-RIGHT MARK |
| U+200F | RIGHT-TO-LEFT MARK |
| 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 |
Exotic spaces
Replaced with an ordinary space, so word breaks survive.
| U+2002 | EN SPACE |
| U+2003 | EM SPACE |
| U+2004 | THREE-PER-EM SPACE |
| U+2005 | FOUR-PER-EM SPACE |
| U+2006 | SIX-PER-EM SPACE |
| U+2007 | FIGURE SPACE |
| U+2008 | PUNCTUATION SPACE |
| U+2009 | THIN SPACE |
| U+200A | HAIR SPACE |
| U+202F | NARROW NO-BREAK SPACE |
| U+205F | MEDIUM MATHEMATICAL SPACE |
| U+3000 | IDEOGRAPHIC SPACE |
Tag characters
The range U+E0000 to U+E007F is removed as a block. These characters render as nothing and exist to carry data alongside visible text, which makes them the usual place to hide a marker. Valid prose never contains them.
Why text picks these up
Three sources account for most of it. Formatting is the dull one: text copied out of a PDF, a design tool or a rich editor brings thin spaces and soft hyphens with it. Right to left languages leave directional marks behind when a mixed sentence is copied. And some systems insert zero width or tag characters deliberately, as a provenance mark on generated text.
None of them are visible, which is the entire problem. The text looks right, so nobody goes looking, and the damage shows up somewhere else.
Where this bites in Notion
A zero width space inside a database property means the value no longer matches the one next to it. A filter for a status skips rows that look correct. A sort puts two identical entries in different places. A relation refuses to find a page you can see.
Paste a property value here if a Notion filter is behaving in a way you cannot explain. It takes a moment and it rules out the cause that is hardest to spot. thePlus.so is a Notion widget tool, and this cleaner runs on our own pages before anything is published.
What it does not do
It does not rewrite your sentences. Marks carried in word choice rather than in hidden characters cannot be stripped without changing the text, and changing the text is not what this tool is for.
It does not touch images or files. Metadata inside a PDF or a picture is a separate problem with separate tools.
Questions
What are invisible characters in text?
Invisible characters are Unicode code points that occupy space in a string but render as nothing, or as an ordinary space. Zero width spaces, directional marks and tag characters are the common ones. They survive copy and paste, and they change how search, sorting and comparison behave.
Does removing them change how my text looks?
No. Every character this tool removes is invisible or renders as a plain space. The visible text is identical before and after. Letters, punctuation, accents and emoji are left alone.
Why does text from an AI assistant contain them?
Some systems insert zero width or tag characters as provenance marks, and some are simply artefacts of how the text was formatted before you copied it. Either way they travel with the text into whatever you paste it into.
Why does this matter in Notion?
A zero width space inside a database property means the value no longer matches the one next to it. Filters miss rows, sorting looks wrong, and two entries that read identically are treated as different. The characters are invisible, so the cause is not.
Is the text sent anywhere?
The text is posted to thePlus.so, cleaned in memory and returned in the same response. It is not stored, logged or passed to another service.
Built by thePlus.so, a Notion widget tool. Also useful: Unicode symbol table and the documentation.