Check a user name, domain, URL or identifier for look-alike characters such as Cyrillic а in “pаypal”. Shows each character's script, what it looks like, mixed-script words and the Punycode form of a domain. Compare two strings to see whether they can be confused, using the skeleton from Unicode's official confusables data (UTS #39). Runs in your browser.
Many characters from different scripts look the same: Latin a and Cyrillic а (U+0430), Latin o, Greek ο and the digit 0, or rn and m. Attackers use these homoglyphs to make phishing domains (IDN homograph attacks), fake user names and source code that looks harmless. This tool shows which characters in a string are not what they seem.
[U+XXXX].xn-- labels, the decoded Unicode form is shown.Unicode Technical Standard #39 (Unicode Security Mechanisms) defines the skeleton of a string: convert it to NFD, drop default-ignorable characters such as zero-width spaces, replace every character with its prototype from confusables.txt, and convert to NFD again. Two strings are confusable when their skeletons are equal. For example, pаypal (with Cyrillic а) and paypal both have the skeleton paypal, and m has the skeleton rn.
The skeleton is for comparing, not for display: it maps 1 to l and 0 to O, so it can look odd.
| Level | Meaning |
|---|---|
| ASCII-Only | Only ASCII characters |
| Single Script | All letters are from one script (digits and punctuation are allowed with any script) |
| Highly Restrictive | Latin mixed with Japanese (Han, Hiragana, Katakana), Chinese (Han, Bopomofo) or Korean (Han, Hangul) |
| Moderately Restrictive | Latin mixed with one other common script except Cyrillic and Greek |
| Minimally Restrictive | Any other mix, for example Latin with Cyrillic or Greek. This is what spoofed names usually look like |
Levels are computed per word (the text is split at spaces and at URL separators such as ., /, @, :) and for the whole input. The script of each character comes from the browser's Unicode data (\p{Script} and \p{Script_Extensions}), so a very new script can show as Unknown in an older browser.
The confusables data is confusables.txt from Unicode 17.0.0 (https://www.unicode.org/Public/17.0.0/security/confusables.txt), 6,565 mappings. It is downloaded with the tool (about 48 KB) only when you open it.
Unicode data: Copyright © 1991–2025 Unicode, Inc. Distributed under the Unicode License v3 (https://www.unicode.org/license.txt). Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
No. A whole word in Cyrillic, such as аррӏе (xn--80ak6aa92e), is single-script but looks exactly like apple. Check the Looks like column and compare the string with the name it might imitate.
Those are real confusions listed in confusables.txt. They are shown in the table but not highlighted, because they are ASCII.
No. Nothing is opened or sent anywhere. The Punycode form is computed by the browser's URL parser, and links are never created from your input.
It shows invisible characters as [U+XXXX]. To list and remove them, use the Invisible Character Detector & Remover.