* Tu contenido no se transfiere al servidor. Todos los cálculos se realizan directamente en el navegador.
Texto plano
Texto codificado

¿Qué es la codificación URL?

La codificación URL (también llamada codificación por porcentaje) es el mecanismo definido por el RFC 3986 para transportar datos dentro de las URLs. Los caracteres que tienen un significado reservado en una URL (como ? / # & =) o que están fuera del rango imprimible ASCII se reescriben como uno o más tripletes %XX, donde XX es el valor hexadecimal del byte. Los decodificadores invierten el proceso byte a byte.

La codificación por porcentaje es un formato de transporte, no un mecanismo de seguridad. Cualquiera que reciba una cadena codificada puede decodificarla trivialmente. No confundas codificación con cifrado o hashing.

Cómo elegir un modo

Esta herramienta expone los tres modos de codificación que todo desarrollador encuentra eventualmente. El modo que elijas determina qué caracteres se codifican.

Modo Componente (encodeURIComponent). Úsalo cuando codificas un solo valor que se insertará dentro de una URL: un valor de query string, un segmento de ruta, un fragmento. Codifica cada carácter reservado de URL para que el resultado sea seguro en cualquier posición.

Modo URL completa (encodeURI). Úsalo cuando ya tienes una URL ensamblada y solo quieres escapar los caracteres realmente inseguros (espacios, no-ASCII). Deja intactos los caracteres estructurales : / ? # & = + para que la URL siga siendo analizable.

Modo Formulario (application/x-www-form-urlencoded). Úsalo cuando construyes un cuerpo de solicitud HTTP cuyo Content-Type es application/x-www-form-urlencoded. El espacio se convierte en +, las nuevas líneas se normalizan a CRLF (%0D%0A), y el juego de caracteres refleja lo que el navegador envía al enviar un formulario HTML.

Referencia de caracteres reservados

Cómo codifica cada modo los caracteres reservados comunes
CarácterComponenteURL completaFormulario
(space)%20%20+
!!!%21
"%22%22%22
#%23#%23
$%24$%24
%%25%25%25
&%26&%26
'''%27
(((%28
)))%29
****
+%2B+%2B
,%2C,%2C
/%2F/%2F
:%3A:%3A
;%3B;%3B
=%3D=%3D
?%3F?%3F
@%40@%40
[%5B%5B%5B
]%5D%5D%5D
~~~%7E
%0A%0A%0D%0A
%E4%B8%AD%E4%B8%AD%E4%B8%AD

Componente codifica todo excepto el conjunto no reservado A–Z a–z 0–9 - _ . ! ~ * ' ( ). URL completa además preserva el conjunto estructural ; , / ? : @ & = + $ # !. Formulario codifica el mismo conjunto que Componente más ! ' ( ) ~ (pero no *), convierte espacio en + en lugar de %20, y normaliza \n / \r / \r\n a \r\n (codificado como %0D%0A), coincidiendo con lo que el navegador envía para un envío application/x-www-form-urlencoded.

Casos de uso comunes

Construir query strings seguros programáticamente: cuando construyes URLs como /search?q=[valor] a mano, pasa el valor por el modo Componente para que caracteres como & o = dentro del valor no corrompan la URL circundante.

Insertar una URL dentro de otra URL: cuando pasas una URL como parámetro de otra (por ejemplo, una URL de redirección OAuth), debes codificar la URL interna con modo Componente, no URL completa, para que / : ? & dentro de la URL interna no se interpreten como parte de la estructura de la URL externa.

Enviar datos de formulario con fetch: cuando haces POST de un cuerpo con Content-Type: application/x-www-form-urlencoded, el cuerpo debe codificarse con la semántica del modo Formulario. El modo Formulario de esta herramienta produce una salida compatible byte a byte con lo que el navegador envía.

Limitaciones

La codificación URL no es cifrado. Cualquiera puede decodificar la salida con una sola llamada a función. Nunca uses codificación para ocultar secretos.

La elección del modo importa. Pasar una URL completa por el modo Componente rompe la URL (cada / se convierte en %2F). Pasar un valor de query por el modo URL completa puede dejar caracteres reservados peligrosos (un & en el valor sigue pareciendo un separador de parámetros). Ante la duda, elige Componente.