Punycode Converter
Convert internationalized domains, emails and URLs between Unicode and xn-- form.
How to use it
- Paste one entry per line: a bare domain, an email address or a full URL.
- Pick the direction: Unicode to xn-- for DNS records and configs, xn-- to Unicode for reading.
- Full URLs convert only the host labels — scheme, userinfo, port, path, query and fragment are preserved as they are.
- Email addresses convert only the domain after the @; the local part is never touched.
- Invalid lines are reported by line number in the error area, and the remaining lines still convert.
Common use cases
- DNS records — turn an internationalized domain into the xn-- form zone files and registrar panels expect.
- Reading punycode URLs — decode a link back into readable characters before judging whether it is trustworthy.
- Email domains — convert only the domain half of an internationalized address.
- Config files — normalize hosts to punycode for servers, proxies and certificate tooling.
Why it stays private
Conversion runs entirely in your browser's memory. Host lists from traffic logs, customer records or incident reports never leave the device.
FAQ
Q: What exactly gets converted in a full URL? A: Only the host labels. Everything else — scheme, userinfo, port, path, query and fragment — is copied through unchanged, so a converted URL keeps working against the same resource.
Q: How does the reverse direction decode? A: With a self-contained RFC 3492 decoder: basic code points are copied out, deltas are unfolded with the bias adaptation loop, and insertion points are computed per the spec. Labels without the xn-- prefix pass through untouched.
Q: Why did one line fail while the others converted? A: Each line is converted on its own. A line fails when it is not a bare domain (and has no scheme), when the host cannot be parsed, or when a punycode label is malformed. The error area names the line number and the reason.
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.