RevealTheme logo

Codificador y Decodificador de URL

Convierte texto a codificación segura para URL (codificación por porcentaje) y a la inversa. Útil para cadenas de consulta, redirecciones y flujos OAuth.

¿Qué es la codificación de URL y cuándo la necesitas?

La codificación de URL (también llamada 'codificación por porcentaje', especificada en la RFC 3986) es el proceso de convertir caracteres que tienen un significado especial en las URL —o caracteres que directamente no son seguros en las URL— en una secuencia de escape hexadecimal '%XX'. La especificación de URL reserva ciertos caracteres con significado estructural: '?' inicia la cadena de consulta, '#' inicia el fragmento, '&' separa los parámetros de consulta, '/' separa los segmentos de ruta, etc. Si la entrada del usuario contiene alguno de esos caracteres y lo incrustas tal cual en una URL, el analizador lo interpreta mal. La codificación de URL evita esto reemplazando cada carácter reservado o inseguro por su representación hexadecimal en bytes precedida de '%'. Un espacio se convierte en %20, '&' en %26, '=' en %3D. Los caracteres no ASCII (cirílico, chino, emoji) se convierten en secuencias UTF-8 de varios bytes, con cada byte codificado por porcentaje. Los navegadores lo gestionan automáticamente cuando haces clic en un enlace, pero siempre que construyas una URL mediante código —al crear una consulta de búsqueda, un destino de redirección, una devolución de llamada OAuth o una firma de webhook— debes codificar primero los valores proporcionados por el usuario. Esta herramienta usa las mismas funciones encodeURIComponent / decodeURIComponent que usaría tu código JavaScript, así que el comportamiento coincide exactamente con producción.

Casos de uso comunes

  • Codifica los términos de búsqueda del usuario antes de añadirlos a una URL de búsqueda (?q=entrada+del+usuario).

  • Pasa de forma segura un parámetro redirect_uri de OAuth a un servidor de autorización.

  • Construye URL de webhook que incluyan cargas útiles JSON codificadas en la cadena de consulta.

  • Codifica una URL de 'returnTo' para que sobreviva al pasar por otras URL.

  • Decodifica los valores codificados que ves en la barra de direcciones tras enviar un formulario.

  • Prueba cómo se analiza una URL mal formada: codifica un carácter especial y observa qué ocurre.

Preguntas frecuentes

¿Cuándo debo codificar una URL?
Codifica siempre los valores proporcionados por el usuario antes de ponerlos en una URL: parámetros de consulta, segmentos de ruta o fragmentos. No codificar es una de las fuentes más comunes de errores sutiles: el valor 'gatos & perros' rompe una cadena de consulta hasta que se codifica como 'gatos%20%26%20perros'.
¿Cuál es la diferencia entre encodeURI y encodeURIComponent?
encodeURI es para URL completas: deja intactos los caracteres estructurales como '/', '?', '&', '=' porque tienen significado en una URL. encodeURIComponent es para partes de URL (valores de consulta, segmentos de ruta): codifica todo lo que no sea alfanumérico. Usa encodeURIComponent en los valores de consulta individuales; nunca uses encodeURI sobre un valor de consulta proporcionado por el usuario (no escapará '&' y romperá tu cadena de consulta).
¿Qué es Base64 seguro para URL frente a la codificación de URL?
Son conceptos distintos. La codificación de URL (esta herramienta) sustituye carácter por carácter los caracteres especiales. El Base64 seguro para URL es una variante de Base64 que usa '-' y '_' en lugar de '+' y '/', de modo que el resultado ya es seguro para URL sin codificación adicional.
¿Por qué a veces '+' se decodifica como espacio?
En application/x-www-form-urlencoded (envíos de formularios), '+' es la abreviatura de un espacio. La mayoría de los decodificadores conservan esto. En el análisis de URI moderno, '%20' es la codificación correcta del espacio. decodeURIComponent trata '+' como un '+' literal; usa decodeURI o un decodificador de formularios para convertir '+' en espacio.
¿Cómo se codifican los caracteres no ASCII?
Primero se convierten a bytes UTF-8 y luego cada byte se codifica por porcentaje. Así, 'café' se convierte en 'caf%C3%A9': 'é' son dos bytes UTF-8 (0xC3 0xA9). Esta herramienta gestiona UTF-8 correctamente; algunas herramientas antiguas codifican usando Latin-1, lo que produce una salida distinta.
¿La codificación de URL es lo mismo que la codificación de entidades HTML?
No. La codificación de URL (%XX) escapa caracteres para las URL. La codificación de entidades HTML (&, <) escapa caracteres para el marcado HTML. Los contextos son diferentes; codificar uno en el contexto del otro es un error común de XSS.

Herramientas relacionadas