Codificador/decodificador de URL

Codifica texto para URLs con encodeURIComponent o lo decodifica, con opción de espacio como + para datos de formularios.

La codificación ocurre localmente en tu navegador. Nada sale de tu dispositivo.

—

Cómo funciona

La herramienta reproduce lo que hace un navegador al construir una petición: Codificar ejecuta encodeURIComponent sobre tu entrada, sustituyendo cada carácter que no sea una letra segura, un dígito o uno de - _ . ~ por sus bytes UTF-8 escritos como %XX. Decodificar invierte el proceso: primero convierte + de vuelta en espacios (la convención de formularios) y luego resuelve las secuencias de porcentaje, y avisa con un error cuando un % no va seguido de dos dígitos hexadecimales válidos.

encodeURIComponent frente a encodeURI
encodeURI asume que le pasas una URL completa y deja intactos los caracteres estructurales — : / ? # [ ] @ ! $ & ' ( ) * + , ; =. encodeURIComponent asume que codificas un componente (un valor de consulta, un segmento de ruta) y escapa también todos esos. Para valores de parámetros, encodeURIComponent es la opción más segura y la que usa esta herramienta.
Codificación de formulario (application/x-www-form-urlencoded)
La forma en que los formularios HTML envían cadenas de consulta difiere del percent-encoding puro en algo visible: un espacio se convierte en + en lugar de %20. La casilla "Espacio como +" reproduce esa convención, y Decodificar siempre acepta + como espacio, así puedes ir y venir de todo lo que genere un formulario.
Caracteres reservados vs no reservados
Solo los caracteres no reservados (letras, dígitos, - _ . ~) pueden aparecer literalmente. Los reservados llevan sintaxis en una URL, y todo lo que no sea ASCII debe codificarse en porcentaje mediante sus bytes UTF-8 — por eso un emoji se convierte en una secuencia de cuatro bytes como %F0%9F%98%80.

Preguntas frecuentes

¿Debo codificar texto que ya está codificado?

No — codificar dos veces produce doble codificación. El propio signo de porcentaje se escapa, así que %20 pasa a %2520 y %40 a %2540, que la mayoría de servidores entregan literalmente a tu aplicación. Si tu cadena ya contiene secuencias %XX, ejecuta primero Decodificar para normalizarla, edita y luego Codifica una sola vez.

¿Necesitan codificación distinta los parámetros de consulta y los segmentos de ruta?

Codifica cada valor de parámetro con encodeURIComponent y estarás siempre a salvo. Por convención, los segmentos de ruta toleran algunos caracteres más (: @ + $), pero encodeURIComponent también los escapa — los servidores los decodifican de vuelta, así que el exceso es inofensivo. Reserva encodeURI para URLs completas cuando quieras conservar la estructura : / ? #.

¿Por qué se codifican & y =?

Porque son los delimitadores de una cadena de consulta: & separa parámetros y = separa el nombre de su valor. Si tu valor contiene alguno —por ejemplo una URL dentro de un parámetro o un código como SALE&2026— debe escaparse (%26, %3D) para que el servidor no divida tu valor en el lugar equivocado.

¿Cómo se tratan los emojis y el texto no latino?

Las URLs solo pueden transportar ASCII, así que todo lo demás se codifica como sus bytes UTF-8, un %XX por byte. café se convierte en caf%C3%A9 y un emoji en cuatro bytes como %F0%9F%98%80. Este es el estándar moderno; la forma antigua %uXXXX del escape() de JavaScript no es válida en URLs y esta herramienta no la produce.

¿Se sube algo a un servidor?

No. Codificar y decodificar son unas pocas líneas de JavaScript puro que se ejecutan en tu navegador. Tus URLs nunca salen de tu dispositivo, y no hay cuenta, ni rastreo ni petición de red asociada a la conversión.