Glossary
Plain English
Cross-linked to tools

IDN

Also known as: Internationalized Domain Name, internationalised domain name, IDNA, UTS #46

An IDN (Internationalized Domain Name) is a domain name containing characters outside ASCII, which is carried through DNS as an ASCII xn-- form produced by the IDNA processing defined in UTS #46.

Overview

DNS has always been restricted to letters, digits and hyphen, so an IDN is not stored as Unicode anywhere in the system. It is converted to an ASCII form before it reaches a resolver, and converted back for display. The conversion is defined by UTS #46 and has four steps: map every character, normalise the result to NFC, split it into labels, then validate and Punycode-encode each label that needs it. Punycode is only the last step, and mistaking it for the whole process is why so many converters disagree with the address bar.

The mapping step is where the real behaviour lives. Uppercase folds to lowercase; compatibility characters collapse to plain ones, so fullwidth example maps to example and the fi ligature becomes fi; a handful of characters like the soft hyphen are discarded entirely; and some are disallowed outright. Then NFC normalisation matters more than it looks: 'café' can be four code points or five depending on whether the accent is precomposed, the two are visually identical, and macOS hands you the decomposed form because its filenames are decomposed. Without the normalisation pass they encode to two different domains.

IDNA changed once, and the change still shows. IDNA2003 folded ß to 'ss' and final sigma ς to σ, so straße.de and strasse.de were one domain. IDNA2008 keeps both characters, making them separate registrations, and browsers moved to the new rules around 2010 — which is why some German site owners ended up buying their domain twice. These are called deviation characters, and any tool that converts a name containing one is quietly choosing which era to answer for.

Two validity rules are commonly skipped and both cause real rejections. CheckBidi (RFC 5893) requires a label containing right-to-left text to be consistently ordered, so an Arabic or Hebrew label with a stray Latin letter is invalid even though each character is allowed on its own. CheckJoiners (RFC 5892) permits a zero-width joiner only directly after a virama or between two Arabic joining letters, because anywhere else it is invisible and serves only to make two distinct names look identical.

Common questions about IDN

What is the difference between IDN, IDNA and Punycode?
IDN is the name itself — a domain with non-ASCII characters. IDNA is the process that converts it to and from the ASCII form DNS can carry, specified for the modern web by UTS #46. Punycode is the single encoding step inside that process, defined by RFC 3492, that rewrites a Unicode label into the restricted DNS alphabet. All three get used loosely, but the distinction matters: bugs cluster in the IDNA steps that surround Punycode, not in Punycode itself.
Why does my internationalised domain not resolve?
Usually the ASCII form is not what you think it is. Check for a decomposed accent, which encodes differently from a precomposed one; a deviation character like ß, whose two readings are two separate registrations; or a validity rule rejecting the label, most often CheckBidi if the name mixes a right-to-left script with Latin characters. Also check the 63-character limit — encoding inflates a label considerably, and a name that looks short in Unicode can exceed it.
Are emoji domains real?
They work in some registries and not others, and never as a standard. Emoji are valid under UTS #46, so 😀.ws encodes to xn--e28h.ws and resolves where the registry permits it. But IDNA2008 excludes symbols from what it considers valid, most registries follow that, and no certificate authority is enthusiastic about them. They are a novelty rather than something to build on.
Why is my domain shown as xn-- in the browser?
Because the browser judged the Unicode form unsafe to display. Each browser has rules about which scripts may appear together and whether the characters are plausible for the top-level domain, and when a name fails them it shows the raw xn-- label instead. That is an anti-spoofing measure: Cyrillic а is indistinguishable from Latin a, so showing the encoded form is the only dependable way to signal that a name is not what it appears.
Does an IDN need a special TLS certificate?
No, but the certificate is issued for the ASCII form. A certificate covers xn--bcher-kva.de, not bücher.de, and the two are the same name as far as validation is concerned. Convert the name to its ASCII form before entering it into a certificate request or a server config, because most tooling in that chain expects the encoded spelling and will not convert it for you.

Tools that work with IDN

Punycode / IDN Converter

Convert between Unicode domain names and xn-- Punycode, with full UTS #46 and homograph checks.

URL Parser

Break any URL into its protocol, host, path and query parameters.

External references