Codificador / Decodificador de URL
Codifica o decodifica componentes de URL según RFC 3986.
Tus datos nunca salen de tu navegador
Sobre la Codificación de URL
La codificación de URL (codificación porcentual) reemplaza caracteres inseguros en URIs con un signo de porcentaje seguido de dos dígitos hexadecimales que representan el valor del byte. RFC 3986 define el conjunto de caracteres no reservados (A-Z, a-z, 0-9, -, ., _, ~) que nunca necesitan codificación. Todos los demás caracteres, incluyendo espacios, ampersands y texto no ASCII, deben codificarse cuando se usan en componentes de URI.
Los caracteres no ASCII como letras acentuadas o ideogramas CJK se codifican primero como bytes UTF-8, luego cada byte se codifica porcentualmente de forma individual. Por ejemplo, el carácter e-aguda (U+00E9) se convierte en %C3%A9 porque su representación UTF-8 son los dos bytes 0xC3 y 0xA9. Por esto un solo carácter puede producir múltiples tripletes codificados.
Esta herramienta ofrece dos modos: modo componente (para codificar parámetros de consulta o segmentos de ruta individuales) y modo URL completa (que preserva los caracteres estructurales :, /, ?, # y &). Todo el procesamiento se ejecuta del lado del cliente usando las funciones integradas encodeURIComponent y decodeURIComponent.
Preguntas frecuentes
¿Qué es la codificación de URL (codificación porcentual)?
La codificación de URL, también llamada codificación porcentual, reemplaza los caracteres que no están permitidos o tienen un significado especial en una URI con un signo de porcentaje (%) seguido de dos dígitos hexadecimales que representan el valor del byte del carácter. RFC 3986 define los caracteres no reservados (A-Z, a-z, 0-9, -, ., _, ~) que nunca necesitan codificación. Todo lo demás, incluyendo espacios, ampersands y texto no ASCII, debe codificarse cuando se usa dentro de componentes URI.
¿Qué caracteres necesitan codificarse en las URLs?
Cualquier carácter fuera del conjunto no reservado (letras, dígitos, -, ., _, ~) debe codificarse porcentualmente cuando aparece dentro de un componente URI como un parámetro de consulta o segmento de ruta. Ejemplos comunes incluyen espacio (%20), ampersand (%26), igual (%3D), más (%2B) y barra diagonal (%2F). Los caracteres reservados (:, /, ?, #, &, =) tienen significado estructural en una URL completa y solo se codifican cuando se usan como datos literales dentro de un componente.
¿Cuál es la diferencia entre la codificación de componente y de URL completa?
La codificación de componente (encodeURIComponent) trata la entrada como un único componente URI y codifica cada carácter que no sea reservado, incluyendo delimitadores estructurales como /, ? y &. La codificación de URL completa preserva esos caracteres estructurales para que la URL siga siendo navegable mientras codifica caracteres inseguros dentro de cada segmento. Usa el modo componente para valores individuales de consulta o segmentos de ruta, y el modo URL completa al codificar una URL entera que debe mantener su estructura.
¿Cómo se codifican los caracteres no ASCII en las URLs?
Los caracteres no ASCII primero se convierten a su representación en bytes UTF-8, luego cada byte se codifica porcentualmente de forma individual. Por ejemplo, la letra acentuada é (U+00E9) se codifica como %C3%A9 porque su forma UTF-8 son los dos bytes 0xC3 y 0xA9. Un solo carácter chino, japonés o coreano puede producir tres tripletes codificados porque los caracteres CJK normalmente requieren tres bytes UTF-8.
¿Por qué los espacios a veces aparecen como + y a veces como %20?
El signo más (+) como codificación de espacio proviene del formato application/x-www-form-urlencoded utilizado en los envíos de formularios HTML. Esta es una convención heredada de los primeros estándares web. La codificación porcentual de RFC 3986 siempre usa %20 para espacios. En la práctica, + solo es válido como espacio en query strings de datos de formulario. La función encodeURIComponent utilizada por esta herramienta siempre produce %20, que es universalmente aceptado.