Codificar y decodificar URL (URL encode / decode)
Codifica y decodifica URL y query strings con codificación porcentual, y separa una URL en partes. Todo se ejecuta localmente: no se sube nada.
- Entrada
- Text · URL
- Salida
- Encoded · decoded · parsed parameters
Para un valor o segmento de ruta: se codifican & = ? / #.
Texto
40 caracteres
Codificado
76 caracteres
Caf%C3%A9%20%26%20cr%C3%A8me%3F%2050%25%20off%20%2F%20today%20only%20%23deal
URL encode y decode, y un analizador para la URL completa
Este codificador y decodificador de URL convierte texto a y desde codificación porcentual mientras escribes, en las tres variantes que de verdad usa la web. El decodificador aguanta la entrada rota de la que están llenos los logs reales —un % suelto o una secuencia UTF-8 cortada— y te dice exactamente dónde está. Un analizador de URL separa cualquier dirección en sus partes y te deja editar la query string como una tabla. Todo se ejecuta localmente en tu navegador.
Cómo codificar o decodificar una URL
- Elige Codificar, Decodificar o Analizar URL.
- Al codificar, elige el método: Componente para un único valor de query o segmento de ruta, URL completa para arreglar una dirección sin romperla, o Formulario para que coincida con lo que envía un formulario HTML.
- Al decodificar, decide si
+significa un espacio. Lo significa en las query strings y en los cuerpos de formulario; no en las rutas. - Copia el resultado o pásalo de nuevo a la entrada para comprobar la ida y vuelta. En Analizar URL, edita, añade o quita parámetros de query y la URL se reconstruye por ti.
Qué hace la codificación porcentual
Una URL solo puede contener un conjunto limitado de caracteres ASCII, y varios de ellos tienen una función: / separa los segmentos de ruta, ? inicia la query, & y = separan los parámetros y # inicia el fragmento. Cualquier otro carácter, o uno reservado usado como dato, se escribe como % seguido de dos dígitos hexadecimales por cada uno de sus bytes UTF-8. Un espacio se convierte en %20, & en %26 y é, que son dos bytes en UTF-8, en %C3%A9.
Equivocarse aquí es un error clásico: una búsqueda de "sal & pimienta" que llega solo como "sal ", porque el & sin codificar inició un parámetro nuevo.
¿encodeURIComponent, encodeURI o codificación de formulario?
- Componente (encodeURIComponent)
- Codifica todo excepto letras, dígitos y - _ . ! ~ * ' ( ). Úsalo para una pieza de una URL: un valor de query, un segmento de ruta, una URL de redirección pasada como parámetro. Es la opción correcta nueve de cada diez veces.
- URL completa (encodeURI)
- Deja intactos los caracteres que dan estructura a una URL (: / ? # & = etc.) y codifica el resto, como espacios y letras no ASCII. Úsalo con una dirección completa que quieras hacer válida, nunca con un único valor: no codificará los & o = que contenga.
- Formulario (application/x-www-form-urlencoded)
- Lo que envían los navegadores al enviar un formulario y lo que produce URLSearchParams: los espacios se convierten en + y solo las letras, los dígitos y * - . _ se quedan como están.
Decodificación, signos + y secuencias mal formadas
El carácter + significa un espacio solo en la query string y en los cuerpos de formulario; en una ruta es un signo más literal. Por eso la decodificación tiene un interruptor + como espacio en lugar de adivinar. Si un valor decodificado muestra signos más donde debería haber espacios, actívalo.
decodeURIComponent de JavaScript lanza "URI malformed" en el primer % que no va seguido de dos dígitos hexadecimales —basta con "100%"— o ante una secuencia de bytes que no es UTF-8 válido, como un texto codificado en porcentaje como Latin-1 (%E9 para é). Este decodificador sigue adelante: decodifica todo lo válido, deja las partes rotas como estaban y enumera cada una con su línea y columna para que puedas encontrarla en una línea de log larga.
Leer y editar una URL
El analizador muestra el protocolo, las credenciales, el host, el puerto, la ruta, la query y el fragmento de cualquier URL absoluta, decodificados para que se lean bien. Los parámetros de query aparecen como una tabla clave/valor: cambia un valor, añade un parámetro o elimina uno, y la URL completa se reconstruye con la codificación correcta. Es una forma rápida de quitar parámetros de seguimiento como utm_source o de ver adónde apunta realmente un enlace de redirección largo.
Para otras codificaciones, consulta el codificador Base64 y el codificador de entidades HTML, que escapa texto para HTML y no para URL.
Preguntas frecuentes
- ¿Qué es la codificación de URL?
- La codificación de URL, o codificación porcentual, sustituye los caracteres no permitidos o con un significado especial en una URL por % seguido del valor hexadecimal de cada uno de sus bytes UTF-8. Un espacio se convierte en %20 y & en %26.
- ¿Un espacio se codifica como %20 o como +?
- Ambos son correctos en sitios distintos. %20 funciona en todas partes. + significa un espacio solo en query strings y envíos de formularios, que es lo que produce la codificación de formulario; en una ruta, + es un signo más literal.
- ¿Qué diferencia hay entre encodeURI y encodeURIComponent?
- encodeURIComponent codifica los caracteres reservados como / ? & = y #, así que sirve para un único valor dentro de una URL. encodeURI los deja intactos, así que sirve para una URL completa cuya estructura debe conservarse.
- ¿Por qué me sale el error "URI malformed"?
- La entrada contiene un % que no va seguido de dos dígitos hexadecimales, o bytes codificados en porcentaje que no son UTF-8 válido. Esta herramienta decodifica el resto de todos modos y muestra dónde está cada problema.
- ¿Cómo decodifico los parámetros de una URL?
- Pega la URL en Analizar URL para ver cada parámetro de query decodificado en una tabla, o pega solo la query string en Decodificar con + como espacio activado.
- ¿Qué caracteres no hace falta codificar en una URL?
- Las letras de la A a la Z y de la a a la z, los dígitos y - . _ ~ son siempre seguros. Todo lo demás debe codificarse cuando es un dato y no parte de la estructura de la URL.
- ¿Se envía mi URL a algún sitio?
- No. La codificación, la decodificación y el análisis se ejecutan en tu navegador, así que las URL con tokens o datos personales nunca salen de tu dispositivo.