Cómo se usa
- 1Elige Codificar o Decodificar y escribe o pega tu texto: el resultado se actualiza mientras escribes.
- 2Al codificar, elige el tipo adecuado: Componente para un solo valor, como un término de búsqueda; URL completa para una dirección entera, o Datos de formulario para escribir los espacios como
+. - 3Al decodificar una cadena de consulta o datos de formulario, activa «Tratar + como espacio». Si el texto contiene una secuencia de escape rota, la herramienta marca exactamente dónde está.
- 4Para examinar un enlace, pégalo en «Analizar una URL» y verás su host, su puerto, su ruta, su fragmento y todos sus parámetros de consulta, ya decodificados.
¿Qué es la codificación de URL?
Una URL solo puede contener un conjunto limitado de caracteres ASCII. Todo lo demás (espacios, letras con tilde, emojis y caracteres con un significado especial, como &, =, ? o #) tiene que llevar codificación porcentual: cada byte de la forma UTF-8 del carácter se escribe como % seguido de dos dígitos hexadecimales. Un espacio se convierte en %20, é en %C3%A9 y € en %E2%82%AC.
La codificación evita que los datos se confundan con la estructura de la URL. Si un término de búsqueda contiene & y lo dejas tal cual, el servidor divide el término en dos parámetros; escrito como %26, sigue formando parte del valor.
¿Componente, URL completa o datos de formulario?
La codificación de componente (encodeURIComponent en JavaScript) codifica todo excepto las letras, los dígitos y - _ . ! ~ * ' ( ). Úsala para cada pieza que pongas en una URL: un valor de consulta, un segmento de ruta, el destino de una redirección.
La codificación de URL completa (encodeURI) deja intactos los caracteres que estructuran una URL, como : / ? # & =, y solo codifica los espacios, los caracteres no ASCII y los símbolos no seguros. Úsala para una URL entera que ya esté bien construida, nunca para valores sueltos.
La codificación de formulario (application/x-www-form-urlencoded) es la que envían los navegadores al enviar un formulario HTML y la que genera URLSearchParams. Funciona como la codificación de componente, salvo que los espacios se convierten en +. Por eso + significa un espacio en la mayoría de las cadenas de consulta, y por eso un signo más de verdad tiene que escribirse como %2B.
Por qué puede fallar la decodificación
Un % siempre debe ir seguido de dos dígitos hexadecimales. Un texto como 100% sure no es una codificación porcentual válida: el propio signo de porcentaje debería haberse escrito como %25.
Los bytes que hay detrás de las secuencias de escape también deben formar UTF-8 válido. caf%E9 es como los sistemas antiguos codificaban «café» en Windows-1252 o ISO-8859-1; en UTF-8, é es %C3%A9. El decodificador marca la secuencia exacta que falla, así que puedes saber si el texto se cortó o se codificó con otro juego de caracteres.
Preguntas frecuentes
¿Qué significa %20 en una URL?
%20 es un espacio codificado. Las URL no admiten espacios, así que se escriben como %20, o como + en las cadenas de consulta y los datos de formulario. Ambos se decodifican como un espacio normal.
¿Los espacios se codifican como %20 o como +?
En la ruta, usa siempre %20. En la cadena de consulta, en la práctica funcionan los dos, porque los servidores decodifican los datos de formulario tratando + como un espacio. %20 es seguro en todas partes, mientras que + solo significa un espacio en las cadenas de consulta y en el cuerpo de los formularios.
¿Qué diferencia hay entre encodeURI y encodeURIComponent?
encodeURIComponent también codifica los caracteres reservados, como / ? & = #, así que es la adecuada para valores individuales. encodeURI los deja intactos para que una URL completa siga funcionando. Usar encodeURI con un valor de consulta es un error habitual: un & dentro del valor lo divide en dos parámetros.
¿Por qué aparece el error «URI malformed»?
decodeURIComponent de JavaScript lo lanza cuando un % no va seguido de dos dígitos hexadecimales o cuando los bytes codificados no son UTF-8 válido. Pega el texto en el decodificador de arriba y te mostrará qué secuencia provoca el error y en qué posición.
¿Qué caracteres no hace falta codificar en una URL?
Las letras A–Z y a–z, los dígitos 0–9 y - . _ ~ nunca necesitan codificación. Los caracteres reservados, como : / ? # [ ] @ ! $ & ' ( ) * + , ; =, se permiten donde tienen su significado especial, pero deben codificarse cuando forman parte de los datos.