Punycode / IDN Converter

Convert an internationalized domain name (IDN) to and from Punycode. Encode a domain with accents or non-Latin script into its xn-- ASCII form, or decode an xn-- domain back to readable Unicode. Free, instant and entirely in your browser.

Read the guide: What Is Punycode
Punycode (ASCII)
xn--mnchen-3ya.de
ASCII formxn--mnchen-3ya.de
Inputmünchen.de

How it works

  1. 1

    Choose a direction

    Pick Encode to turn a Unicode domain into Punycode, or Decode to turn an xn-- domain back into Unicode.

  2. 2

    Enter the domain

    Type or paste the full domain, such as münchen.de or xn--mnchen-3ya.de. Each label is converted on its own.

  3. 3

    Copy the result

    Read the converted domain and copy it with one click, ready to paste into DNS, a registrar form or a config file.

Instant & 100% private — nothing is uploaded

Everything runs locally in your browser. Your code, text and files are processed on your own device and are never sent to a server — so there are no upload waits, no size limits from us, and nothing is ever stored or logged.

Frequently asked questions

What is Punycode?
Punycode is a way to represent Unicode domain names using only the ASCII letters, digits and hyphen that DNS allows. A label with non-ASCII characters is encoded into an xn-- prefixed string, for example münchen becomes xn--mnchen-3ya. It is defined in RFC 3492 and used by the IDNA standard so international domains work across the existing DNS.
Why do internationalized domains need Punycode?
The DNS was built around a limited ASCII character set, so a name like münchen.de cannot be stored directly. Punycode encodes the Unicode part into a valid ASCII label that DNS, browsers, certificates and mail servers can all handle, while software displays the original Unicode form to people.
Is the conversion done on a server?
No. The encoding and decoding run entirely in your browser using a built-in Punycode implementation, so the domains you enter are never sent anywhere. The tool keeps working once the page has loaded.