raatools/

Codificador / Decodificador de URL

Codifica o decodifica URLs y cadenas de consulta.

¿Qué es la codificación URL?

La codificación URL (también llamada percent-encoding) es el mecanismo para convertir caracteres no permitidos en una URL a un formato hexadecimal seguro. Cada carácter no seguro se sustituye por un signo de porcentaje seguido de dos dígitos hex que representan su código ASCII. Por ejemplo, un espacio se convierte en %20, un ampersand en %26 y un hash en %23.

Las URLs solo pueden contener un conjunto limitado de caracteres definidos por el RFC 3986: letras (A-Z, a-z), dígitos (0-9) y unos pocos caracteres especiales (- _ . ~ ! * ' ( )). Cualquier otro carácter — incluidos espacios, letras no ASCII y caracteres reservados como & = ? # — debe ser percent-codificado antes de incluirse en una URL.

¿Cuándo necesitas codificar una URL?

  • Pasar caracteres especiales en parámetros de query (por ejemplo, ?q=hello%20world).
  • Codificar datos de formulario enviados vía HTTP POST con tipo de contenido application/x-www-form-urlencoded.
  • Construir URLs de petición API programáticamente con entrada del usuario.
  • Incrustar URLs dentro de otras URLs (por ejemplo, parámetros de redirección).
  • Incluir caracteres Unicode (letras acentuadas, emoji, caracteres CJK) en URLs.

Codificar vs. decodificar

Codificar convierte texto plano en una cadena URL-safe sustituyendo caracteres no seguros por equivalentes percent-codificados. Decodificar invierte este proceso, convirtiendo secuencias percent-codificadas de vuelta a sus caracteres originales. Esta herramienta te permite alternar entre codificar y decodificar con un solo clic.

Cómo usar esta herramienta

Pega o escribe texto en el campo de entrada. Selecciona modo codificar o decodificar. La salida se actualiza al instante. Haz clic en el botón de intercambio para invertir la dirección usando la salida actual como nueva entrada. Esto es útil cuando necesitas codificar una cadena y luego verificar el resultado decodificándola de vuelta.

Caracteres que se codifican

Esta herramienta usa la función encodeURIComponent() de JavaScript, que codifica todos los caracteres excepto: A-Z, a-z, 0-9 y los caracteres no reservados - _ . ! ~ * ' ( ). Esta es la codificación correcta para valores de parámetros de query y datos de formularios. La función similar encodeURI() es menos agresiva y conserva caracteres como : / ? # que tienen significado en la estructura URL.

Errores comunes de codificación URL

El error más común es la doble codificación: codificar una cadena que ya está codificada, convirtiendo %20 en %2520. Esto rompe URLs y confunde a los servidores. Comprueba siempre si tu entrada ya está codificada antes de aplicar codificación. Otro error es usar encodeURI() cuando se necesita encodeURIComponent(), lo que deja & y = sin codificar en valores de parámetros.

No codificar la entrada del usuario antes de insertarla en URLs es una vulnerabilidad de seguridad. La entrada sin codificar puede inyectar parámetros extra de query, romper el parseo de URL o habilitar ataques de inyección. Codifica siempre los valores proporcionados por el usuario al construir URLs programáticamente.

Consejos prácticos

En desarrollo web, la mayoría de los frameworks manejan la codificación URL automáticamente en envíos de formularios y bibliotecas cliente HTTP. La codificación manual normalmente se necesita al construir URLs dinámicamente en JavaScript, al pasar datos en fragmentos URL o al depurar llamadas API que incluyen caracteres especiales.

Preguntas frecuentes

¿Cuál es la diferencia entre %20 y + para espacios?

Ambos representan espacios, pero en distintos contextos. %20 es la codificación URL estándar para espacios y funciona en todas partes. El signo + representa espacios solo en query strings que usan formato application/x-www-form-urlencoded (envíos de formularios HTML). Ante la duda, usa %20.

¿Necesito codificar caracteres UTF-8?

Sí. Los caracteres no ASCII (letras acentuadas, emoji, caracteres chinos, etc.) deben codificarse en UTF-8 y luego percent-codificarse para incluirse en URLs. La función encodeURIComponent() de JavaScript maneja ambos pasos automáticamente, convirtiendo caracteres como é a %C3%A9.