Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)

Document Type Expired Internet-Draft (individual in int area)
Author Adam Costello 
Last updated 2005-05-26 (latest revision 2004-04-15)
Stream Internet Engineering Task Force (IETF)
Intended RFC status Proposed Standard
Expired & archived
plain text pdf htmlized bibtex
Stream WG state (None)
Document shepherd No shepherd assigned
IESG IESG state Expired (IESG: Dead)
Action Holders
Consensus Boilerplate Unknown
Telechat date
Responsible AD Scott Hollenbeck
Send notices to phoffman@imc.org, paf@cisco.com, amc+q3tovu@nicemice.net, Marc.Blanchet@hexago.com

This Internet-Draft is no longer active. A copy of the expired Internet-Draft can be found at


Punycode is a simple and efficient transfer encoding syntax designed for use with Internationalized Domain Names in Applications (IDNA). It uniquely and reversibly transforms a Unicode string into an ASCII string. ASCII characters in the Unicode string are represented literally, and non-ASCII characters are represented by ASCII characters that are allowed in host name labels (letters, digits, and hyphens). This document defines a general algorithm called Bootstring that allows a string of basic code points to uniquely represent any string of code points drawn from a larger set. Punycode is an instance of Bootstring that uses particular parameter values specified by this document, appropriate for IDNA.


Adam Costello (amc@cs.berkley.edu)

(Note: The e-mail addresses provided for the authors of this Internet-Draft may no longer be valid.)