Codificador IDNA
münchen.example.com se convierte en xn--mnchen-3ya.example.com: cada etiqueta con tildes u otra escritura recibe su forma xn--, y las etiquetas en ASCII simple quedan igual. A la inversa, decodifique un nombre de host leído en un registro o en un correo. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Texto
- münchen.example.com
- Modo de cálculo
- Encode
- Resultado
- xn--mnchen-3ya.example.com
- ASCII
- xn--mnchen-3ya.example.com
- Unicode
- münchen.example.com
- Cantidad de etiquetas
- 3
Los nombres de dominio internacionalizados permiten que marcas, ciudades y nombres propios aparezcan en guiones nativos en la red pública, pero el sistema de nombres de dominio sigue transportando etiquetas como codificaciones compatibles con ASCII. IDNA (Internationalized Domain Names in Applications) asigna cada etiqueta Unicode U-label a una A-label que empieza por xn-- y lleva Punycode RFC 3492, y revierte el mapeo para que los operadores puedan leer de nuevo el nombre previsto. Esta capacidad acepta un nombre de host completo con varias etiquetas —no solo una— y convierte en ambos sentidos con un campo mode sencillo: encode para ToASCII, decode para ToUnicode. Las etiquetas ASCII puras pasan sin cambios; los nombres mixtos, como una etiqueta de ciudad más un TLD clásico, se tratan etiqueta a etiqueta.
Codificar un hostname Unicode a ASCII IDNA (ToASCII / xn--)
El motor parte el hostname por puntos, pliega cada etiqueta de forma independiente del locale y procesa las etiquetas por separado, de modo que un nombre mixto con una etiqueta izquierda no ASCII junto a una derecha ASCII se convierte sin forzar toda la cadena por un único codificador. Las etiquetas LDH ASCII puras pasan sin cambios y sin prefijo xn--, en línea con la práctica IDNA para nombres que nunca necesitaron internacionalización.
Cuando una etiqueta contiene algún punto de código no ASCII, el motor ejecuta el codificador Punycode RFC 3492 y antepone xn-- para producir la A-label usada en archivos de zona DNS, SAN de certificados, reglas de host de proxy inverso y pantallas tipo WHOIS. Las etiquetas que ya parecen formas ACE se validan con un viaje de ida y vuelta decode-and-re-encode, de modo que una cadena xn-- editada a mano falla de forma cerrada en lugar de confiarse a ciegas.
Entradas idénticas producen siempre salidas idénticas porque el camino es aritmética pura, sin red, sin sal aleatoria y sin reloj de pared. Use esta ruta cuando necesite un hostname ASCII seguro para pegar en una lista de migración, una línea de zona, una entrada SAN ACME o un ticket de soporte que deba sobrevivir a sistemas que solo aceptan hostnames ASCII.
DNS impone un límite de sesenta y tres octetos por etiqueta y de doscientos cincuenta y tres caracteres en el hostname ASCII ensamblado; este motor comprueba ambos para que los nombres internacionales demasiado grandes fallen pronto en lugar de generar cadenas no desplegables. La notación FQDN con punto final se conserva cuando está presente, mientras se rechazan puntos iniciales, puntos consecutivos, esquemas, rutas, puertos e información de usuario para que la página SEO se centre en la conversión de dominios bare.
Qué puede hacer con ella
Preparación de zona DNS y certificados
Codifique hostnames de marca o ciudad Unicode a forma ASCII xn-- antes de escribir archivos de zona, listas SAN ACME o reglas de host de proxy inverso que solo aceptan ASCII.
Soporte y legibilidad de registros
Decodifique hostnames ACE de cabeceras de correo, registros de transparencia de certificados y sistemas de tickets a Unicode legible para agentes y clientes.
Preguntas frecuentes
¿Cómo convierto un dominio Unicode a ASCII IDNA?
El campo result devuelve la forma ASCII como xn--mnchen-3ya.example.com.
¿Cómo decodifico un hostname xn-- de vuelta a Unicode?
Fije mode a decode y ponga el hostname ACE en text. El campo result devuelve la forma Unicode cuando cada etiqueta es válida.
¿Qué ocurre con una etiqueta IDNA inválida?
El mensaje indica la posición de la etiqueta y el motivo (cuerpo xn-- vacío, Punycode incorrecto, etiquetas vacías, límites de longitud). Los fallos no se cobran.
¿Es gratuito el codificador de dominios IDNA?
La herramienta del navegador se ejecuta gratis en su dispositivo.
¿Puedo convertir un hostname completo multi-etiqueta?
Sí. A diferencia de herramientas Punycode de una sola etiqueta, esta capacidad acepta dominios multi-etiqueta y convierte cada una bajo reglas IDNA, devolviendo las vistas ascii y unicode.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/enc/idna \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"münchen.example.com"}'const res = await fetch("https://api.kit.forhosting.com/enc/idna", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "münchen.example.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/idna",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "münchen.example.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/idna", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"münchen.example.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"münchen.example.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/idna", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "münchen.example.com"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.idna",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Cuerpos ACE vacíos, Punycode truncado, caracteres ilegales, puntos consecutivos, esquemas, rutas y violaciones de longitud DNS fallan con invalid_input que indica el índice de la etiqueta defectuosa en lugar de corromper la cadena en silencio.
Codificar un hostname Unicode a ASCII IDNA (ToASCII / xn--)
Envíe un cuerpo JSON con el campo de cadena obligatorio text fijado a un nombre de dominio internacionalizado completo —por ejemplo una marca de ciudad con diéresis seguida de un segundo nivel y un TLD clásicos— y deje mode en su valor predeterminado encode o fíjelo explícitamente a encode. La respuesta incluye result (el hostname ASCII completo), ascii (la misma forma de cable), unicode (la vista Unicode plegada), label_count, has_ace true si alguna etiqueta usó ACE, mode encode y method idna para que las pruebas puedan fijar cada campo.
Decodificar hostnames ACE a Unicode e informar etiquetas inválidas
Fije mode a decode y ponga en text un hostname ASCII o ACE mixto como xn--mnchen-3ya.example.com. El motor recorre cada etiqueta, quita el prefijo xn-- cuando existe, valida que el cuerpo use solo el alfabeto básico de letras, dígitos y guiones internos, y ejecuta el decodificador RFC 3492 para recuperar puntos de código Unicode —incluidos caracteres del plano suplementario representados con pares sustitutos en cadenas JavaScript—. Las etiquetas ASCII puras no ACE pasan en decode, y las etiquetas Unicode ya presentes en un hostname mixto se aceptan y se rederivan a ASCII en el campo ascii, de modo que la respuesta ofrece siempre ambas vistas. Prefiera esta capacidad cuando la intención de búsqueda sea un codificador o decodificador de dominios IDNA para hostnames completos; los experimentos de cuerpo Punycode de una sola etiqueta y la resolución DNS en vivo pertenecen a otras herramientas. Tras decodificar una etiqueta, la vuelve a codificar y exige un viaje de ida y vuelta exacto frente al cuerpo, de modo que cadenas ACE truncadas o editadas a mano fallen cerradas con invalid_input en lugar de devolver glifos plausibles pero incorrectos. Cuerpos vacíos tras xn--, caracteres ilegales como signos de puntuación, desbordamientos, etiquetas vacías por puntos consecutivos y etiquetas que superan los límites de longitud DNS generan un mensaje invalid_input descriptivo que incluye la posición de etiqueta en base uno, para que las herramientas masivas puedan resaltar el segmento defectuoso. Un decode correcto devuelve result y unicode como forma U-label legible, ascii como forma de cable, label_count, has_ace true si hubo alguna ACE, mode decode y method idna. La validación fallida no se cobra en la API prepago tras el rechazo del motor, lo que mantiene barato el decode exploratorio de líneas de log sospechosas y protege el saldo frente a éxitos silenciosos con basura.
Uso de la API, precios, flujos DNS y límites prácticos
Procese hostnames completos en una sola llamada: el diseño multi-etiqueta es intencional para que el SEO y el producto coincidan con «codificador de dominios IDNA» en lugar de obligar a los clientes a partir y reunir etiquetas. No envíe URL completas: quite primero el esquema y la ruta, y convierta solo el hostname bare para que el contrato siga estrecho y los mensajes de error sean accionables. Cuando falle una etiqueta, corríjala y reenvíe; nunca se devuelve éxito parcial, lo que mantiene simple el código del cliente y evita que hostnames a medio convertir se filtren al DNS de producción. Utilice el codificador de dominios IDNA gratuito en el navegador para guías de soporte, demos de aula y comprobaciones puntuales de hostname sin instalar trucos de OpenSSL s_client ni runtimes de lenguaje. Use la API prepago de KIT cuando un backend, panel de registrador, trabajo de automatización de certificados, puerta de correo o SDK necesite el mismo paso encode o decode con saldo a $0.002 por ítem correcto; los fallos de validación nunca consumen saldo tras el rechazo del motor. Un flujo típico codifica un hostname de marca Unicode antes de escribir A-labels en una plantilla de zona o lista server_name de proxy inverso, y luego decodifica nombres ACE copiados de cabeceras de correo, registros de transparencia de certificados o asuntos de tickets para que los operadores lean las U-labels previstas. Los autores de SDK pueden mapear el campo result a un botón de copiar, mientras ascii, unicode, label_count y has_ace hacen autoexplicativos los ejemplos OpenAPI para quien aprende IDNA por primera vez.
Casos de integración
Documentación y comprobaciones golden de CI
Fije fixtures de encode y decode para nombres IDNA multi-etiqueta de modo que muestras de documentación y pruebas de integración continua fallen rápido si el manejo ACE se desvía.