El percent-encoding, definido en el RFC 3986, es la forma en que las URLs transportan caracteres reservados, espacios, acentos o cualquier byte fuera de ASCII imprimible. Sin él, una simple búsqueda con espacios rompería la petición HTTP. Esta herramienta codifica y decodifica cadenas al vuelo aplicando exactamente las reglas del estándar, útil para depurar querystrings, callbacks OAuth o parámetros mal escapados por un cliente.
Cuándo hay que codificar y cuándo no
Los caracteres reservados (`: / ? # [ ] @ ! $ & ' ( ) * + , ; =`) tienen un significado sintáctico dentro de la URL. Si aparecen dentro del valor de un parámetro deben codificarse; si separan partes de la URL, no. Los caracteres no reservados (letras, dígitos, `- _ . ~`) nunca se codifican. Todo lo demás se convierte a `%HH` con el valor UTF-8 del byte.
encodeURIComponent vs encodeURI
JavaScript ofrece dos primitivas. `encodeURI` respeta los caracteres reservados porque asume que le pasas una URL completa. `encodeURIComponent` codifica también los reservados y es la que debes usar para valores de parámetros. Un error clásico es usar `encodeURI` sobre un valor con `&` o `=`: se cuela y rompe el parseo del servidor.
Errores frecuentes de doble codificación
Cuando una URL pasa por varios sistemas (proxy, gateway, cliente) es fácil que se codifique dos veces: `%20` se convierte en `%2520`. La herramienta te permite decodificar por pasos hasta ver el valor original. Otro error: codificar la parte del path completa incluyendo las barras, lo que rompe el enrutado.
Casos de uso comunes
- Depurar redirects OAuth 2.0 y SAML.
- Escapar valores de query en scripts de bash con curl.
- Leer URLs largas de tracking (UTM, redirects).