Punycode Converter
This Punycode converter translates internationalised domain names between their Unicode form and the ASCII form that DNS actually carries. Domain lookups have always been ASCII-only, so a name like münchen.de is encoded to xn--mnchen-3ya.de before it goes anywhere near a name server — the conversion your browser performs silently every time you type a non-ASCII address. Each label between the dots is converted independently, and labels that are already ASCII are left completely untouched. Seeing both forms side by side matters for security as well as curiosity: a domain that looks entirely familiar in its Unicode form can decode to something quite different.
How it works
Domain names travel through DNS as ASCII, so an internationalised name is encoded into an ASCII form beginning xn--. This converts a domain in either direction, label by label, leaving labels that are already ASCII untouched.
This is how a browser turns münchen.de into xn--mnchen-3ya.de before looking it up. Seeing both forms matters for security too: a domain that looks familiar in Unicode may be an entirely different name once decoded.
Everything runs in your browser — nothing you paste is sent to a server.
This domain is already ASCII — nothing to convert.
Why domains are converted at all
DNS was specified when ASCII was the only thing anyone encoded, and its wire format still carries only ASCII. Rather than change DNS, the solution was to encode Unicode names into ASCII at the edges — browsers encode before looking up, and decode again for display.
How the encoding works
Punycode keeps the ASCII characters of a label as they are, appends a hyphen, and then encodes the non-ASCII
characters as a compact sequence describing which characters to insert and where. That is why
bücher becomes bcher-kva: the ASCII letters survive intact, and
kva encodes "insert ü after position 1".
Homograph attacks
Cyrillic а and Latin a are different characters that render identically in most
typefaces. A domain can therefore look exactly like a familiar one while being a completely different name.
Decoding the ASCII form is the reliable way to tell — which is why browsers show the xn-- form for
domains that mix alphabets suspiciously.
Frequently asked questions
What is Punycode?
The encoding that represents Unicode domain names in ASCII. DNS carries only ASCII, so münchen.de travels as xn--mnchen-3ya.de and is converted back for display.
What does the xn-- prefix mean?
It marks a label as Punycode-encoded. A label without it is ordinary ASCII and is left exactly as it is.
Why is each part converted separately?
Because the encoding operates per label — the parts between the dots. A domain can mix encoded and plain labels, which is why example.münchen.de encodes only its middle label.
Why does this matter for security?
Different alphabets contain characters that look identical to Latin ones. A domain that appears to read "apple" may use a Cyrillic character and decode to a completely different name — decoding it is how you tell.
Does it work with emoji domains?
Yes. Emoji are just Unicode characters, so a domain containing one converts in both directions like any other.
Is my domain sent anywhere?
No. The conversion is pure arithmetic and runs entirely in your browser — no DNS lookup is performed.
Related tools
URL Encoder / Decoder
URL-encode text into percent-encoded format for safe use in a query string, or decode it back to plain text.
Base32 Encoder / Decoder
This Base32 encoder converts text to and from the case-insensitive RFC 4648 alphabet.
UTF-8 Converter & Inspector
This UTF-8 inspector breaks text down character by character, with code points and bytes.