IDN (Internationalized Domain Names) are international domain names that may contain characters of national alphabets: Cyrillic, Arabic, Chinese, Japanese and others.
How IDN Domains Work
The browser shows the domain in Cyrillic letters. Internally the system converts it to the Punycode format that DNS servers understand:
Cyrillic "primer.rf" → xn--e1afmapc.xn--p1ai
Cyrillic "ukrayina.ua" → xn--80aaxfb7a.ua
DNS servers work only with Punycode. Punycode always starts with xn--.
Advantages of IDN Domains
- Easy to remember for an audience that does not use the Latin alphabet
- Branding in the native language
- Zones such as .рф (Russia, punycode xn--p1ai), the Ukrainian Cyrillic zone xn--j1amh and the Chinese xn--fiqs8s are available
Drawbacks and Risks of IDN Domains
- Homograph attacks — Cyrillic characters look like Latin ones (a vs a). Attackers register phishing domains
- Email problems — not every mail client supports IDN
- SEO difficulties — Google indexes the Punycode version, which can be confusing
- Compatibility — older systems do not understand IDN
Does Your Site Need an IDN Domain
| Situation | Recommendation |
|---|---|
| Local business for a Ukrainian audience | Better .ua or .com.ua in Cyrillic |
| International project | Only .com — IDN creates problems |
| Brand protection | You can register an IDN version with a redirect |
How the Punycode ACE Prefix Is Built
Punycode is the algorithm from RFC 3492 that encodes non-ASCII characters into a string made only of Latin letters, digits and a hyphen. The resulting label gets the xn-- prefix (ACE — ASCII Compatible Encoding), followed by the encoded part. DNS servers, registries and most registrars work only with this ASCII form — the native-script spelling exists only at the browser and control-panel level.
# Converting to Punycode and back (libidn2 package, idn2 tool)
idn2 primer.rf
# xn--e1afmapc.xn--p1ai
idn2 --decode xn--e1afmapc.xn--p1ai
# primer.rf
One subtlety: the same visible text can be encoded differently depending on the IDNA table version (IDNA2003 vs IDNA2008). Domains registered before a registry moved to IDNA2008 sometimes produce a different Punycode string for characters such as the German "ß" or certain letters with diacritics — when transferring such a domain to another registrar it is worth comparing the ACE string character by character rather than trusting a visual match.
Common Errors With IDN Domains
Below are the messages people actually run into when registering and maintaining IDN domains, and what is behind them.
| Message or symptom | Cause | Fix |
|---|---|---|
| "Invalid domain name format" in the registrar's form | A native-script name was typed directly into a field that expects ASCII, with no client-side conversion to Punycode | Convert the domain with idn2 or an online converter and enter the resulting xn--... form |
| dig returns NXDOMAIN for the native-script spelling | The query went to the resolver as raw UTF-8 instead of the ACE form — no zone exists under that literal name | Query only the Punycode form: dig xn--e1afmapc.xn--p1ai |
| A message is rejected with "550 5.1.1 Recipient address rejected" | The part before the "at" sign is in a non-Latin script, and the recipient's mail server does not support SMTPUTF8/EAI (RFC 6531) | Use a Latin mailbox name on the Punycode domain instead of a non-ASCII local part |
| The browser shows the bare xn--... string instead of the native script | The browser's anti-phishing filter detected mixed scripts in the label and deliberately disabled Unicode display | This is normal homograph protection, not a domain configuration error — there is nothing to fix |
The last row is the most common support request: the owner is sure the domain is "broken", while in fact the browser's own protection kicked in, and it has no effect on resolution or mail delivery.
Checking an IDN Domain
# DNS and WHOIS must be queried only in the Punycode form
dig xn--e1afmapc.xn--p1ai A +short
whois xn--e1afmapc.xn--p1ai
# Confirm the registrar returned the expected ACE prefix
idn2 primer.rf
If whois on the Punycode form returns "No match for domain" while the native-script spelling appears "taken" at another registrar, it is most likely two different domains in different TLDs, or a mistake in manually building the ACE string, not a genuine conflict.
When an IDN Domain Does Not Fit
- An international B2B project where the main audience types the address on a Latin keyboard layout
- You need email addresses for external partners — some corporate mail servers still reject EAI addresses with a non-ASCII local part
- The domain has to be read aloud over the phone in a call center — a Punycode string cannot be dictated by voice
- There is no capacity to continuously monitor similar homograph registrations by competitors or scammers
- The main traffic channel is offline advertising and signage, where the address is typed in manually letter by letter
For an ordinary project with no need for a non-Latin script, comparing zones is covered in how to choose a domain zone.