100% del lado del cliente: Toda la codificación y decodificación ocurre en su navegador. No se envían datos a ningún servidor.

Codificar / Decodificar

Prueba rápida — haga clic en un carácter para insertarlo:

espacioSP & = ? # / @ + % " < > 🚀 中文

Salida

Analizador de URL

Pegue una URL arriba para ver sus componentes

¿Qué es la Codificación URL?

La codificación URL, formalmente conocida como percent-encoding, es una forma de representar caracteres que no están permitidos o tienen significado especial en un Localizador Uniforme de Recursos (URL). El mecanismo reemplaza caracteres inseguros o reservados con un signo de porcentaje (%) seguido de dos dígitos hexadecimales en mayúsculas que representan el valor del byte UTF-8 del carácter. Por ejemplo, un carácter de espacio (ASCII 32 / 0x20) se convierte en %20, y un ampersand (&) se convierte en %26.

Las URLs están restringidas a un subconjunto de caracteres ASCII imprimibles. Cualquier carácter fuera de ese conjunto seguro — incluyendo caracteres Unicode como emoji y escrituras no latinas, caracteres con significado especial en la sintaxis URL (como ?, #, / y =), y caracteres de control invisibles — debe ser codificado antes de ser incrustado en una URL. No codificar estos caracteres puede resultar en URLs malformadas, enlaces rotos, vulnerabilidades de seguridad o errores de análisis del lado del servidor.

El percent-encoding está definido en RFC 3986 (sintaxis URI) y se usa en todas partes donde se realizan solicitudes HTTP: cadenas de consulta, envíos de formularios, segmentos de ruta y headers HTTP que llevan valores URL.

encodeURI vs encodeURIComponent

JavaScript proporciona dos funciones incorporadas para codificación URL, y elegir la correcta importa para la corrección:

FunciónPropósitoCaracteres NO codificados
encodeURI() Codificar una URL completa, estructuralmente válida A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
encodeURIComponent() Codificar un componente individual de URL (ej. un valor de consulta) A-Z a-z 0-9 - _ . ! ~ * ' ( )
decodeURI() Inverso de encodeURI No decodifica caracteres que encodeURI no codificaría
decodeURIComponent() Inverso de encodeURIComponent Decodifica todas las secuencias percent-encoded

La regla general: use encodeURIComponent para valores que insertará en una URL (nombres y valores de parámetros de consulta, segmentos de ruta que contienen datos del usuario). Use encodeURI solo cuando ya tenga una URL completa y estructuralmente correcta y simplemente quiera asegurarse de que sea segura para transmisión (por ejemplo, antes de pasarla a fetch() o una etiqueta de ancla). Usar encodeURIComponent en una URL completa la romperá al codificar las barras y dos puntos en el protocolo y host.

Caracteres Comunes que Necesitan Codificación URL

CarácterForma CodificadaPor qué necesita codificación
espacio%20 (o + en cadenas de consulta)Los espacios no están permitidos en ninguna parte de una URL
&%26Delimitador entre parámetros de consulta; debe codificarse en valores
=%3DSepara nombre de parámetro del valor; debe codificarse en valores
?%3FIntroduce la cadena de consulta; debe codificarse en segmentos de ruta y valores
#%23Introduce un fragmento; todo después de # no se envía al servidor
/%2FSeparador de ruta; codifique cuando / es parte de un valor, no un delimitador de ruta
+%2BSignifica "espacio" en cadenas de consulta con codificación de formulario; codifique el + literal con %2B
@%40Usado en autoridad (userinfo@host); codifique en valores de ruta/consulta
%%25El propio carácter de escape; un % literal debe codificarse como %25
"%22Carácter inseguro que puede romper el entrecomillado de atributos HTML
🚀 (U+1F680)%F0%9F%9A%80El Unicode no-ASCII se codifica en UTF-8 y luego se aplica percent-encoding
中 (U+4E2D)%E4%B8%ADLos caracteres CJK se codifican en tres bytes UTF-8 cada uno

Preguntas Frecuentes

¿Qué es la codificación URL?

La codificación URL (percent-encoding) convierte caracteres especiales y no-ASCII en una URL a un formato seguro reemplazando cada carácter con un % seguido de dos dígitos hexadecimales que representan su valor de byte UTF-8. Esto asegura que las URLs contengan solo caracteres del subconjunto ASCII permitido definido en RFC 3986, previniendo errores de análisis y ambigüedad.

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

encodeURI es para URLs completas — deja intactos los caracteres estructurales como ://, /, ?, & y = porque son parte de la estructura URL. encodeURIComponent es para valores individuales (como valores de parámetros de consulta) — codifica esos caracteres estructurales también, para que el valor no pueda romper la estructura URL en la que está incrustado. Siempre use encodeURIComponent cuando inserte datos proporcionados por el usuario en una URL.

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

%20 es el percent-encoding universalmente correcto de un espacio y es válido en cualquier parte de una URL. El signo + representa un espacio solo dentro de la cadena de consulta y solo cuando el tipo de contenido es application/x-www-form-urlencoded (el valor predeterminado para envíos de formularios HTML). En una ruta URL, + es un signo de más literal, no un espacio. Para máxima compatibilidad y claridad, prefiera %20 sobre + cuando codifique espacios en URLs construidas programáticamente.

¿Cómo se codifican los caracteres Unicode en URLs?

Los caracteres Unicode no se codifican directamente con percent-encoding desde su punto de código Unicode. En cambio, el carácter primero se convierte a su secuencia de bytes UTF-8, y luego cada byte se codifica individualmente con percent-encoding. Por ejemplo, el emoji 🚀 (U+1F680) tiene la representación UTF-8 F0 9F 9A 80, que se codifica como %F0%9F%9A%80. La función encodeURIComponent de JavaScript maneja esto automáticamente, haciéndola la opción más segura para codificar cualquier entrada del usuario que pueda contener caracteres no-ASCII.

Herramientas Relacionadas para Desarrolladores