Codificar y Decodificar URL Online
Convierte caracteres especiales en su forma segura para URL y al revés. El único que codifica el dominio con Punycode en vez de romperlo.
¿Qué es la codificación de URL?
La codificación de URL, también llamada codificación porcentual, sustituye los caracteres que no pueden viajar tal cual en una dirección web por un signo de porcentaje seguido de dos dígitos hexadecimales. El espacio se convierte en %20 y la eñe, en %C3%B1.
Hace falta porque una URL solo admite un juego reducido de caracteres: letras sin tilde de la A a la Z, cifras y unos pocos símbolos. Todo lo demás —espacios, tildes, la ñ, los emojis, y también los símbolos que tienen un significado estructural como ? o &— necesita codificarse para no romper la dirección ni cambiar su sentido.
Los dos dígitos que van detrás del % son el valor del byte en UTF-8. Por eso un carácter puede ocupar más de una secuencia: la ñ son dos bytes y se escribe %C3%B1, y el símbolo del euro son tres, %E2%82%AC.
Los tres modos y cuándo usar cada uno
«¿Cuál elijo?» es la duda de verdad, y depende de qué estés codificando: un trozo suelto o una dirección entera.
| Modo | Para qué | Qué hace con / ? & |
|---|---|---|
| Componente | El valor de un parámetro | Los codifica |
| URL completa | Una dirección ya montada, sin dominios con tildes | Los respeta |
| URL inteligente | Una dirección entera, con dominio incluido | Los respeta y trata el dominio aparte |
Un ejemplo del primero: si quieres pasar café & té como valor de un parámetro, tiene que ir en modo componente. Si dejaras el & sin codificar, el servidor entendería que empieza otro parámetro y tu valor se cortaría en «café».
Por qué el dominio no se codifica con %
Aquí es donde casi todas las herramientas se equivocan, y el resultado no es un detalle estético: devuelven una dirección que no funciona.
El sistema de nombres de dominio no entiende la codificación porcentual. Los dominios con caracteres no ASCII se codifican con Punycode, un algoritmo completamente distinto que produce nombres con el prefijo xn--. La ruta y la consulta, en cambio, sí van en porcentual. Son dos mecanismos para dos partes de la misma dirección.
La primera dirección no resuelve: ningún servidor de nombres sabe qué es espa%C3%B1a.com. La segunda sí, y es la que tu navegador genera por dentro cuando escribes españa.com en la barra: te muestra la versión bonita, pero consulta la versión xn--.
El modo URL inteligente de esta herramienta hace ese reparto y te enseña el desglose parte por parte. También funciona al revés: si pegas una dirección con xn--, te la devuelve legible. Tienes más sobre este tema en la página de la letra ñ, donde explicamos Punycode con más ejemplos.
La ñ y las tildes en una URL
Estos son los valores reales de los caracteres que más aparecen al escribir en español y en portugués. La columna de bytes explica por qué unos ocupan más que otros:
| Carácter | Codificado | Bytes |
|---|---|---|
| espacio | %20 | 1 |
| ñ | %C3%B1 | 2 |
| á | %C3%A1 | 2 |
| ü | %C3%BC | 2 |
| ç | %C3%A7 | 2 |
| ã | %C3%A3 | 2 |
| € | %E2%82%AC | 3 |
| & | %26 | 1 |
| / | %2F | 1 |
| ? | %3F | 1 |
| # | %23 | 1 |
| + | %2B | 1 |
| = | %3D | 1 |
| @ | %40 | 1 |
Calculado con el mismo motor que usa la herramienta.
Que una URL funcione con eñes y tildes no significa que convenga usarlas. Al copiarla se ve llena de %C3%B1, ocupa más y algunos sistemas antiguos la parten mal. Para direcciones nuevas, lo habitual es convertir el título a un slug sin tildes: para eso está el generador de slug.
Qué caracteres se codifican y cuáles no
La norma que rige la codificación de URL es el RFC 3986, y divide los caracteres en tres grupos. Entender la división ahorra la mayoría de los sustos.
No reservados: nunca se codifican. Son las letras de la A a la Z en ambas cajas, las cifras del 0 al 9 y cuatro signos: -, _, . y ~. Cualquier herramienta que te los codifique está haciendo trabajo de más, y el resultado, aunque válido, queda más largo y menos legible.
Reservados: se codifican según dónde estén. Aquí entran : / ? # [ ] @ y también ! & ' ( ) * + , ; =. Tienen un significado estructural, así que hay que codificarlos cuando forman parte de un valor y dejarlos en paz cuando actúan de separadores. Es exactamente la diferencia entre el modo componente y el modo URL completa.
El resto: siempre se codifica. Espacios, tildes, la ñ, los emojis y cualquier carácter fuera del ASCII.
Hay un detalle que casi ninguna herramienta menciona y que conviene conocer al codificar una URL desde JavaScript: la función encodeURIComponent deja sin tocar cinco caracteres que el RFC 3986 sí considera reservados, que son !, *, ', ( y ). Lo comprobamos ejecutándolo, no de memoria. En la práctica casi nunca da problemas, pero algunos servidores y esquemas de firma de API los tratan de otro modo, y entonces aparece un error que cuesta encontrar precisamente porque la dirección parece correcta.
%20 o +: cuál corresponde
Los dos representan un espacio, pero no en el mismo sitio, y confundirlos da errores difíciles de ver.
%20 vale siempre. Es la codificación del espacio en cualquier parte de una URL: la ruta, la consulta o el fragmento.
+ solo vale dentro de los datos de un formulario enviados con el tipo application/x-www-form-urlencoded, que es lo que hace un formulario HTML clásico. Fuera de ahí, un + es un signo más literal, no un espacio.
La consecuencia práctica: si alguien busca C++ y tu sistema interpreta los + como espacios, recibirás C seguido de dos espacios. Por eso el signo más literal se codifica como %2B cuando importa distinguirlo.
La casilla de la herramienta te deja generar cualquiera de las dos formas. Si no sabes cuál necesitas, deja %20.
Errores frecuentes
Codificar dos veces
Si codificas algo que ya estaba codificado, el % se convierte en %25 y %C3%B1 acaba como %25C3%25B1. El servidor descodifica una vez y recibe el texto literal en lugar de la ñ. Ver %25 en una dirección es casi siempre esta señal.
Usar el modo componente con una URL entera
Codifica también :// y las barras, y la dirección deja de ser una dirección: se convierte en un texto que solo sirve como valor de un parámetro. Es correcto si eso es justo lo que quieres —por ejemplo, una URL de retorno dentro de otra—, pero no para publicar el enlace.
Codificar el dominio en porcentual
El error del apartado anterior, y el más silencioso: la dirección parece razonable y no resuelve. El dominio se codifica con Punycode.
Olvidar la almohadilla
El símbolo # marca el comienzo del fragmento, así que todo lo que va detrás no llega al servidor. Si forma parte de un valor, tiene que ir como %23.
Preguntas frecuentes
¿Es gratis y hay que registrarse?
¿Qué diferencia hay entre los tres modos?
¿Por qué el dominio no se codifica con %?
¿Cómo se codifica la ñ en una URL?
¿Uso %20 o + para los espacios?
¿Qué es la doble codificación y por qué falla?
Herramientas relacionadas
Generador de Slug
Convierte un título en una URL limpia, sin tildes ni ñ.
Letra Ñ
La ñ en dominios, Punycode y doble codificación.
Codificar Base64
Codifica y decodifica en Base64 con UTF-8 correcto.
Texto a Binario
Convierte texto a binario y al revés, byte a byte.
Simulador de SERP
Comprueba si Google va a cortar tu título y tu URL.
Limpiar Texto
Quita caracteres invisibles y formato de un tirón.