Convert internationalized domain names to and from xn-- notation. Full URLs are accepted.
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.
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.
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.
Before encoding, the tool applies the main parts of the UTS 46 mapping that browsers use: compatibility normalization (NFKC, which turns full width letters and digits into ASCII), lowercasing, and treating full width and ideographic full stops as label separators. When this changes the input, the Note row shows the before and after. A label that starts with xn-- but contains non-ASCII characters is reported as an error. The remaining UTS 46 rules, such as disallowed character checks, are not applied, so input with unusual characters may still give a different result in a browser. Check the registry rules before relying on this for registration.
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.
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.
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.