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
9 graphemes9 code points10 bytes
Live result

Confusable Character Checker

1confusable character found
  • 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.
01

Reviewed truth vectors

Examples that expose the edge cases

Inputаpple
Output1 confusable found: а looks like “a”

The first letter is Cyrillic, not Latin.

Inputapple
Output0 found

All-ASCII text reports nothing.

Inputpаypаl
Output2 confusables found

Two Cyrillic letters imitate Latin ones.

02

Transparent implementation

How it works

  1. 01

    Compare each character against a reviewed set of common ASCII look-alikes.

  2. 02

    Record the ASCII letter each match imitates.

  3. 03

    List every hit with its code point, script, and position.

03

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.

04

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.

05

Experience, expertise & trust

How we verify this tool

GlyphSift Editorial — Text-engine authors & reviewers

The GlyphSift Editorial team designs the deterministic text engine, writes each tool's examples against real Unicode edge cases, and reviews every claim before a page becomes eligible for indexing. We build and test the software we document; we do not outsource the copy to generic content mills.

Each tool page is reviewed against the same six input classes the engine is tested with — ASCII, emoji, combining marks, non-Latin scripts, empty input, and 5,000-grapheme input — and cannot become eligible if it is only a parameter variation of another page.

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