Cómo decodificar Base64 a JSON
- Pega el Base64 en Entrada · Base64. La página se abre con un ejemplo que puedes sustituir.
- El JSON aparece en Salida · texto, con una sangría de dos espacios. Formatear JSON está activado por defecto; desmárcalo para ver el texto decodificado exacto.
- Revisa la línea de estado: Parece JSON significa que el resultado se interpretó como JSON válido.
- Copiar salida copia el JSON formateado. Descargar guarda los bytes decodificados originales como
decoded.json.
El ejemplo eyJpZCI6NDIsIm5hbWUiOiJiYXNlNjRodWIiLCJ0YWdzIjpbImpzb24iLCJkZWNvZGUiXSwiYWN0aXZlIjp0cnVlfQ== se decodifica y formatea así:
{
"id": 42,
"name": "base64hub",
"tags": [
"json",
"decode"
],
"active": true
}
Para el sentido contrario, usa JSON a Base64.
Cómo reconocer JSON dentro de Base64
El JSON casi siempre empieza por { o [, y esos bytes producen unos pocos comienzos reconocibles:
| El Base64 empieza por | Inicio decodificado | Origen típico |
|---|---|---|
eyJ | {" + una letra | Objetos compactos, encabezado y payload de JWT |
eyI | {" + un dígito o símbolo | Objetos cuya primera clave empieza por un dígito |
eyAi | { " | Objetos con espacios |
ewog | { + salto de línea + espacios | Archivos formateados |
W3s | [{ | Arrays de objetos |
WyJ | [" + una letra | Arrays de cadenas |
Así que eyJhIjoxfQ== es {"a":1} y W3siYSI6MX1d es [{"a":1}]. La página de prefijos Base64 habituales tiene más patrones de este tipo para otros formatos.
De dónde sale el JSON codificado en Base64
- El encabezado y el payload de un JSON Web Token (JWT) son JSON codificado en Base64URL, separados por puntos. Pega aquí un segmento, o el token entero en el decodificador JWT. Base64 en JWT explica el formato.
- Algunas API y webhooks pasan metadatos estructurados, cursores de paginación o payloads de eventos como cadenas Base64 dentro de otro documento JSON. Si tienes el documento exterior, decodificar Base64 dentro de JSON encuentra y decodifica todos esos campos de una vez.
- Un Secret
.dockerconfigjsonde Kubernetes guarda credenciales de registros de contenedores como el Base64 de un documento JSON que a su vez contiene valoresauthen Base64; el decodificador de Docker config JSON desempaqueta ambas capas. - Las variables de entorno y los secretos de CI suelen llevar una configuración JSON como una sola línea Base64 para evitar problemas con las comillas.
La entrada URL-safe (- y _, sin relleno) se acepta automáticamente, así que los segmentos de tokens se decodifican tal cual.
Cuando el JSON no se formatea
Para formatear hace falta JSON válido. Cuando falla el análisis, el texto decodificado se muestra sin cambios, lo que suele bastar para ver el problema:
- Los datos están truncados y el texto se corta a mitad de un valor. Comprueba que copiaste la cadena Base64 entera; Reparar Base64 ayuda cuando se colaron saltos de línea o comillas.
- El texto no es exactamente JSON. Las comillas simples, las comas finales (
{"a":1,}eseyJhIjoxLH0=) y los comentarios son habituales en configuraciones escritas a mano, pero no son válidos en JSON. - El juego de caracteres es incorrecto. JSON es UTF-8 por definición (RFC 8259), así que si los acentos se ven mal, el productor usó otra codificación; prueba con Juego de caracteres.
- El contenido está comprimido. Si la salida es ilegible y el Base64 empieza por
H4sI, el JSON se comprimió con gzip antes de codificarlo. Usa el decodificador Base64 gzip.
Base64 a JSON en código
import base64, json
s = "eyJpZCI6NDIsIm5hbWUiOiJiYXNlNjRodWIiLCJ0YWdzIjpbImpzb24iLCJkZWNvZGUiXSwiYWN0aXZlIjp0cnVlfQ=="
data = json.loads(base64.b64decode(s))
print(json.dumps(data, indent=2))
json.loads acepta los bytes directamente. En JavaScript, decodifica a bytes y pásalos por TextDecoder, porque JSON.parse(atob(s)) estropea cualquier carácter no ASCII:
const s = "eyJuYW1lIjoiYmFzZTY0aHViIn0=";
const json = new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)));
JSON.parse(json).name; // "base64hub"
Consulta Base64 en Python y Base64 en JavaScript para las variantes URL-safe.
Preguntas frecuentes
¿Cómo decodifico Base64 a JSON?
Pega el Base64 arriba. El JSON decodificado se formatea, y Descargar lo guarda como decoded.json. En código: json.loads(base64.b64decode(s)) en Python, JSON.parse(Buffer.from(s, "base64").toString()) en Node.js.
¿Por qué mi JSON no se formatea?
El texto decodificado no es JSON válido, así que se muestra tal cual. Las causas típicas son una cadena truncada, comillas simples, una coma final o comentarios. El campo «Parece» indica entonces Text en lugar de JSON.
¿Cómo sé si una cadena Base64 es JSON?
La mayoría de los objetos JSON se codifican en una cadena que empieza por eyJ, que es {" seguido de una letra. Los arrays de objetos empiezan por W3s, y el JSON formateado suele empezar por ewog.
¿Puedo decodificar aquí el payload de un JWT?
Sí, pega el segmento central (entre los dos puntos). Para el token completo con fechas de caducidad y comprobación de la firma, usa el decodificador JWT.