Codificar y decodificar URL

Codifica texto a formato seguro para URLs (percent-encoding) o decodifícalo. Gratis, compatible con UTF-8 y 100 % en tu navegador.
Procesamiento 100 % local · tus archivos no salen de tu navegador
Publicidad

Convierte los espacios y caracteres especiales (tildes, &, ?, /…) en código %XX para que la URL sea válida. Ejemplo: «café & té» → «caf%C3%A9%20%26%20t%C3%A9».

El resultado aparecerá aquí…

Todo se procesa en tu navegador.

Las direcciones web tienen un alfabeto muy corto

La norma que describe cómo se escribe una dirección de internet, la RFC 3986, admite un repertorio sorprendentemente limitado de caracteres. Todo lo demás —espacios, acentos, la ñ, los símbolos de puntuación menos habituales— debe representarse de otra forma, y esa forma es el percent-encoding: el símbolo de porcentaje seguido del valor hexadecimal de cada byte. Un espacio se escribe %20, un signo de interrogación %3F. La traducción es exacta y reversible, así que el destinatario recupera el texto tal cual lo escribiste.

Dos familias de caracteres

Los no reservados

Las letras de la A a la Z en ambas cajas, los diez dígitos y cuatro símbolos —el guion, el punto, el guion bajo y la virgulilla— pueden aparecer siempre tal cual. Nunca hace falta tocarlos y, de hecho, codificarlos innecesariamente está desaconsejado porque dos direcciones que solo se diferencian en eso deberían considerarse la misma.

Los reservados

Otro grupo de caracteres sí está permitido, pero tiene un trabajo asignado: la barra separa los tramos de la ruta, el interrogante abre la lista de parámetros, el ampersand separa un parámetro del siguiente, el igual une un nombre con su valor y la almohadilla marca el ancla dentro de la página. Aquí está la clave de todo el asunto: si uno de esos símbolos forma parte de un valor en vez de cumplir su función estructural, hay que codificarlo. De lo contrario el servidor leerá la dirección de una forma que tú no pretendías.

Publicidad

El eterno lío del espacio: %20 frente a +

Verás las dos formas y ambas son correctas, pero no en el mismo sitio. El %20 es la codificación general y funciona en cualquier parte de la dirección. El signo de suma viene de los formularios web clásicos, que envían sus datos con un formato propio en el que el espacio se representa así, y solo tiene ese significado dentro de la parte de consulta, jamás en la ruta.

La consecuencia práctica conviene grabársela: si tu valor contiene un signo de suma de verdad, como un prefijo telefónico internacional, tienes que codificarlo como %2B. Si no lo haces, quien reciba el parámetro verá un espacio donde tú querías un más.

encodeURI o encodeURIComponent

El navegador ofrece dos funciones y elegir mal es la fuente número uno de enlaces rotos. encodeURI asume que le pasas una dirección completa y por eso deja intactos los caracteres reservados: sirve para arreglar una URL que ya está montada y contiene espacios o acentos. encodeURIComponent asume lo contrario, que le pasas una pieza suelta, y codifica también las barras, los interrogantes y los ampersands. Es la que necesitas para cada valor que insertas en un parámetro, y es la que usa esta herramienta.

Acentos, ñ y UTF-8

El percent-encoding trabaja con bytes, no con letras, así que primero hay que decidir cómo se convierte el texto en bytes. El estándar de facto es UTF-8, donde los caracteres del inglés ocupan un byte y el resto ocupan dos, tres o cuatro. Por eso una ñ genera dos grupos de porcentaje (%C3%B1) y un emoji puede generar cuatro. Si al decodificar aparecen símbolos extraños en lugar de los acentos, casi siempre el problema es que algo por el camino asumió una codificación antigua distinta de UTF-8.

Publicidad

Tres formas de romper un enlace

  1. Codificar dos veces. El resultado se reconoce por la secuencia %2520: el porcentaje del %20 se volvió a codificar. Suele pasar cuando un sistema codifica un valor que otro ya había codificado antes.
  2. Codificar la dirección entera con la función del valor. Terminas con las barras convertidas en %2F y un enlace que ya no apunta a ninguna parte.
  3. Olvidar el ampersand dentro de un valor.Un texto de búsqueda con un & sin codificar parte el parámetro en dos y el servidor recibe algo que no existe.

Cuando tengas que limpiar cadenas para una dirección, el generador de slugs y el eliminador de acentos te ahorran trabajo. Para otros formatos de codificación mira el codificador Base64; para insertar texto en una página, escapar HTML; y si necesitas convertir el enlace en un código escaneable, tienes el generador de códigos QR. Todo el catálogo está en herramientas.

Preguntas frecuentes

¿Qué es exactamente el percent-encoding?

Es el mecanismo que define la norma RFC 3986 para meter en una dirección web caracteres que no están permitidos. Cada carácter conflictivo se sustituye por el símbolo de porcentaje seguido de su valor en hexadecimal, de modo que la dirección sigue siendo válida y se puede reconstruir el original sin ambigüedad.

¿Por qué un espacio se convierte en %20?

Porque el espacio no puede aparecer dentro de una dirección: partiría el enlace en dos al copiarlo o al enviarlo. Su valor numérico es 32, que en hexadecimal se escribe 20, de ahí la secuencia %20.

Entonces, ¿por qué a veces veo un signo + en lugar de %20?

Es la costumbre heredada de los formularios web clásicos, que codifican los espacios como signos de suma dentro de la parte de consulta. Solo es válido ahí, nunca en la ruta, y obliga a codificar el propio signo de suma cuando forma parte del valor, por ejemplo en un número de teléfono internacional.

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

encodeURI está pensada para una dirección entera y respeta los caracteres que le dan estructura, como las barras o el interrogante. encodeURIComponent trata el texto como un valor suelto y codifica también esos separadores, que es justo lo que necesitas al construir un parámetro. Esta herramienta usa la segunda.

¿Se conservan las tildes y la ñ?

Sí. El texto se convierte primero a UTF-8 y después cada byte se escribe en hexadecimal, así que una ñ ocupa dos grupos de porcentaje y un emoji suele ocupar cuatro. Al decodificar se recupera el carácter exacto.

¿Qué significa ver %2520 en un enlace?

Que la dirección se ha codificado dos veces: el símbolo de porcentaje del %20 original se volvió a codificar como %25. Es el síntoma clásico de una doble codificación y basta con decodificar una vez para dejarlo en %20.

¿Se guarda o se envía a algún sitio lo que pego?

No hay servidor implicado: la conversión la realizan funciones nativas del navegador dentro de tu propia pestaña, así que puedes pegar enlaces internos, parámetros con datos de clientes o direcciones de pruebas sin que salgan de tu equipo.

Herramientas relacionadas

Publicidad