Skip to content
uencoder
TUTORIAL

How to Encode Punycode Domains

Convert internationalized domain names (IDN) to Punycode ASCII representation for DNS resolution.

Problem

You have a domain name with non-ASCII characters (e.g., Bücher.com) and need its Punycode form for DNS lookups.

Prerequisites

  • Understanding of DNS
  • Familiarity with Unicode

Steps

  1. 1. Split the domain into labels

    Separate the domain name at each dot. Punycode is applied per-label, not to the whole domain. The TLD and each subdomain label are processed independently.

    Input
    Bücher.com
    Output
    labels: ['Bücher', 'com']
  2. 2. Encode each non-ASCII label to Punycode

    For each label containing non-ASCII characters, prefix the Punycode output with xn-- and append the encoded form. ASCII-only labels like 'com' remain unchanged. The encoding maps Unicode code points to a compact ASCII representation.

    Input
    Bücher
    Output
    xn--Bcher-kva
  3. 3. Reassemble and verify

    Join the encoded labels with dots. Use the result for DNS resolution. Most browsers and DNS libraries perform this conversion automatically, but APIs and logs often show the Punycode form.

    Input
    xn--Bcher-kva.com
    Output
    resolves to the same server as Bücher.com

Expected result

An ASCII-only domain name (ACE form) that DNS resolvers can query, equivalent to the original IDN.

Common errors

Encoding the entire domain as one label
Split on dots first. Only labels with non-ASCII characters get the xn-- prefix.
Case is lost in conversion
Punycode preserves the case of the first character. Use a standards-compliant encoder to handle case correctly.

Troubleshooting

  • If DNS lookup fails, verify the xn-- prefix is present and lowercase.
  • Some older resolvers do not support IDN. Use the Punycode form directly in those cases.

Security limits

  • Punycode enables homograph attacks (e.g., аpple.com using Cyrillic а). Always display the Unicode form to users and warn about mixed-script domains.

Related tools

Related glossary

Related tasks

Ready to run it?

References