URL Encoder & HTML Entity Encoder

Codificar Parámetros de Consulta URL: Codificador Online

Codifica valores de parámetros de consulta URL con espacios, ampersands y Unicode. encodeURIComponent vs encodeURI, %20 vs + y errores de doble codificación.

100% del lado del cliente. Tus datos nunca salen de tu navegador.

Resultado Codificado

La entrada search query=hello world&category=cafe & resumen&redirect=https://example.com/path?id=42 se codifica como:

search%20query%3Dhello%20world%26category%3Dcafe%20%26%20resumen%26redirect%3Dhttps%3A%2F%2Fexample.com%2Fpath%3Fid%3D42

Cada carácter excepto los no reservados (A-Z a-z 0-9 - _ . ~) se ha reemplazado por su forma codificada porcentualmente.

Codificación Porcentual (RFC 3986)

Según RFC 3986, cualquier byte que no sea un carácter no reservado se codifica como un signo de porcentaje seguido de dos digitos hexadecimales en mayuscula que representan el valor del byte.

Caracteres no reservados que nunca necesitan codificarse:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 - _ . ~

Por qué los Caracteres Especiales Rompen las URL

Una URL tiene una sintaxis definida. Los caracteres ?, &, =, #, / y : tienen roles específicos en la estructura de la URL:

encodeURI vs encodeURIComponent

encodeURI("https://example.com/search?q=hola mundo")
// "https://example.com/search?q=hola%20mundo"
// ? y = no se codifican

encodeURIComponent("hola mundo&adios=mundo")
// "hola%20mundo%26adios%3Dmundo"
// & y = se codifican

Para construir cadenas de consulta, usa siempre encodeURIComponent:

const params = {
  q: "cafe & resumen",
  redirect: "https://example.com/path?id=42"
};

const queryString = Object.entries(params)
  .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
  .join("&");

El Debate + vs %20 para Espacios

La mayoría de los frameworks web del lado del servidor (Express, Django, Flask, Spring) manejan ambos formatos al analizar parámetros de consulta. Pero %20 es el estándar oficial y se comporta consistentemente en todos los componentes de la URL (ruta, consulta, fragmento). Usa %20 a menos que estes construyendo especificamente un cuerpo de formulario application/x-www-form-urlencoded.