Decodificar Base64

Pega una cadena en Base64 y lee lo que dice. Se aceptan los dos alfabetos y el relleno es opcional, así que un token copiado de una cabecera funciona tal cual. Si los bytes de detrás no son texto se te dice, en vez de devolverte símbolos de sustitución que parecen un resultado — y como esto es lo que más credenciales recibe de todo el sitio, la operación pasa entera en tu pestaña.

Resultado

La respuesta aparece aquí mientras escribes.

  • Dónde se ejecuta

    No se sube nada, porque no hay archivo: se calcula en esta misma página.

  • Sin cola y sin cuenta

    Responde tan rápido como dé tu máquina, y nunca pregunta quién eres.

  • Tantas veces como quieras

    No se cuenta nada ni se limita nada: volver a responder no nos cuesta nada.

Cómo funciona

  1. Pega la cadena en Base64. El relleno con signos igual puede estar o no estar.
  2. Lee el texto. Si lo de dentro es un archivo y no una cadena, se indica.
  3. No se ha subido nada.

Lo que casi siempre hay dentro

Por orden de frecuencia: un JWT, una cabecera de Basic Auth, el valor de un secreto de Kubernetes, un payload de webhook. Tres de esas cuatro son credenciales, y la cuarta suele llevar datos de personas.

Por eso esta página no tiene servidor detrás. No es una postura: es la consecuencia directa de para qué se usa. Una herramienta que decodifique esto en remoto ha visto la credencial y la tiene en su registro de peticiones, y ningún aviso legal cambia ese hecho.

Un JWT son tres partes, y solo dos se leen

Un JWT es cabecera, payload y firma, separados por puntos y cada uno en Base64 seguro para URL. Las dos primeras partes son JSON y se leen sin más; la tercera es la firma y no es texto, así que decodificarla no da nada aprovechable.

La consecuencia incómoda es que el contenido de un token no es secreto: cualquiera que lo tenga puede leer a quién pertenece, cuándo caduca y qué permisos declara. La firma impide modificarlo, no leerlo. Meter datos personales en el payload de un JWT es, por tanto, publicarlos ante cualquiera que vea el token.

Cuando lo de dentro no es texto

Una cadena en Base64 puede contener un PNG, un PDF o un ZIP igual de bien que una frase. Al leer esos bytes como texto salen símbolos de sustitución, y muchas herramientas te devuelven eso tal cual, con lo que parece que el Base64 estaba roto cuando estaba perfecto.

Aquí se distingue: si la cadena es Base64 válido pero los bytes no forman texto, se te dice eso y cuántos bytes son. Es la respuesta útil, porque cierra la búsqueda de un error de codificación que no existe y traslada la pregunta a qué clase de datos son en realidad.

El relleno que a veces falta

Los JWT quitan los signos igual del final a propósito, porque la especificación de Base64 seguro para URL lo permite. Muchas bibliotecas, en cambio, se niegan a decodificar sin relleno y devuelven un error que no explica nada.

Este decodificador lo repone solo cuando hace falta, así que un token copiado de una cabecera se lee tal cual. Si tu código falla con un valor que aquí funciona, esa suele ser la razón exacta, y la solución es rellenar hasta el siguiente múltiplo de cuatro antes de pasárselo a la biblioteca.

Los dos alfabetos se aceptan mezclados

El alfabeto estándar usa `+` y `/`; el seguro para URL usa `-` y `_`. Aquí se admiten ambos sin preguntar, porque saber cuál te ha tocado no debería ser un requisito previo para leer una cadena que alguien te ha pegado.

Sí conviene saberlo en el otro sentido. Si estás generando un valor que va a viajar en una dirección y usas el alfabeto estándar, la barra romperá la ruta y el más se leerá como espacio: el valor llega, pero cambiado, y el fallo aparece muy lejos del sitio donde se produjo.

Los saltos de línea se ignoran

El correo parte el Base64 en líneas de 76 caracteres y los certificados PEM en 64, porque así lo exigen sus estándares. Un valor copiado de un fichero `.pem` o del cuerpo de un correo llega, por tanto, con saltos de línea dentro.

