Punycode Converter (IDN)
Paste an internationalized domain name like münchen.de and get its Punycode form xn--mnchen-3ya.de — or paste a xn-- domain and get back the Unicode original. Each input line is processed independently.
Last updated: May 27, 2026
Find this tool useful? Support the project to keep it free!
Buy me a coffeeWhat is Punycode Converter (IDN)?
Domain names on the DNS wire are ASCII-only, but the Internet has long needed names in scripts beyond Latin — Arabic, Chinese, Cyrillic, accented Latin, emoji. Punycode (RFC 3492) is the algorithm that resolves this: it encodes each Unicode label into an ASCII representation prefixed with `xn--`, in a way that can be reversed without ambiguity. The combination of Punycode encoding and a few normalization rules is called IDNA (Internationalized Domain Names in Applications).
This tool implements the Punycode reference algorithm — encoding turns characters outside the basic ASCII range into a base-36 representation with a clever delta encoding; decoding inverts the process. The tool operates per DNS label: only labels that contain non-ASCII characters get the `xn--` prefix on encode, and only labels that start with `xn--` are decoded on decode.
How to Use Punycode Converter (IDN)
Pick the conversion direction: Unicode → Punycode (encode) or Punycode → Unicode (decode).
Paste one domain per line.
Copy the converted result.
Common Use Cases
- Registering an internationalized domain name with a registrar that requires ASCII form.
- Inspecting a suspicious-looking domain to see its Unicode form (helpful for spotting homoglyph attacks).
- Implementing an IDN-aware allowlist or blocklist in code.
- Debugging email addresses with non-ASCII domain parts.
Example Input and Output
A German Unicode domain encodes to its Punycode (xn--) form.
münchen.dexn--mnchen-3ya.dePrivacy
All Punycode encoding and decoding happen in your browser. No content is sent to a server.
Homograph awareness
Decoded labels can resemble Latin letters from other scripts (Cyrillic а vs Latin a). When auditing untrusted URLs, render the decoded label in a context that exposes the underlying script.

