User Rating 0.0
Total Usage 0 times
0 characters
0 characters
Is this tool helpful?

Your feedback helps us improve.

About

Internationalized Domain Names (IDN) encode non-ASCII characters into a compatible ASCII form called Punycode, governed by RFC 3492. A domain like münchen.de becomes xn--mnchen-3ya.de through the Bootstring algorithm. Misreading or mistyping a Punycode label leads to DNS resolution failure or, worse, exposes users to homograph phishing attacks where visually identical Unicode characters redirect to malicious hosts. This tool implements the full RFC 3492 encode/decode pipeline locally in your browser. No data leaves your machine. It processes each domain label independently, preserving ASCII-only labels and converting only those that require it. The tool approximates standard IDNA2008 behavior but does not enforce full IDNA lookup-context rules such as Bidi or ContextJ validation.

punycode unicode IDN domain name converter xn-- decoder internationalized domain names RFC 3492 bootstring

Formulas

The Punycode Bootstring algorithm (RFC 3492) separates a Unicode label into its Basic (ASCII) and Non-Basic code points. Basic code points are copied directly, followed by a delimiter -. Non-basic code points are encoded as variable-length integers representing insertion positions via delta encoding.

The bias adaptation function controls digit thresholds:

adapt(delta, numpoints, firsttime) bias

Initial parameters per RFC 3492:

n = 128 (initial code point), delta = 0, bias = 72, base = 36, tmin = 1, tmax = 26, skew = 38, damp = 700

The threshold t at digit position k is clamped:

t = clamp(k bias, tmin, tmax)

Delta adaptation step:

delta = deltadamp (first time) or delta2 (subsequently), then delta += deltanumpoints, iterated while delta > (base tmin) × tmax2

Where n is the current code point threshold, delta is the accumulated insertion offset, bias controls variable-length integer thresholds, base is the digit radix (36), tmin/tmax clamp the threshold range, skew and damp tune the adaptation curve, and numpoints is the count of code points processed so far.

Reference Data

Unicode DomainPunycode EquivalentScriptCountry/Use
münchen.dexn--mnchen-3ya.deLatin (ü)Germany
bücher.comxn--bcher-kva.comLatin (ü)Germany
café.frxn--caf-dma.frLatin (é)France
ñandú.comxn--and-6ma2c.comLatin (ñ, ú)Spanish
例え.jpxn--r8jz45g.jpCJK (Kanji + Hiragana)Japan
中文.comxn--fiq228c.comCJK (Chinese)China
рф.comxn--p1acf.comCyrillicRussia
مثال.comxn--mgbh0fb.comArabicArabic-speaking
παράδειγμα.grxn--hxajbheg2az3al.grGreekGreece
도메인.한국xn--hq1bm8jm9l.xn--3e0b707eHangulSouth Korea
คน.comxn--m3c.comThaiThailand
उदाहरण.भारतxn--p1b6ci4b4b3a.xn--h2brj9cDevanagariIndia
québec.caxn--qubec-9ua.caLatin (é)Canada
gößen.dexn--gen-esa4e.deLatin (ö, ß)Germany
straße.atxn--strae-oqa.atLatin (ß)Austria
ελ.grxn--qxam.grGreekGreece
mañana.comxn--maana-pta.comLatin (ñ)Spanish
名がドメイン.comxn--v8jxj3d1dzdz08w.comCJK + Hiragana + KatakanaJapan
ação.brxn--ao-0jab.brLatin (ã, ç)Brazil
dömäin.sexn--dmin-moa0i.seLatin (ö, ä)Sweden

Frequently Asked Questions

The RFC 3492 decoder will encounter a digit value that causes the insertion index to exceed the current string length, or the delta overflow will push the code point beyond the valid Unicode range (U+10FFFF). In either case, the converter reports a decode error for that specific label and leaves it unconverted so you can identify and fix the malformed segment.
No. This tool implements the Punycode codec layer (RFC 3492) faithfully but does not enforce the higher-level IDNA2008 protocol rules such as bidirectional text constraints (RFC 5893), contextual rules for joining characters, or the mapping/normalization steps from UTS #46. For production DNS registration, apply IDNA2008 validation separately.
Browsers apply Unicode normalization (NFC) and IDNA mapping tables before encoding. Characters like the German sharp-s (ß) may be mapped to "ss" under IDNA2003 but preserved under IDNA2008. This tool encodes the exact code points you provide without applying IDNA mapping, which gives you the raw Bootstring output. Differences indicate a mapping-layer transformation, not an encoding error.
Indirectly. By decoding a Punycode domain to Unicode, you can visually inspect the actual characters. For example, xn--pple-43d.com decodes to reveal a Cyrillic "а" (U+0430) instead of Latin "a" (U+0061) in what appears to be "apple.com". Always decode suspicious xn-- domains before trusting them.
DNS labels are limited to 63 octets (bytes) per RFC 1035. Since Punycode output is ASCII, each character is one octet, so the encoded label including the "xn--" prefix must not exceed 63 characters. This converter does not truncate output but will warn if the result exceeds this limit, as such labels would fail DNS resolution.
The tool splits the input on "." (dot) separators and processes each label independently. Labels that are pure ASCII pass through unchanged. Labels containing any non-ASCII code point are Punycode-encoded with the "xn--" prefix. In decode mode, only labels starting with "xn--" are decoded; others remain as-is. This mirrors standard DNS IDN behavior.