PK Systems
Codificadores y decodificadores

Codificador / Decodificador de URL

Codifica y decodifica URLs y parámetros con percent-encoding. Ámbito de componente o URL completa, todo en tu navegador.

Codificador / Decodificador de URL

Componente codifica todo lo que no es seguro en URL (usa encodeURIComponent). URL completa conserva :/?&=# para que la URL siga siendo válida (usa encodeURI).

Salida

¿Qué es la codificación de URL?

La codificación de URL (también llamada percent-encoding) es la forma de representar caracteres que no son seguros en una URL — espacios, letras con tilde, &, ?, #, etc. — sustituyéndolos por % seguido del valor hexadecimal del byte. El estándar está definido en la RFC 3986. Para caracteres no ASCII, los bytes vienen de UTF-8, así que é queda como %C3%A9 (dos bytes). Esta herramienta envuelve las funciones nativas encodeURIComponent y decodeURIComponent del navegador.

Cómo usarla

Elige Codificar o Decodificar en el modo y luego el ámbito. Componente es el ajuste correcto para valores de query string, campos de formulario y cualquier cosa que vaya a quedar como ?clave=…. URL completa sirve para URLs ya más o menos válidas que solo quieres escapar lo justo — conserva : / ? & = # para que esos caracteres mantengan su sentido estructural. Pega el texto y el resultado se actualiza en vivo. Usa Pasar a entrada para llevar la salida de vuelta a la entrada e invertir el modo en un ida y vuelta rápido.

Componente o URL completa — ¿cuál elegir?

Si codificas un único valor (un término de búsqueda, una URL de redirección, un email) para pegarlo dentro de una query string, usa Componente. Si codificas una URL completa ya casi válida y solo quieres escapar lo inseguro, usa URL completa. Las dos se comportan muy distinto con ? y & — Componente las codifica, URL completa no. Ante la duda, codifica los valores dentro de la URL con Componente y monta tú la URL.

Percent-encodings comunes

Carácter Codificado Notas
space%20Los espacios pasan a %20 en URLs (o + en cuerpos form-encoded).
&%26Separa parámetros de la query string; debe codificarse dentro de un valor.
=%3DSepara el nombre y el valor de un parámetro.
?%3FMarca el inicio de la query string.
#%23Marca el inicio del fragmento (ancla) de la URL.
/%2FSeparador de ruta; solo se codifica dentro de segmentos.
é%C3%A9Los caracteres no ASCII se codifican en UTF-8 y luego se percent-escapan byte a byte.

Preguntas frecuentes

¿Se envía algo a un servidor?
No. La codificación y decodificación corren en tu navegador mediante encodeURIComponent y decodeURIComponent. No se registra ni se transmite nada. Puedes comprobarlo abriendo DevTools > Network — no se dispara ninguna petición mientras escribes.
¿Por qué a veces + significa espacio?
Por una codificación distinta (más antigua) llamada application/x-www-form-urlencoded, que se usa al enviar formularios HTML. Allí los espacios pasan a + en lugar de %20. El percent-encoding de la RFC 3986 (que usa esta herramienta) siempre usa %20. Si decodificas el cuerpo de un envío de formulario y ves + donde deberían ir espacios, sustitúyelos antes de decodificar o usa un decodificador específico de form-encoded.
¿Por qué falla la decodificación?
decodeURIComponent lanza URIError si la entrada tiene un % sin dos dígitos hexadecimales válidos a continuación, o si los bytes no son UTF-8 válido. Los sospechosos habituales son cadenas doblemente codificadas (decodifica dos veces) o URLs pegadas que el autocorrector del editor ha estropeado.
¿Cuál es la diferencia entre encodeURI y encodeURIComponent?
encodeURI está pensada para URLs enteras — deja intactos : / ? & = # @ y +, porque esos caracteres tienen sentido estructural en una URL. encodeURIComponent es para trozos de URL (un valor de query, un segmento de ruta) y codifica todo lo que no es no reservado. Regla práctica: monta URLs concatenando partes pasadas por encodeURIComponent; nunca confíes en encodeURI con entrada de usuario.
¿Puedo codificar emoji?
Sí. El navegador convierte el emoji a su secuencia UTF-8 y percent-escapa cada byte. Un emoji como 🎉 queda como cuatro escapes (%F0%9F%8E%89) porque es un codepoint de 4 bytes fuera del plano básico. La decodificación invierte el proceso — recuperas el emoji original.
¿Debo codificar la URL más de una vez?
Solo si anidas URLs dentro de URLs (un parámetro de redirección que apunta a otra URL). Cada nivel de anidamiento exige una codificación extra — si no, los ? y & de la URL interna se interpretan como parte de la externa. Para decodificarlo, ejecuta decode el mismo número de veces. Si codificaste una URL dos veces sin querer, decodifícala dos veces y recuperas el original.