GlyphSift
Style TextClean TextInspect UnicodeGuidesCompatibilityAll Tools
Open studio ↘
Home/Guides/Invisible and Confusable Characters: Hidden Risks in Copied Text

Unicode guide

Invisible and Confusable Characters: Hidden Risks in Copied Text

Copied text can contain characters that are not obvious from its appearance. Inspection, script detection, and confusable checks expose code points that can change counts, matching, or visual order.

Written & reviewed by Jack Shi · Last reviewed 2026-08-24

01

Invisible and zero-width characters

U+200B ZERO WIDTH SPACE, U+200D ZERO WIDTH JOINER, and U+200C ZERO WIDTH NON-JOINER do not normally occupy visible width. They can sit inside copied text, change its counts, or prevent an exact match without being seen.

Joiners and non-joiners also have legitimate roles in text shaping and emoji sequences. Their presence is therefore something to inspect in context, not proof that the text is harmful.

Inputpay​pal
GlyphSift outputU+200B · Zero-width · Invisible

GlyphSift's inspector reveals the ZERO WIDTH SPACE between “pay” and “pal,” even though the input may look continuous.

02

Bidirectional controls can change display order

Characters in U+202A–U+202E and U+2066–U+2069 participate in bidirectional ordering. They can change how surrounding text is displayed without changing the logical order in which all code points are stored.

This behavior supports bidirectional text, but controls can also be placed deceptively. Character inspection can reveal the controls so the stored sequence and its rendered order can be reviewed separately.

03

Confusables and mixed scripts

Confusable characters belong to different scripts but have similar shapes. Latin a at U+0061 and Cyrillic а at U+0430 are different code points even though they can look alike in some fonts.

Substituting such characters is a basis for spoofed names and phishing URLs. Mixed-script detection shows when letters from multiple writing systems occur together, while confusable checking identifies supported lookalikes and the character inspector exposes their exact code points.

Try the behavior

Related tools

inspectInvisible Character Detector

Locate zero-width, suspicious invisible, and bidirectional control characters by exact offset.

Open tool →
inspectZero-Width Character Detector

Find zero-width and invisible characters that are hidden in text, with their positions.

Open tool →
inspectConfusable Character Checker

Flag characters that imitate ASCII letters, naming the letter each one mimics.

Open tool →
inspectMixed Script Detector

Detect when text mixes writing systems, which can signal spoofing or accidental substitution.

Open tool →
inspectUnicode Character Inspector

Inspect code points, offsets, UTF-8 bytes, scripts, categories, and risk flags character by character.

Open tool →

Primary standards

References

  • UTS #39: Unicode Security Mechanisms
  • UAX #9: Unicode Bidirectional Algorithm
GlyphSiftStyle it. Clean it. Check it. Paste with confidence.
Style mapGuidesAboutAuthorContactPrivacyTermsEditorial

Independent copy-paste text tools · hello@glyphsift.com · Platform claims require evidence

Static Unicode maps target Unicode 17.0. Segmentation and normalization use the runtime's Unicode data.