1. Inicio
  2. Herramientas para desarrolladores
  3. Codificar URL

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

  1. Elige Codificar o Decodificar y pega el texto.
  2. 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.
  3. 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

EntradaComponenteURL completaFormulario
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: %2520 es un %20 codificado 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 href el & se escribe &amp;; 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.