Phishing URL & domain

Homoglyph Checker

Runs locallyNew

Use Homoglyph Checker

What it does

Paste a domain, URL or text to see each label in Unicode and punycode, the script and UTS #39 prototype of every character, and whether the name mixes scripts or reads as a different ASCII name.

It runs entirely in your browser: nothing you enter is uploaded.

Example

Cyrillic lookalike in punycode

Input
xn--80ak6aa92e.example
Output (captured 2026-10-20)
Lookalike risk: Label "аррӏе" is written in Cyrillic but reads as the ASCII name "apple" (whole-script confusable).
Highlighted domain
аррӏе.example
Unicode form
аррӏе[.]example

Punycode (ACE) form
xn--80ak6aa92e[.]example

RESTRICTION LEVEL
Single Script
SCRIPTS
Cyrillic, Latin
READS AS
apple[.]example
Labels
UNICODE	ACE	SCRIPTS	MIXED	RESTRICTION LEVEL	SKELETON
аррӏе	xn--80ak6aa92e	Cyrillic	no	Single Script	apple
example	example	Latin	no	ASCII-Only	ASCII only
Characters
CHAR	CODE POINT	SCRIPT	UTS #39 PROTOTYPE	ID STATUS	FLAG
а	U+0430	Cyrillic	a (U+0061)	Allowed	looks like ASCII
р	U+0440	Cyrillic	p (U+0070)	Allowed	looks like ASCII
р	U+0440	Cyrillic	p (U+0070)	Allowed	looks like ASCII
ӏ	U+04CF	Cyrillic	l (U+006C)	Allowed	looks like ASCII
е	U+0435	Cyrillic	e (U+0065)	Allowed	looks like ASCII
e	U+0065	Latin	itself	Allowed	ASCII
x	U+0078	Latin	itself	Allowed	ASCII
a	U+0061	Latin	itself	Allowed	ASCII
m	U+006D	Latin	rn (U+0072 U+006E)	Allowed	ASCII
p	U+0070	Latin	itself	Allowed	ASCII
l	U+006C	Latin	itself	Allowed	ASCII
e	U+0065	Latin	itself	Allowed	ASCII
Comparison with apple[.]example
Confusable: аррӏе[.]example and apple[.]example have the same UTS #39 skeleton, so they can look identical.
SKELETON OF THE INPUT
apple[.]exarnple
SKELETON OF APPLE[.]EXAMPLE
apple[.]exarnple

Decodes to аррӏе.example: all five letters are Cyrillic and read as apple, so the label is flagged as a whole-script confusable and each character is marked. Load example also puts apple.example in the comparison field, which has the same skeleton.

FAQ

What does the checker test?

Each label is decoded from punycode with an RFC 3492 decoder, every character gets its Unicode script and its UTS #39 prototype from confusables.txt (Unicode 18.0), and the label gets a mixed-script check and a UTS #39 restriction level. Labels whose letters all read as ASCII are flagged as whole-script confusables.

Can it miss a lookalike or flag a real domain?

Yes. UTS #39 covers characters that look alike, not typos, so a swapped or missing letter only shows up through the edit distance in the comparison field, and ASCII tricks such as rn for m are listed as notes. Legitimate non-Latin names, for example some Cyrillic domains under .рф, can read as Latin words and be flagged.

Is anything sent over the network?

No. Decoding, script detection and the confusables table run on this page; the punycode form comes from your browser's own URL parser and no DNS lookup is made.