1. Home
  2. Developer tools
  3. Zero-Width Character Detector

Zero-Width Character Detector

Text can carry invisible marks. Paste it here to see every hidden character, decode any message encoded in them, and clean the text.

Free, no sign-up. Runs in your browser: nothing is uploaded.

How to use Zero-Width Character Detector

  1. Paste the text.
  2. Read the table of hidden characters and any decoded message.
  3. Choose what to remove and copy the cleaned text.

Features

  • Zero-width space, joiner, non-joiner, word joiner and BOM
  • Bidirectional controls and soft hyphens
  • Unicode tag characters that hide ASCII
  • Decodes binary watermarks
  • Shows hidden characters inline as code points
  • Keeps emoji sequences intact

Supported formats

Input

  • Typed or pasted text

You get

  • Cleaned text
  • Hidden character table
  • Decoded watermark

Private by design

Everything you enter is processed by your browser on this device. Nothing is sent to openWorkstand or anyone else, so the Zero-Width Character Detector is safe for private and work data. After you have used it once while online, it also works without an internet connection. How local processing works

Good to know

  • It reports invisible characters it knows about; some rare format characters may be missed.
  • Removing joiners can change how emoji and some scripts are displayed.

Guide

Finding invisible characters and decoding hidden text watermarks

Some of the most important characters in a document are the ones you cannot see. Unicode includes many that take no space on screen: zero-width spaces that allow a line break, joiners that bind letters together, direction controls for right-to-left scripts, and a block of tag characters that mirrors ASCII. Each has an honest purpose, and each can also be abused to hide text, mark a copy for tracking, or make a file name or command look different from what it is. This page shows what is hiding in a piece of text.

What gets detected

The table groups what it finds by kind and shows the count, the code point and the legitimate use. Zero-width space U+200B marks a break opportunity in scripts without spaces. Zero-width non-joiner U+200C stops letters from joining in Persian and Hindi. The joiner U+200D glues emoji sequences such as a family, and joins letters in Indic scripts. Others are the soft hyphen, variation selectors that choose emoji or text style, unusual spaces such as the non-breaking space, bidirectional controls, and fillers that render as blank.

A worked example

The sample is a short business paragraph with traps built in. The page reports 63 hidden characters of 6 kinds in 185 characters of text: 31 zero-width spaces, 26 non-joiners, 3 joiners, 1 soft hyphen, 1 variation selector and 1 unusual space. A message appears above the table, “Hidden message decoded from Binary in zero-width characters (zero-width space = 0, non-joiner = 1): ID-7731”. Seven characters at eight bits each is 56 bits, and the long zero-width run right after the words “Quarterly report” carries them. The three joiners and the variation selector belong to the family emoji at the end, which is why they are listed as legitimate.

How a text watermark works

Two invisible characters make a binary alphabet. A tool picks one for 0 and the other for 1, converts an ID into bits, and inserts the run into a sentence. Every recipient gets a copy with a different run, and a leaked copy can be traced by decoding it. Because the characters survive copy and paste, the mark often outlives screenshots of the source but not retyping.

Cleaning the text

Each row of the table has a Remove checkbox. The default ticks the invisible kinds that are rarely wanted in plain text, and a switch labelled “Keep joiners, variation selectors and tags inside emoji sequences” is on, so the family emoji in the sample stays one glyph. After you choose, the cleaned text appears below with a copy button. The inline view, which writes every hidden character as a bracketed code point such as U+200B, is the quickest way to find a stray one inside a word.

Limits

The detector knows the kinds listed on the page. Rare format characters may slip through, and visible look-alike letters from other alphabets are a different problem handled by the homograph detector. A decoded message tells you what was written, not who wrote it. Removing joiners from Persian, Hindi or emoji text changes how it is displayed.

Checked against the current version of the Zero-Width Character Detector on .

Frequently asked questions

Why does my command fail even though it looks right?

A zero-width space or a non-breaking space pasted from a web page can sit inside a command or a variable name. The shell sees a different character, so the program is not found. Paste the command here to see and remove the intruder.

Are Unicode tag characters dangerous?

They are a block of invisible characters that mirror ASCII letters. Text can carry a whole hidden sentence in them, which some AI assistants read even though people cannot see it. Remove them from untrusted text before you pass it on.

Where do zero-width characters come from?

Sometimes from copying text out of websites, word processors or chat apps, sometimes from tools that insert them on purpose to trace a leaked copy or to hide instructions for AI assistants.

Is it safe to remove all of them?

Not always. The joiner builds emoji sequences and joins letters in scripts such as Persian and Hindi. The page lists each kind with its legitimate use so you can choose.

Keep working with the result

openWorkstand also includes a free workspace with documents, spreadsheets, tasks, projects and a calendar that save to a folder on your computer.