Punycode Converter
Encode internationalized domains to xn-- ASCII and decode them back to Unicode.
Converted live as you type. Nothing leaves your browser.
Direction
Detected direction: Encode to xn-- ASCII.
Options
Lowercase normalizes the domain the way host names are compared. Turn it off to keep the original case.
- münchenxn--mnchen-3yaEncoded
- deUnchanged
How to convert Punycode domains online
Enter a domain
Type or paste a domain, either a Unicode name like münchen.de or an xn-- ASCII name like xn--mnchen-3ya.de.
Pick a direction
Leave direction on Auto-detect, or choose Encode to convert Unicode to xn-- ASCII or Decode to convert it back.
Read the breakdown
The converted domain updates instantly, with each label listed so you can see which parts were encoded, decoded, or left unchanged.
Copy the result
Click Copy to clipboard to take the converted domain into your config, certificate request, or browser.
Why use this tool
Both directions on one screen
Encode Unicode domains to xn-- ASCII and decode xn-- hosts back to readable Unicode, switching between them with a single control.
Per-label breakdown
The domain is split on its dots and each label is shown on its own, so you can see exactly which parts changed and which stayed plain ASCII.
Auto-detect direction
The converter reads your input and chooses encode or decode for you, so pasting an xn-- host or a Unicode name just works.
Handles the tricky cases
Pure ASCII labels pass through untouched, trailing dots and empty labels are preserved, and malformed xn-- labels are flagged instead of silently dropped.
Correct by the standard
Encoding follows the Punycode algorithm used by internationalized domain names, including characters beyond the Basic Multilingual Plane.
Runs entirely in your browser
Everything happens on your device; nothing is uploaded.
About this tool
Punycode is the encoding behind internationalized domain names. It rewrites a label that contains non-ASCII characters, like münchen or 例え, into a plain ASCII form prefixed with xn-- that the domain name system can route, then lets software turn it back into readable Unicode. This converter does both directions on a full domain: it splits the name on its dots, transforms only the labels that need it, and leaves pure ASCII labels untouched.
Use it to see what a Unicode address such as café.example becomes on the wire, to decode an xn-- host you found in a certificate, log line, or email header, or to check that a domain round-trips cleanly. Auto-detect reads the input and chooses encode or decode for you, and the optional lowercase step normalizes the name the way registrars and resolvers treat it. Each label is listed on its own so you can see which parts changed. To take apart a whole address see the URL parser, for percent-encoding of paths and query strings use the URL encoder, and for character-level escapes see Unicode escape.
Everything is computed on your device as you type, so the domains you paste, including anything internal or unreleased, never leave the browser. Malformed xn-- labels are flagged inline rather than silently dropped, and a trailing dot or an empty label is preserved so the output matches your input exactly.
Frequently asked questions
- What does this Punycode converter do?
- It converts domains between Unicode and the xn-- ASCII form used by the domain name system. In Encode mode it turns a name like münchen.de into xn--mnchen-3ya.de. In Decode mode it turns xn-- labels back into readable Unicode. Either way the domain is split into labels so you can see exactly which parts were transformed.
- What is Punycode and the xn-- prefix?
- Punycode is the algorithm that represents Unicode text using only the ASCII letters, digits, and hyphen that domain names allow. When a label contains non-ASCII characters, it is Punycode-encoded and given the prefix xn-- so resolvers can recognise it as an internationalized domain name label.
- How does auto-detect decide the direction?
- If the input contains any non-ASCII characters, it is treated as Unicode and encoded to xn-- ASCII. If the input is all ASCII and any label starts with xn--, it is decoded back to Unicode. You can always override this by choosing Encode or Decode explicitly.
- Which labels get converted?
- Only labels that need it. When encoding, a label is changed and prefixed with xn-- only if it contains non-ASCII characters, so ordinary ASCII labels like com or de are left exactly as they are. When decoding, only labels that start with xn-- are touched. Trailing dots and empty labels are preserved.
- What happens with an invalid xn-- domain?
- A label that starts with xn-- but does not contain a valid Punycode sequence is flagged inline as invalid, and its original text is kept in the output rather than dropped. The breakdown marks which label failed so you can fix it.
- Is my data uploaded anywhere?
- No. Everything runs in your browser; nothing is sent to a server. The domains you enter are processed on your device and are never uploaded, stored, or logged.
Related tools
URL Parser
Paste a URL and see every part broken out, with a decoded table of its query parameters.
URL Encode & Decode
Percent-encode text for URLs and decode it back, both directions.
Unicode Escape & Unescape
Convert text to and from \uXXXX escape sequences and HTML entities.
API Key Generator
Generate cryptographically random API keys and tokens in hex, base62, or base64url, with control over length, an optional prefix, and bulk output.
ASCII Table Reference
The full ASCII character set with decimal, hex, octal, binary, and HTML codes. Search by code, character, or name.
Atbash Cipher
Mirror the alphabet so A swaps with Z, B with Y, and so on. Atbash is its own inverse, so one field both encodes and decodes as you type.