← Back to Character Atlas
Digital Literacy

Invisible Unicode: Spaces, Joiners, and Hidden Risks

Not every invisible character is a blank. Learn what zero-width spaces, joiners, no-break spaces, and direction controls do—and when hidden text becomes dangerous.

Character microscope

Edit the specimen to see the code points that make up what appears on screen.

The first A–B pair contains U+200B ZERO WIDTH SPACE. The second contains U+2060 WORD JOINER. They look alike but suggest opposite line-breaking behavior.

7 code points7 visible units
  1. U+0041
  2. U+200B
  3. U+0042
  4. U+0020
  5. U+0041
  6. U+2060
  7. U+0042

An invisible character is not necessarily an empty character. It can mark a word boundary, prevent a line break, join letter shapes, select a presentation, or change the direction in which text is displayed.

Two strings can look identical while containing different instructions.

“Space” describes several different jobs

U+0020 SPACE is the familiar keyboard space. Unicode also contains other spacing characters:

  • U+00A0 NO-BREAK SPACE has visible width but discourages a line break;
  • U+2009 THIN SPACE provides a narrower typographic gap;
  • U+3000 IDEOGRAPHIC SPACE occupies an East Asian full-width cell;
  • U+2800 BRAILLE PATTERN BLANK is a braille character with no raised dots, not a general-purpose space.

These characters may all appear blank, yet their width, line-breaking behavior, semantics, and accessibility differ. Substituting one simply because a platform rejects another can produce unpredictable layout.

Zero-width characters can still carry instructions

Some format characters normally draw no visible glyph:

  • U+200B ZERO WIDTH SPACE provides a possible break point without a visible gap.
  • U+2060 WORD JOINER discourages a break while adding no width.
  • U+200C ZERO WIDTH NON-JOINER can prevent cursive joining or ligation.
  • U+200D ZERO WIDTH JOINER can encourage joining and also connects supported emoji sequences.
  • U+FE0E/U+FE0F variation selectors request text or emoji presentation.

Calling all of these “invisible spaces” erases their different jobs. Several are not spaces at all.

In scripts with contextual shaping, joiners and non-joiners can participate in correct spelling or typography. Deleting them indiscriminately may change a word’s form or meaning.

Direction controls solve a real multilingual problem

Arabic and Hebrew run primarily right to left; Latin letters and numbers often run left to right. The Unicode Bidirectional Algorithm determines how mixed text is displayed. Directional marks, isolates, embeddings, and overrides help software handle ambiguous cases.

These controls are essential infrastructure for multilingual text. But because logical storage order and visual display order can differ, poorly handled controls can also make text appear to say something other than the sequence a program processes.

Code editors and security tools now pay special attention to unbalanced or unexpected bidirectional controls for this reason.

Why copied text can become hard to debug

Invisible characters commonly arrive through:

  • copying from formatted documents or web pages;
  • keyboard input methods and language shaping;
  • automatic word wrapping;
  • emoji sequences;
  • deliberate attempts to create blank names or unusual layouts.

Symptoms include failed search, duplicate-looking usernames, URLs that do not compare equal, unexpected line breaks, and cursor positions that seem to get “stuck.”

The right diagnostic is to inspect code points, not repeatedly press backspace and hope.

Hidden characters and look-alikes are security concerns

Unicode supports the world’s writing systems, so different characters can share similar glyphs. A Latin a and Cyrillic а are not the same character even when a particular font makes them nearly identical.

Unicode Technical Standard #39 defines mechanisms for detecting confusable identifiers. Its goal is risk detection, not flattening every script into ASCII. Context matters: mixed scripts in an internationalized name can be legitimate, while the same mixture in a bank-like domain can be suspicious.

Research on “imperceptible NLP attacks” has also shown that invisible insertions, homoglyph substitutions, character reordering, and deletion controls can alter the output of search and language-processing systems without an obvious visual change.

This is why hidden-character tools should explain both legitimate use and risk.

Safe uses and unsafe uses

Reasonable uses include testing text rendering, understanding a document, working with line breaking, and using join controls in scripts that need them.

High-risk uses include:

  • disguising a link or account name;
  • bypassing moderation or duplicate detection;
  • inserting controls into source code;
  • creating a blank identity where a service forbids it;
  • hiding content from a reader while leaving it available to software.

Even harmless decoration can hurt accessibility if a screen reader announces “blank” or an unexpected character name repeatedly.

What products should do

Applications that accept public identifiers should consider:

  1. displaying a visible warning for unexpected format controls;
  2. comparing normalized and confusable skeleton forms where appropriate;
  3. preserving legitimate multilingual text rather than deleting broad Unicode ranges;
  4. logging code points in diagnostic tools;
  5. using allow-lists tailored to the identifier’s purpose;
  6. keeping display names separate from security-sensitive account IDs.

Normalization, confusable detection, and stripping format controls solve different problems. No single “clean Unicode” button is correct for every language and context.

Invisible does not mean meaningless. The absence of a glyph can itself be an instruction.

The invisible character tool labels each offered character and its intended behavior. Use it for testing and legitimate layout needs, not to misrepresent text or evade platform rules.

Sources and further reading

  1. Standard
  2. Standard
  3. Standard
  4. Research paper
    Bad Characters: Imperceptible NLP Attacks

    Nicholas Boucher, Ilia Shumailov, Ross Anderson, and Nicolas Papernot 2022 IEEE Symposium on Security and Privacy 2022 DOI 10.1109/SP46214.2022.9833641

Comments

Loading comments…