Hashito System Free Web Tools / 日本語

Punycode Converter

Convert internationalized domain names to and from xn-- notation. Full URLs are accepted.

Domain name / URL

About Punycode

Punycode and the xn-- prefix

A DNS label may only contain letters, digits and hyphens. To carry domain names written with Unicode characters, RFC 3492 Punycode encodes the label into an ASCII string. An encoded label is marked by the prefix xn--, known as the ACE prefix and defined in RFC 5890.

Conversion happens per label

Punycode applies to one dot separated label at a time. In 日本語.jp the parts are 日本語 and jp; only the non ASCII label becomes xn--wgv71a119e, and jp stays as it is because it is already ASCII. This tool works the same way and lists the result for every label.

The 63 octet limit

A DNS label is limited to 63 octets. What counts is the length after encoding, so a label that looks short in its native script can still exceed the limit once it is converted. This tool measures each converted label and flags any that go over 63.

Case folding and normalization

This tool performs only the RFC 3492 encoding and decoding. It does not apply the UTS 46 mapping step (lowercasing, compatibility normalization, disallowed character checks). Browsers and registries do run that preprocessing, so input containing full width characters or unusual compatibility characters may give a different result there. Check the registry rules before relying on this for registration.

Frequently asked questions

Why does an internationalized domain turn into a string starting with xn--?

DNS labels may only contain letters, digits and hyphens, so characters outside ASCII cannot be registered directly. RFC 3492 Punycode encodes them into an ASCII string, and the prefix xn-- marks the label as encoded. That marker is called the ACE prefix and is defined in RFC 5890.

Why is the conversion done per label?

Punycode is defined to operate on a single dot separated label. For example 日本語.jp is split into 日本語 and jp; only the first label is encoded to xn--wgv71a119e while jp is already ASCII and stays as it is. The domain is not encoded as one whole string.

Is the domain name I enter sent to a server?

No. Both the Punycode encoding and decoding run entirely in JavaScript inside your browser. The domain name or URL you type is never transmitted to or stored on a server.