Inspect Unicode · browser-local
Confusable Character Checker
Find characters that look like ordinary letters but are not, such as a Cyrillic that imitates a Latin a. GlyphSift lists each look-alike with the ASCII letter it mimics and its position.
- Index state
- eligible
- Reviewed
- 2026-08-24
- Input limit
- 5,000 graphemes
Confusable Character Checker
U+0430а looks like “a”Cyrillic · offset 0
Good fit
Use this tool when
- You are checking a name, handle, or URL for look-alikes.
- You want to explain why two strings look identical but differ.
- You are reviewing content for impersonation risk.
Keep the original
Avoid it when
- You need the complete Unicode confusable table.
- You want to auto-replace characters rather than review them.
- The text is expected to contain those scripts.
Reviewed truth vectors
Examples that expose the edge cases
аpple1 confusable found: а looks like “a”The first letter is Cyrillic, not Latin.
apple0 foundAll-ASCII text reports nothing.
pаypаl2 confusables foundTwo Cyrillic letters imitate Latin ones.
Transparent implementation
How it works
- 01
Compare each character against a reviewed set of common ASCII look-alikes.
- 02
Record the ASCII letter each match imitates.
- 03
List every hit with its code point, script, and position.
Known limitations
What the result cannot promise
It uses a curated set, not the full UTS #39 confusable data.
A skeleton match is a detection aid, not a safe replacement.
It focuses on ASCII look-alikes, not every possible confusion.
Questions before copying
Frequently asked questions
Is this the full Unicode confusable list?
No. It uses a practical, curated set of common ASCII look-alikes rather than the complete UTS #39 table.
Should I replace the flagged characters?
Only after review. The mimicked letter is a hint, not an automatic correction, since the original may be intentional.
Why does a name look identical but fail a match?
It may contain look-alike characters from another script; this checker reveals them.
What does this character checker do?
It scans your text for characters that look like common ASCII letters but belong to other scripts, then reports each look-alike so you can review or replace it.
Experience, expertise & trust
How we verify this tool
Automated evidence
- Tool-contract & coverage suite30 deterministic cases
tests/tools-30.test.mjs mirrors the ToolRunner dispatch and asserts every registered engineId returns the contracted output shape, plus a coverage guard so no tool silently drops characters.
Run in: node --test after a production build (vinext build) - Rendered-HTML suite12 deterministic cases
tests/rendered-html.test.mjs renders the deployed server bundle and asserts the Unicode-version manifest and each wave's tool markup are present in the server-rendered HTML.
Run in: node --test against the built dist/server bundle - Unicode inspection suite11 deterministic cases
tests/unicode-inspection.test.mjs verifies grapheme/code-point/byte counting and hidden-control detection using explicit \u escapes for combining and bidirectional characters.
Run in: node --test against the runtime's Unicode data - Compatibility risk suite13 deterministic cases
tests/compatibility.test.mjs checks that bidirectional controls, invisible characters, mixed scripts, and NFKC-changing input raise the documented risk status, and that safe-text stripping preserves ordinary content.
Run in: node --test, deterministic analyzer
Standards this tool follows
- UTS #39: Unicode Security Mechanisms
Confusable and mixed-script detection methodology.
- UAX #9: Unicode Bidirectional Algorithm
Bidirectional control characters flagged during inspection.
- UAX #15: Unicode Normalization Forms
NFC/NFKC normalization comparisons.
- RFC 3629: UTF-8
Byte-length counting for the UTF-8 encoding.