Codificar y decodificar URL
Codifica texto para usarlo de forma segura en una URL (percent-encoding) o decodifica direcciones llenas de %20, %C3%B1 y similares. Elige entre codificar un parámetro, una URL completa o datos de formulario.
Cómo usar el codificador de URL
- Elige Codificar o Decodificar y pega el texto.
- Selecciona el tipo: Componente para el valor de un parámetro (
?q=…) o un segmento de ruta; URL completa si quieres arreglar una dirección entera sin romper su estructura; Formulario para imitar lo que envía un<form>HTML. - Copia el resultado. Si al decodificar sigue habiendo
%XX, la herramienta te avisa de una posible doble codificación.
Cómo funciona el percent-encoding
Una URL solo puede contener un conjunto limitado de caracteres ASCII (RFC 3986). Cualquier otro carácter se convierte a sus bytes UTF-8 y cada byte se escribe como % seguido de dos dígitos hexadecimales. La ñ, por ejemplo, ocupa dos bytes en UTF-8 (C3 B1), así que se codifica como %C3%B1.
Los caracteres no reservados nunca se codifican: letras A–Z a–z, dígitos y - _ . ~. Los reservados (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) tienen función estructural: se dejan tal cual cuando cumplen esa función y se codifican cuando forman parte de un dato.
Diferencias entre los tres modos
| Entrada | Componente | URL completa | Formulario |
|---|---|---|---|
| espacio | %20 | %20 | + |
& | %26 | & | %26 |
/ | %2F | / | %2F |
? | %3F | ? | %3F |
% | %25 | %25 | %25 |
á | %C3%A1 | %C3%A1 | %C3%A1 |
€ | %E2%82%AC | %E2%82%AC | %E2%82%AC |
El modo Componente equivale a encodeURIComponent de JavaScript, con un ajuste: también codifica ! ' ( ) * para cumplir estrictamente RFC 3986. El modo URL completa equivale a encodeURI.
Ejemplo práctico
Quieres enlazar a una búsqueda de «tacos & quesadillas». Si escribes /buscar?q=tacos & quesadillas, el servidor interpreta el & como separador y recibe q=tacos y un parámetro vacío llamado quesadillas. Codificando solo el valor como componente obtienes /buscar?q=tacos%20%26%20quesadillas, que llega intacto.
El error contrario también es común: codificar la URL entera como componente produce https%3A%2F%2F…, que ya no funciona como enlace. Codifica cada valor por separado y luego une las piezas. Para revisar los parámetros de una dirección ya montada usa el analizador de URL.
Errores frecuentes
- Doble codificación:
%2520es un%20codificado otra vez (%25=%). Ocurre cuando una librería codifica algo que ya venía codificado. - «+» en lugar de espacio: en la parte de consulta de formularios,
+significa espacio; en una ruta es un+literal. Por eso un Base64 estándar en una URL debe codificarse (+→%2B) o usar la variante URL-safe del codificador Base64. - Secuencias Latin-1: sistemas antiguos codifican la
écomo%E9(Windows-1252) en vez de%C3%A9. Un decodificador UTF-8 lo rechaza; la herramienta te lo indica. - Codificar para HTML no es lo mismo: dentro de un atributo
hrefel&se escribe&; eso son entidades HTML, una capa distinta.
Para generar URL legibles a partir de un título, sin tildes ni símbolos, usa el generador de slugs. Todo se procesa en tu navegador.
Preguntas frecuentes
¿Qué es URL encode o percent-encoding?
Es la forma de escribir en una URL caracteres no permitidos: se convierten a bytes UTF-8 y cada byte se escribe como % más dos cifras hexadecimales. Por ejemplo, un espacio es %20 y la ñ es %C3%B1.
¿El espacio se codifica como %20 o como +?
En rutas y en general, %20. El signo + solo significa espacio en datos de formulario (application/x-www-form-urlencoded), que es lo que generan los formularios HTML en la parte de consulta.
¿Qué diferencia hay entre encodeURI y encodeURIComponent?
encodeURI deja intactos los caracteres que estructuran una URL (: / ? # & =), para usarlo sobre una dirección completa. encodeURIComponent los codifica todos, para valores de parámetros o segmentos de ruta.
¿Qué significa %2520 en una URL?
Que el texto se codificó dos veces: %25 es el signo %, así que %2520 se decodifica primero como %20 y después como un espacio.