Glossary

Internationalized domain name

An internationalized domain name contains characters outside the ASCII letters, digits and hyphen that DNS was designed for — accented letters, Cyrillic, Chinese, emoji in some registries. DNS itself still carries only ASCII, so the Unicode form is converted to an ASCII form called Punycode, recognisable by its `xn--` prefix. The two are the same name: what a user types and what the resolver queries simply differ in representation.

How the encoding works

Each label is converted separately. `café.example` becomes `xn--caf-dma.example`, and the `xn--` prefix marks a label as encoded.

The transformation is deterministic and reversible, so no lookup table is needed to go between the forms.

Before encoding, the name is normalised: case folding, Unicode normalisation, and rejection of characters the standard forbids. IDNA2008 defines which code points are permitted.

Registries add their own restrictions on top, typically limiting a domain to the scripts of one language to reduce ambiguity.

Where each form appears

Browsers display the Unicode form in the address bar when they judge it safe, and fall back to showing Punycode when they do not.

DNS records, certificates, log files and most command-line tools carry the Punycode form, because that is the name on the wire.

Email addresses with international characters involve a separate specification and are supported unevenly; a domain that works for the web may not work for mail.

Both forms must be handled by anything that compares names — an allow-list checking only the Unicode form will not match the request.

Look-alike characters, and what browsers do

Many scripts contain characters that render nearly identically to Latin ones. A Cyrillic 'а' and a Latin 'a' are different code points that look the same in most fonts.

A domain built from such substitutions is visually indistinguishable from a well-known name, which is the homograph problem.

Browsers mitigate it by displaying Punycode instead of Unicode when a name mixes scripts in suspicious ways, so a spoofed name appears as `xn--` gibberish rather than as the name it imitates.

The rules vary between browsers, which means the same domain can display differently in each — a reason to prefer an unambiguous name when one is available.

Practical handling

Publish canonical URLs in one form consistently. Mixing the Unicode and Punycode forms across links, canonical tags and the sitemap creates the same duplication as mixing `www` and the apex.

Check that the TLS certificate covers the name; certificates carry the Punycode form, and a mismatch there breaks HTTPS entirely.

Register the obvious ASCII equivalent as well when one exists, and redirect it, so the name is reachable by people who cannot type the characters.

Test with `dig` using the Punycode form, since most resolvers and tools expect it.

Frequently asked questions

What does the xn-- prefix mean?
It marks a domain label encoded in Punycode, meaning the human-readable form contains non-ASCII characters.
Why does my browser show Punycode instead of my domain name?
Browsers display the encoded form when a name mixes scripts in ways associated with spoofing, to prevent a look-alike domain imitating a known one.
Do internationalized domains work for email?
Only partly. International email addresses are a separate specification with uneven support, so a domain usable on the web may not be usable for mail.

Sources

Related

VeriFixScan crawls a site and applies its checks to every page it reaches, keeping the evidence behind each finding. Scanning one website is free.

Scan a website