Codificador de URL

Codifica un texto en porcentajes para que pueda viajar sin problemas en una URL, enteramente en tu navegador.

Se ejecuta enteramente en tu navegador. No se sube, registra ni guarda nada.

Una URL tiene una gramática, y los caracteres que forman parte de ella —"?", "&", "/", "#", los espacios— hay que escaparlos cuando forman parte de un valor y no de la estructura. Ese escapado es la codificación en porcentajes.

Cómo funciona

Todo carácter que no esté en el conjunto no reservado del RFC 3986 —letras, dígitos, "-", ".", "_" y "~"— se sustituye por un signo de porcentaje y el valor hexadecimal de cada uno de sus bytes UTF-8. Un espacio pasa a %20 y una letra acentuada pasa a dos escapes, porque son dos bytes en UTF-8.

El estilo de datos de formulario existe porque el envío de formularios HTML es anterior a esa regla: allí un espacio es "+" y "~" también se escapa. Elígelo cuando estés construyendo un cuerpo application/x-www-form-urlencoded, y el estilo de componente para todo lo demás.

Ejemplos

Caso Entrada Resultado
Una frase de búsqueda que va en una cadena de consulta coffee & cake coffee%20%26%20cake
La misma frase como datos de formulario coffee & cake coffee+%26+cake

Preguntas frecuentes

¿Debo codificar una URL entera con esto?

No. Codificar una URL completa escapa también el "://" y los separadores, y te deja con una cadena que ningún cliente puede seguir. Codifica los valores por separado y luego monta la URL con ellos.

¿Por qué aquí se codifica "!" y la consola de mi navegador lo deja tal cual?

encodeURIComponent de JavaScript se salta a propósito "!", "'", "(", ")" y "*" aunque el RFC 3986 los reserve. Codificarlos se acepta siempre y evita sorpresas con analizadores más estrictos, así que esta herramienta lo hace.

¿Y la "#" de un fragmento?

Una "#" literal dentro de un valor hay que codificarla como %23; si no, todo lo que va detrás se lee como el fragmento y no llega nunca al servidor.

Conviene saber

  • Todo ocurre en tu navegador. Lo que pegas no se sube, no se registra y no se almacena.

Fuentes

Todas las herramientas de Código