Codificador de URL
Convierte texto a formato seguro para URL codificando caracteres especiales.
Introduce texto para codificar:
Cómo usar URL Encoder / Decoder
- 1
Introduce tu texto o URL
Pega en el cuadro de entrada el texto que quieres codificar o la cadena codificada en URL que quieres decodificar.
- 2
Elige codificar o decodificar
Selecciona Codificar para convertir texto a un formato seguro para URL, o Decodificar para convertir el texto con codificación porcentual de nuevo a la normalidad.
- 3
Ejecuta la conversión
Procesa la entrada para transformarla al instante en el sentido elegido.
- 4
Copia el resultado
Copia la salida codificada o decodificada para usarla en enlaces, cadenas de consulta o solicitudes de API.
La codificación de URL y la codificación por porcentaje, explicadas
Qué es la codificación de URL
La codificación de URL, llamada con más precisión codificación por porcentaje, es el mecanismo que permite a una URL transportar caracteres que de otro modo no podría representar. Una URL está restringida a un pequeño conjunto de caracteres ASCII, y varios de esos caracteres tienen un significado estructural especial. La codificación por porcentaje reemplaza cualquier carácter problemático por un signo de porcentaje seguido de los dos dígitos hexadecimales de su valor de byte, de modo que un espacio pasa a ser %20 y una almohadilla pasa a ser %23.
Las reglas están definidas en el RFC 3986, el estándar que rige la sintaxis de las URI. El objetivo es sencillo: asegurarse de que un valor colocado dentro de una URL se transmite y se analiza exactamente como se pretendía, sin que un carácter perdido se confunda con un delimitador o sea descartado por algún software por el camino.
Caracteres reservados frente a no reservados
El RFC 3986 divide los caracteres en grupos. El conjunto no reservado siempre es seguro y nunca se codifica: las letras A-Z y a-z, los dígitos 0-9 y las cuatro marcas guion (-), punto (.), guion bajo (_) y virgulilla (~). Estos pasan intactos porque no llevan ningún significado estructural y son legales en cualquier parte de una URL.
El conjunto reservado es la puntuación que delimita las partes de una URL: los delimitadores genéricos : / ? # [ ] @ y los subdelimitadores ! $ & ' ( ) * + , ; =. Estos caracteres son legales como separadores, pero cuando aparecen dentro de un valor en lugar de como delimitador deben codificarse por porcentaje para que un analizador no los lea mal. Por ejemplo, un ampersand dentro del valor de una consulta tiene que pasar a ser %26, de lo contrario se leería como el comienzo de un nuevo parámetro.
La base de bytes UTF-8
La codificación por porcentaje opera sobre bytes, no sobre caracteres directamente, y las URLs modernas usan UTF-8 como fuente de bytes. Un carácter ASCII es un solo byte, así que un carácter ASCII codificado es un único escape de porcentaje. Un carácter fuera de ASCII se expresa primero como su secuencia de bytes UTF-8, y luego cada byte se codifica por porcentaje por separado, produciendo un escape por byte.
La letra acentuada é es la ilustración estándar. En UTF-8 son los dos bytes 0xC3 y 0xA9, así que se codifica por porcentaje como %C3%A9: dos escapes para un carácter visible. El signo del euro, tres bytes en UTF-8, pasa a ser %E2%82%AC. Por eso el texto no latino se expande tanto al codificarse: cada carácter puede convertirse en dos, tres o cuatro escapes de porcentaje según su longitud en UTF-8.
Ejemplo resuelto: codificar un valor de búsqueda
Supongamos que quieres poner la frase "Q&A: cats + dogs" en una cadena de consulta. Las letras, los dígitos y el texto que rodea a los dos puntos se quedan como palabras, pero los caracteres inseguros y reservados se escapan. El espacio pasa a ser %20, el ampersand pasa a ser %26, los dos puntos pasan a ser %3A, y el signo más pasa a ser %2B porque un más literal se leería de otro modo como un espacio en los datos de formulario.
El resultado es Q%26A%3A%20cats%20%2B%20dogs. Colocado en un enlace como ?q=Q%26A%3A%20cats%20%2B%20dogs, el servidor lo descodifica de vuelta a la frase original exacta. Fíjate en que cada carácter reservado que estaba pensado como dato, no como delimitador, tuvo que codificarse para sobrevivir al viaje.
Los espacios: %20 frente al signo más
Los espacios tienen una peculiaridad famosa. En la ruta y en la mayor parte de una URL, un espacio se codifica como %20. Pero en el formato application/x-www-form-urlencoded que usan los envíos de formularios HTML y muchas cadenas de consulta, un espacio se codifica tradicionalmente como un signo más (+). Ambas convenciones están en uso activo, lo que es una fuente frecuente de confusión.
La consecuencia práctica es que un signo más literal en datos de estilo formulario debe codificarse a su vez como %2B, para que no se confunda con un espacio. Al descodificar, tienes que saber qué convención produjo la cadena: un más en el valor de un formulario significa un espacio, mientras que un más en otro lugar suele significar un más literal. Esta herramienta maneja la codificación por porcentaje estándar para que tus valores hagan el viaje de ida y vuelta limpiamente.
Codificar una URL completa frente a un solo valor
JavaScript expone dos funciones que se corresponden con dos trabajos distintos, y elegir la equivocada es un error clásico. encodeURI está pensada para una URL entera: deja intactos los caracteres estructurales : / ? # & = para que la URL siga funcionando, codificando solo los caracteres claramente ilegales como los espacios. encodeURIComponent está pensada para una sola pieza de datos, como un valor de consulta o un segmento de ruta: escapa también los delimitadores reservados, de modo que una barra o un ampersand incrustados no puedan romper la URL que los rodea.
Esta herramienta realiza una codificación al estilo de componente —el comportamiento de encodeURIComponent— que es el valor predeterminado seguro para insertar un valor no confiable entre delimitadores que tú controlas: escapa también los delimitadores reservados, de modo que una barra o un ampersand incrustados no puedan romper la URL que los rodea. La contrapartida es que no deberías pegar aquí una dirección completa, porque también escapará los caracteres estructurales : / ? # & = y estropeará el enlace. Para codificar una URL entera, codifica cada valor o segmento de ruta individual y luego ensambla tú mismo la dirección terminada.
El error de la doble codificación
La doble codificación es el error más común de la codificación por porcentaje. Ocurre cuando un texto ya codificado se codifica una segunda vez. El detonante es el propio signo de porcentaje: un porcentaje es un carácter reservado, así que codificarlo convierte %20 en %2520, porque el % inicial pasa a ser %25 y el 20 se queda. Un valor que se ha codificado dos veces mostrará secuencias de escape literales como %2520 al usuario final en lugar del espacio previsto.
Evítalo codificando exactamente una vez, en el momento en que construyes la URL, y no pasando nunca de nuevo por el codificador una cadena que ya contiene escapes de porcentaje. Si ves %25 seguido de lo que parece otro escape, casi con seguridad estás ante datos doblemente codificados, y la solución es descodificarlos una vez más o eliminar el paso de codificación redundante en tu código.
Dónde la usarás
La codificación por porcentaje está en todas partes donde un valor viaja dentro de una URL. Construir cadenas de consulta para búsquedas y filtros, construir enlaces que contienen texto introducido por el usuario, pasar parámetros a las API REST, incrustar destinos de redirección dentro de un parámetro return_url y firmar peticiones que deben coincidir byte a byte, todo depende de una codificación correcta. Los servidores web y los frameworks descodifican las URLs entrantes automáticamente, así que la forma codificada suele ser algo que produces más que algo que lees.
Un hábito útil es codificar cada pieza dinámica por separado a medida que ensamblas una URL, en lugar de codificar la cadena terminada de una sola pasada. Eso mantiene intactos tus delimitadores a la vez que hace seguro cada valor, y esquiva tanto la codificación insuficiente que rompe los enlaces como la doble codificación que los corrompe.
Preguntas frecuentes
¿Qué hace realmente la codificación de URL?
¿Esta herramienta puede tanto codificar como decodificar?
¿Maneja los caracteres especiales y otros idiomas?
¿Cuál es la diferencia entre codificar una URL completa y un solo valor?
¿Son privados mis datos y es gratuita la herramienta?
Herramientas relacionadas
Sigue trabajando con estas prácticas herramientas