Punycode / IDN
Convert internationalised domain names to their ASCII (xn--) form and back.
Where your data goes
| Using this page | Using the API, MCP or A2A | |
|---|---|---|
| Where it runs |
In your browser. Conversion uses the bundled punycode library (RFC 3492) running in the page. | In a Cloudflare Pages Function at the Cloudflare data centre nearest the caller. |
| What leaves your device | Nothing you enter. After the page and its scripts load, no request
carries your input. The browser enforces this: the page's Content-Security-Policy
sets connect-src 'none' and form-action 'none', which
block fetch, XHR, WebSocket, EventSource, beacons and form posts.
| The server receives the |
| Stored | Nothing leaves the page. No cookies, analytics or third-party scripts; the browser keeps only your View → Inline config choice. | Your inputs and results: never. What is stored is your client record (client ID, a SHA-256 hash of your secret, expiry, and the profile you registered with) and one metadata row per call: operation, time, transport, status, error code, duration, request and response sizes, and country. |
| Logged | Nothing (no requests are made). | Only the per-call metadata above, attributed to your client ID. Never parameters, bodies, results, or credentials. Cloudflare, as the host, also processes request metadata (IP address, full URL including the query string, headers) under its own policies, so put inputs in POST bodies. |
| Access | Open to anyone. | Requires a client ID and secret (how to get one). HTTPS only; TLS terminates at Cloudflare. |
Details and how to verify this yourself: Security & privacy.
User guide
The tool sits in a window that works like a desktop app: menus on the top row and the full-screen icon at its right (Esc leaves full screen). The set-up options described below are in Settings → Options…, an overlay, and the Settings menu also lists the common choices directly. To keep the options in view instead, choose View → Inline config; the page remembers that choice. Help → Keyboard shortcuts… lists the keys.
To ASCII converts an internationalised domain name to the form DNS actually stores: münchen.de → xn--mnchen-3ya.de. To Unicode reverses it.
- Domain (IDN) mode works label by label and preserves dots. It also handles email addresses: only the domain part is converted.
- Raw mode applies bare Punycode with no
xn--prefix. You rarely need it except to debug encoders.
Spotting look-alike domains. If a link shows a familiar name but its ASCII form contains xn--, it includes non-ASCII characters. Paste the address here, convert To ASCII, and compare. For example аpple.com written with a Cyrillic а becomes xn--pple-43d.com.
Specification
- Algorithm. RFC 3492 Punycode (Bootstring with the IDNA parameters). Labels containing non-ASCII characters get the
xn--ACE prefix (RFC 5890). - Domain mode.
- Splitting. Labels are split on
.and on the IDNA2003 alternative dots。 . 。. - ASCII labels pass through unchanged.
- Email addresses. The local part, before
@, is never converted.
- Splitting. Labels are split on
- What this tool does not do.
- No Unicode normalisation (NFC).
- No case folding.
- No IDNA2008 / UTS #46 validity checks (disallowed characters, bidi rules, label length limits).
- So it converts strings that a registry would refuse. Use it to inspect names, not to validate registrations.
- Errors. To Unicode fails on malformed Punycode (invalid digits, overflow). To ASCII fails on input that can’t be represented, such as a lone surrogate.
API & MCP
The same logic is available over HTTP and as MCP tools. Unlike this page, these run on the server: see where your data goes.