#idna #punycode #url #parser #domain


IDNA (Internationalizing Domain Names in Applications) and Punycode

7 releases

0.2.0 Jul 23, 2019
0.1.5 Jul 6, 2018
0.1.4 Jul 13, 2017
0.1.2 May 22, 2017
0.0.0 Mar 27, 2016
Download history 66888/week @ 2019-04-09 57685/week @ 2019-04-16 59678/week @ 2019-04-23 58467/week @ 2019-04-30 61216/week @ 2019-05-07 66489/week @ 2019-05-14 64659/week @ 2019-05-21 71441/week @ 2019-05-28 75288/week @ 2019-06-04 73258/week @ 2019-06-11 74719/week @ 2019-06-18 72064/week @ 2019-06-25 64420/week @ 2019-07-02 69194/week @ 2019-07-09 73335/week @ 2019-07-16

290,239 downloads per month
Used in 3,905 crates (24 directly)


17K SLoC


Travis build Status Appveyor build status

URL library for Rust, based on the URL Standard.


Please see UPGRADING.md if you are upgrading from 0.x to 1.x.


This Rust crate implements IDNA per the WHATWG URL Standard.

It also exposes the underlying algorithms from Unicode IDNA Compatibility Processing (Unicode Technical Standard #46) and Punycode (RFC 3492).

Quoting from UTS #46’s introduction:

Initially, domain names were restricted to ASCII characters. A system was introduced in 2003 for internationalized domain names (IDN). This system is called Internationalizing Domain Names for Applications, or IDNA2003 for short. This mechanism supports IDNs by means of a client software transformation into a format known as Punycode. A revision of IDNA was approved in 2010 (IDNA2008). This revision has a number of incompatibilities with IDNA2003.

The incompatibilities force implementers of client software, such as browsers and emailers, to face difficult choices during the transition period as registries shift from IDNA2003 to IDNA2008. This document specifies a mechanism that minimizes the impact of this transition for client software, allowing client software to access domains that are valid under either system.