Codificador/Decodificador de URL

Codifica caracteres especiales para URLs o decodifica cadenas URL codificadas en porcentaje. Esencial para desarrollo web y trabajo con APIs.

Cómo Usar

  1. Escribe o pega tu texto o URL en el área de entrada
  2. Haz clic en Codificar para codificar en porcentaje los caracteres especiales, o en Decodificar para convertir de vuelta
  3. Copia el resultado para usarlo en tu aplicación

Preguntas Frecuentes

  • ¿Qué es la codificación de URL?

    La codificación de URL (también llamada codificación por porcentaje) reemplaza los caracteres especiales con un signo de porcentaje seguido de su valor hexadecimal. Por ejemplo, un espacio se convierte en %20.

  • ¿Cuándo debo codificar una URL?

    Codifica URLs cuando incluyas caracteres especiales en parámetros de URL, cadenas de consulta o datos de formularios que se enviarán por HTTP.

  • ¿Cuál es la diferencia entre encodeURI y encodeURIComponent?

    encodeURI codifica un URI completo, conservando caracteres como :, / y ?. encodeURIComponent codifica todo excepto letras, dígitos y algunos caracteres especiales, siendo adecuado para codificar valores de parámetros individuales.

  • ¿Maneja caracteres Unicode?

    Sí, los caracteres Unicode se codifican primero a bytes UTF-8 y luego cada byte se codifica en porcentaje.

Principios de la codificación de URLs

Las URLs solo pueden contener un conjunto limitado de caracteres ASCII seguros: letras (A–Z, a–z), dígitos (0–9) y un puñado de símbolos reservados (-, _, ., ~). Todo lo demás debe transformarse mediante un mecanismo llamado codificación por porcentaje (percent-encoding) antes de incluirse en una URL.

El principio es simple: cada byte que no está en el conjunto seguro se representa como % seguido de dos dígitos hexadecimales. Por ejemplo, un espacio es el byte 0x20, que se convierte en %20. Una ñ en UTF-8 son dos bytes (0xC3 0xB1), que se convierten en %C3%B1.

Caracteres reservados y no reservados

La especificación RFC 3986 divide los caracteres en varias categorías:

  • No reservados (no necesitan codificación): A-Z a-z 0-9 - _ . ~
  • Reservados con significado especial: : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Estos caracteres tienen una función estructural en la URL (separar el host del path, indicar parámetros, etc.) y solo deben codificarse cuando aparecen como datos, no como estructura.
  • Todo lo demás: debe codificarse siempre.

encodeURI vs encodeURIComponent

Esta es la distinción más importante en JavaScript para trabajar con URLs:

encodeURI()

Está diseñado para codificar una URL completa. Preserva todos los caracteres que tienen un significado estructural en la URL: : / ? # [ ] @ ! $ & ' ( ) * + , ; =.

encodeURI("https://ejemplo.com/búsqueda?q=café latte")
// → "https://ejemplo.com/b%C3%BAsqueda?q=caf%C3%A9%20latte"

encodeURIComponent()

Está diseñado para codificar un componente individual de la URL (por ejemplo, el valor de un parámetro). Codifica casi todo, incluidos los caracteres estructurales, porque el valor de un parámetro no debería interferir con la estructura de la URL.

encodeURIComponent("precio=100&moneda=€")
// → "precio%3D100%26moneda%3D%E2%82%AC"

La regla práctica: usa encodeURIComponent para los valores de los parámetros y encodeURI para URLs completas que ya tienen su estructura correcta.

Casos prácticos habituales

  • Parámetros de búsqueda: ?q=inteligencia+artificial — los espacios en query strings pueden codificarse como + (formato de formulario HTML) o como %20.
  • Rutas con caracteres especiales: URLs en español con tildes o ñ, como /recetas/paella-de-marisco, se mostrarán bien en el navegador pero internamente deben estar codificadas.
  • Construcción de URLs en código: cuando concatenas valores de usuario en una URL, siempre codifica los valores para evitar inyecciones en la query string o fragmentos de URL inesperados.
  • APIs REST: los valores enviados en query parameters deben estar correctamente codificados para que el servidor los interprete como datos, no como instrucciones de routing.