Se ignoran, junto con los espacios sueltos que aparecen al copiar de un terminal. No hay que limpiar nada antes: si algo de lo que has pegado no forma parte del alfabeto, se te dice cuál es el problema en lugar de decodificar a medias y devolver un resultado que parece bueno.

Decodificar no es validar

Que una cadena se decodifique no significa que su contenido sea correcto. Un JWT caducado se lee igual de bien que uno vigente, y una firma falsa se decodifica exactamente igual que una buena, porque comprobar la firma requiere la clave y esta página no la tiene ni la quiere.

Sirve para leer, no para confiar. Si lo que necesitas es saber si un token es válido, eso lo tiene que decir el sistema que lo emitió; lo que esta página responde es qué dice, que es una pregunta distinta y normalmente la primera.

Los caracteres de sustitución y de dónde salen

Si en el resultado aparecen rombos con un interrogante, los bytes no formaban UTF-8 válido. Puede ser que sean datos binarios — un archivo, no texto — o que el texto se codificara originalmente en Latin-1 y ahora se esté leyendo como UTF-8.

Distinguir los dos casos es sencillo por el patrón: un archivo da basura desde el primer byte, mientras que un texto en Latin-1 se lee bien salvo justo en las tildes y las eñes. Ese segundo caso es el clásico de los datos españoles mal migrados, y aparece en una base de datos con la colación equivocada mucho antes que en un Base64.

Los secretos de Kubernetes solo están en Base64

Un `Secret` de Kubernetes guarda sus valores en Base64, y eso confunde a mucha gente: no está cifrado en reposo salvo que se configure aparte, y cualquiera con permiso para leer el recurso lee la credencial con un solo paso.

Por eso conviene tener claro qué protege qué. El Base64 está ahí para que valores binarios quepan en YAML, no para ocultarlos. La protección real son los permisos del clúster y, si hace falta, el cifrado en reposo — y un valor de un `Secret` pegado en una herramienta online es una credencial que ha salido del clúster.

Qué significa esto para el RGPD

De todas las páginas de este sitio, esta es la que más credenciales y datos personales recibe: payloads de webhook con nombres y direcciones, tokens que identifican a una persona, volcados de configuración. Como la decodificación ocurre en la página, nada de eso se nos comunica.

Es lo que hace utilizable la herramienta en un entorno con una política interna seria. Un servicio que decodificara en remoto habría recibido el dato personal y lo tendría en sus registros, y ese es exactamente el supuesto que esas políticas existen para evitar. El panel de red lo demuestra en un minuto.

Por qué esta página no codifica también

Codificar tiene su propia página porque es otro momento. Quien codifica está montando algo y tiene que decidir el alfabeto; quien decodifica está leyendo algo que le ha llegado y necesita saber qué hacer cuando el resultado no es texto.

El motor es el mismo y las explicaciones no. Una página conjunta con un selector obligaría a cada visitante a atravesar la mitad que no le sirve, y las dos secciones que de verdad resuelven su problema quedarían diluidas entre las que no.

Decodificar Base64: preguntas frecuentes

¿Puedo leer un JWT aquí?

Sí: pega la parte que te interese. Un JWT son tres bloques separados por puntos, y los dos primeros son JSON. El tercero es la firma y no es texto, así que decodificarlo no da nada legible.

Mi cadena no tiene signos igual al final, ¿es un problema?

No. El relleno se repone aquí cuando hace falta. Los JWT lo omiten a propósito, y esa es justo la razón por la que muchas bibliotecas rechazan un token que a simple vista está perfecto.

¿Por qué me dice que no es texto?

Porque la cadena es Base64 válido pero los bytes de dentro no forman texto: es un archivo — un PNG, un PDF, un ZIP — y no una frase. Se indica en vez de devolver símbolos de sustitución que parecerían un resultado.

¿Comprueba si el token es válido?

No. Verificar una firma requiere la clave, que esta página no tiene ni quiere. Aquí se lee lo que dice el token; si es vigente y auténtico lo tiene que decir el sistema que lo emitió.

¿Sale de mi equipo lo que pego?

No. Se decodifica en esta página. Importa más aquí que en ninguna otra: lo que la gente pega en un decodificador de Base64 son, en su mayoría, credenciales.

Otras herramientas