Decodificar URL
Convierte %E2%9C%93 de nuevo en ✓. Las cadenas con doble codificación, la codificación de formularios y las entradas medio rotas se procesan en lugar de rechazarse. No se guarda nada.
- Nunca se guarda
- Sin filas ni esperas
- Sin registro, sin marca de agua
Aquí aparece: Decodificado.
Cómo funciona
Pega el texto codificado
Una URL completa, una cadena de consulta o un solo valor.
Elige la variante si hace falta
Decodificación estándar o de formulario, donde + significa espacio. Si no estás seguro, la página te muestra cuándo difieren las dos.
Copia el resultado
Vuelve a decodificar si el texto se codificó dos veces, algo habitual y fácil de detectar en cuanto lo ves.
La ambigüedad que nadie puede resolver por ti
Decodificar es mecánicamente sencillo (se busca cada % seguido de dos dígitos hexadecimales, se convierte de nuevo en un byte y luego se leen los bytes como UTF-8) y tiene exactamente una ambigüedad real. Un signo más puede significar un espacio o puede significar un más. En un formulario enviado significa un espacio, por una convención más antigua que la propia especificación de URL de la web. En un segmento de ruta es un carácter literal. Nada en el texto indica cuál de las dos aplica, así que la página te muestra ambas lecturas en lugar de elegir una y equivocarse sin avisar, algo que importa sobre todo en el caso donde más duele: una dirección de correo o un valor en Base64 en los que el más es un dato real.
El texto que no es ASCII llega como varias secuencias de porcentaje por carácter, porque la codificación trabaja con los bytes de UTF-8 y no con caracteres: una letra con tilde son dos, la mayoría de los símbolos tres y un emoji cuatro. Si decodificas una secuencia que no es UTF-8 válido, obtienes caracteres de reemplazo, normalmente señal de que el texto se codificó desde otro juego de caracteres o de que se cortó a mitad de un carácter.
Decodificar dos veces es un fallo de seguridad, no solo un error. Si un valor se decodifica, se comprueba y luego se vuelve a decodificar, un atacante puede ocultar caracteres a la comprobación: %252e%252e%252f pasa un filtro que busca "../" porque tras una pasada sigue siendo %2e%2e%2f, y tras la segunda es justo el recorrido de directorios que el filtro debía impedir. Decodifica exactamente una vez, luego valida, y nunca en el orden inverso.
El texto que nunca se codificó vuelve sin cambios, no destrozado, que es justo lo útil cuando no sabes si una cadena necesita decodificarse. Un signo de porcentaje que no va seguido de dos dígitos hexadecimales se deja tal cual en lugar de tratarse como un error: es un porcentaje literal, algo habitual en texto que se pegó en lugar de codificarse.
Si buscas otra cosa
En código, el decodificador debe corresponder al codificador. JavaScript tiene decodeURIComponent; Python separa unquote de unquote_plus justamente por la cuestión del signo más; PHP tiene rawurldecode y urldecode por la misma razón. Mejor aún, deja que lo haga un tipo URL o un analizador de cadenas de consulta: la mayoría de los frameworks ya decodifican los parámetros por ti, y volver a decodificarlos después es exactamente como se escribe el fallo de doble decodificación de arriba.
Para inspeccionar una URL larga en lugar de decodificar un valor, un analizador es mejor que un decodificador: python -c "import urllib.parse,sys; print(urllib.parse.urlparse(sys.argv[1]))" separa una dirección en sus partes para que veas qué pieza es cuál antes de decodificar nada, que suele ser la verdadera pregunta cuando un enlace no funciona bien.
Preguntas frecuentes
Mi texto sigue teniendo %25 después de decodificarlo
Entonces se codificó dos veces, algo muy habitual: ocurre cada vez que un valor ya codificado se vuelve a codificar al pasar por una redirección o una capa de registro. %25 es la codificación del propio carácter %, así que la primera decodificación convierte %2520 en %20 y una segunda lo convierte en un espacio. Solo tienes que decodificar otra vez. La página te avisa cuando detecta el patrón.
¿El "+" debe convertirse en espacio?
Depende de dónde venga la cadena, y por eso es una opción y no una suposición. En un cuerpo application/x-www-form-urlencoded (un formulario HTML enviado), + significa espacio. En un segmento de ruta, o en datos que simplemente viajaron dentro de una URL, + es un signo más literal y convertirlo en espacio corrompe el valor. Las cadenas Base64 son el caso que más duele: contienen caracteres + reales, y decodificarlas como formulario las destruye.
¿Qué pasa con una cadena dañada?
Decodifica lo que puede y deja el resto como está, en lugar de rechazarlo todo. Un % suelto que no forma parte de un escape válido (algo habitual cuando el texto ya se decodificó en parte o está truncado) hace que el decodificador del propio navegador lance un error y no devuelva nada. Aquí se decodifica cada escape válido y los caracteres sueltos se dejan tal cual, lo que resulta mucho más útil cuando intentas leer una línea de registro dañada.
¿Se guarda mi texto en algún lugar?
No. No se guarda nada y no se hace ninguna solicitud. Puedes desconectarte de internet después de que cargue la página y sigue funcionando.
¿Puedo decodificar una URL completa de una vez?
Sí. Pégala entera: la estructura se mantiene legible y solo las partes codificadas se convierten de nuevo en texto, así que una URL larga con varios parámetros codificados se convierte en algo que de verdad puedes leer.
Conviene saber: El signo más es ambiguo: en una cadena de consulta significa un espacio y en una ruta es un signo más literal. La página decodifica de las dos formas y te muestra cuál es cuál en lugar de adivinar. Un texto que nunca se codificó con porcentajes se devuelve sin cambios, no destrozado.
Agrega esta herramienta a tu sitio web
Gratis para cualquier blog, página de clase o artículo de ayuda. Pega un fragmento de código y tus visitantes podrán usarla directamente en tu página.
Más Herramientas para desarrolladores
Codificar URL
Haz que un texto sea seguro dentro de una URL
Decodificar Base64
Convierte Base64 de nuevo en texto o en un archivo
Formatear JSON
Convierte un JSON ilegible en uno legible
Decodificar JWT
Lee el contenido de un token de forma privada
Generador de códigos QR
Un código QR que sigue siendo tuyo
Generador de códigos de barras
EAN, UPC, Code 128, con los dígitos verificados