Punycode Converter
Convert internationalized domains to xn-- punycode and back, with a hand-written RFC 3492 decoder.
How to use it
- Pick the direction: Unicode to xn-- for encoding, xn-- to Unicode for decoding.
- Paste one domain per line - labels that need conversion are handled individually.
- Encoding runs through the browser URL API; decoding uses the built-in RFC 3492 implementation.
- Copy the converted list or clear it and try another batch.
Common use cases
- Server configuration - get the punycode form your web server, DNS zone file or TLS certificate expects.
- Email infrastructure - normalize internationalized mail domains for SMTP-level configuration.
- Security review - decode xn-- labels in links and logs to see what they actually spell.
- Bulk list cleanup - convert whole columns of mixed domains in one pass.
Why it stays private
Conversion happens in your browser. Domain lists, including internal or customer hostnames, never leave the device.
FAQ
Q: Why do the two directions use different engines? A: Browsers expose built-in internationalization in one direction (parsing a URL with a Unicode host), but no API encodes to punycode directly. Decoding is therefore implemented from RFC 3492 so both directions work offline.
Q: Which characters are valid in a punycode label? A: Only ASCII letters, digits and hyphens. Anything else in the input raises an error naming the offending domain, so mixed-up lists are caught instead of silently mangled.
Q: Does it lower-case or validate according to IDNA rules? A: The URL API applies the browser's normal host processing, which lower-cases and applies IDNA mapping for encoding. Full IDNA validation, such as bidi and context rules, is beyond this tool.
Your data stays on this device
Punycode Converter runs 100% locally. Everything you paste or drop is processed by your own browser and never transmitted. Nothing is stored on our servers — close the tab and it is gone.
Nothing you type is sent to a server, logged, or used for analytics. The page works even with your network disconnected after first load.