User Rating 0.0
Total Usage 0 times
Ready
Char Count (First Line): 0
DNS Valid: -
Is this tool helpful?

Your feedback helps us improve.

About

The Domain Name System (DNS) historically supports only ASCII characters. This limitation prevents the native use of Internationalized Domain Names (IDNs) containing local scripts like Cyrillic, Arabic, Chinese, or Latin diacritics (e.g., ü, ñ). To resolve this, the Internet Engineering Task Force (IETF) defined the Punycode encoding in RFC 3492.

Punycode is a Bootstring encoding syntax that converts Unicode characters into a restrictive ASCII character set (A-Z, 0-9, and hyphen). Network administrators, DevOps engineers, and registrars must use this format when configuring nameservers, bind files, or issuing SSL certificates. Misconfiguration typically results in NXDOMAIN errors or security warning screens. This tool handles the conversion process, including NFC normalization to ensure composite characters (like encoded accents) are processed consistently.

punycode idn dns unicode domain-names ascii encoding

Formulas

Punycode utilizes a generalized variable-length integer implementation to represent Unicode code points within the ASCII space. The encoding process involves separating basic characters from non-basic ones.

{
output = basic_chars + "-" + encode(delta) if non_basic > 0output = basic_chars otherwise

The system enforces strict constraints on the label length after conversion to comply with DNS protocol limits.

length(label) 63 octets

The state machine for the encoding maintains a bias parameter i which adjusts based on the proximity of code points in the string.

i i + digit × w

Reference Data

Script / RegionUnicode TLDPunycode (ASCII)Language Context
Global (Test).test.testStandard ASCII
Arabic.شبكة.xn--ngbc5azdWeb/Network
Arabic (Egypt).مصر.xn--wgbh1cEgypt
Arabic (UAE).امارات.xn--mgbaam7a8hUnited Arab Emirates
Chinese (Simplified).中国.xn--fiqs8sChina
Chinese (Traditional).台灣.xn--kpry57dTaiwan
Chinese (Game).游戏.xn--unup4yGames
Cyrillic (Russia).рф.xn--p1aiRussian Federation
Cyrillic (Serbia).срб.xn--90a3acSerbia
Cyrillic (Ukraine).укр.xn--j1amhUkraine
Cyrillic (Bulgaria).бг.xn--90aeBulgaria
Greek.ελ.xn--qxamGreece
Hebrew.קום.xn--9dbq2aCommercial (com)
Hindi (India).भारत.xn--h2brj9cIndia
Japanese.jp.jp(ASCII, often uses Kanji subdomains)
Japanese (Example).みんな.xn--q9jyb4cEveryone
Korean.한국.xn--3e0b707eKorea
Latin (Euro).eu.euSupports latin-1 IDNs
Thai.ไทย.xn--o3cw4hThailand
Emoji (Snowman)xn--n3hMisc Symbol
Emoji (Pizza)🍕xn--vi9hFood

Frequently Asked Questions

The "xn--" prefix is the ACE (ASCII Compatible Encoding) prefix. It signals to DNS software, browsers, and email clients that the following string is a Punycode-encoded Unicode sequence, not a standard random ASCII string.
Search engines like Google generally treat the Punycode version and the Unicode version as the same domain. However, correct implementation is critical. If your server is not configured to respond to the Punycode version, bots may fail to crawl the site, resulting in de-indexing.
Punycode applies strictly to the domain name (hostname) portion of a URL. The path and query parameters (everything after the first single slash) should be UTF-8 percent-encoded (e.g., %20), not Punycode encoded. This tool parses full URLs to convert only the hostname.
The DNS protocol mandates that a single label (the part between dots) cannot exceed 63 octets (bytes). Since Punycode adds the "xn--" prefix and expands characters, a Unicode domain appearing short (e.g., 10 emojis) might exceed this limit after conversion.
Unicode can represent the same character in multiple ways (e.g., "ñ" as a single code point or as "n" + "tilde"). NFC (Normalization Form C) canonizes these into a single standard form before encoding, ensuring that identical-looking domains resolve to the same Punycode string.