IDN Converter

Convert internationalized domain names between Unicode and ASCII (punycode) forms.

  • Runs locally in your browser
  • No upload required

Try it

ASCII (punycode)
xn--bcher-kva.example
Unicode
bücher.example
Already ASCII
no
bücher
xn--bcher-kva
example
example

Supported formats

Input
text
Output
text

Privacy

Runs entirely in your browser. Your input is never uploaded, stored, or sent to a third party.

Processing
In your browser
Privacy level
Browser only

ASCII: xn--bcher-kva.example · Unicode: bücher.example

How it works

  • Split the domain into labels on the dot.
  • Encoded each non-ASCII label as punycode and prefixed it with `xn--`.
  • Decoded any existing `xn--` label back to Unicode for the human-readable form.
  • Punycode (RFC 3492) is the ASCII-compatible encoding used by IDNA; an encoded label always starts with `xn--`.
  • IDNA also applies Unicode normalisation, case folding and script checks; this tool performs the punycode step and leaves full IDNA validation to the registrar or resolver.

Methodology

  1. Split on the dot into labels.
  2. Encode each non-ASCII label with the RFC 3492 punycode algorithm and prefix `xn--`.
  3. Decode any `xn--` label back to Unicode.
  4. Report both the ASCII and Unicode forms with a per-label breakdown.

Usage

  1. Enter a domain name in Unicode (bücher.example) or ASCII (xn--bcher-kva.example).
  2. Read both forms and the per-label breakdown.
  3. Use the ASCII form in DNS records and the Unicode form for display.

Examples

These are examples, not current values: they use fixed inputs, while the interactive tool computes live results in your browser.

German umlaut

jsonSelect to copy
{
  "domain": "bücher.example"
}

Punycode input

jsonSelect to copy
{
  "domain": "xn--bcher-kva.example"
}

Plain ASCII domain

jsonSelect to copy
{
  "domain": "example.com"
}

Limitations

Unicode names on an ASCII DNS

The DNS protocol is ASCII-only, so internationalized domain names are encoded with Punycode (RFC 3492) and prefixed with `xn--`. `bücher.example` becomes `xn--bcher-kva.example`.

Punycode is only one part of IDNA, which also normalises Unicode and enforces script and bidi rules. This tool converts the punycode step so you can put the right name in a DNS record or certificate.

Frequently asked questions

Why does my domain become xn--?
DNS only carries ASCII, so a non-ASCII label is punycode-encoded and prefixed with `xn--`. That is the ASCII-compatible form of an internationalized name.
Is the punycode form what I see in the browser?
Browsers usually show the Unicode form, but the DNS query and certificates use the `xn--` ASCII form.

Sources

  1. RFC 3492: Punycode, a Bootstring encoding of Unicode — IETF
  2. RFC 5890: Internationalized Domain Names for Applications — IETF