Hasta hace relativamente pocos años (principios de la década de los 2000), los nombres de dominio solamente podían estar formados por las letras del alfabeto latino, números del 0 al 9 y guiones. Este sistema, denominado ASCII y basado principalmente en los teclados de lengua inglesa, suponía una gran limitación para los usuarios con alfabetos distintos al inglés.
Como consecuencia, surgieron los dominios IDN (nombres de dominio internacionalizados o, en inglés, Internationalized Domain Names). En lugar de basarse en caracteres ASCII, los dominios IDN se basan en caracteres Unicode, un estándar mucho más amplio.
Para poder traducir los caracteres Unicode de forma que sean compatibles con los nombres de red, se utiliza el código Punycode. Este código empieza siempre con los caracteres "xn--", seguidos del nombre de dominio, un guion y, por último, la traducción de los caracteres especiales utilizados en el dominio. Por ejemplo:
Nombre de dominio en UTF8: españa.es
Punycode del dominio: xn--espaa-rta.es
Así, los dominios IDN pueden contener caracteres especiales que varían en función de la extensión de dominio contratada. Por ejemplo, al contratar un dominio .es podremos acentuar las vocales (también con acento grave) y emplear la ñ, la ç y el punto medio.