Como decodificar Base64 para JSON
- Cole o Base64 em Entrada · Base64. A página abre com um exemplo que você pode substituir.
- O JSON aparece em Saída · texto, indentado com dois espaços. Formatar JSON vem ligado por padrão; desmarque para ver o texto decodificado exato.
- Confira a linha de status: Parece ser JSON significa que o resultado foi lido como JSON válido.
- Copiar saída copia o JSON formatado. Baixar salva os bytes decodificados originais como
decoded.json.
O exemplo eyJpZCI6NDIsIm5hbWUiOiJiYXNlNjRodWIiLCJ0YWdzIjpbImpzb24iLCJkZWNvZGUiXSwiYWN0aXZlIjp0cnVlfQ== decodifica e é formatado assim:
{
"id": 42,
"name": "base64hub",
"tags": [
"json",
"decode"
],
"active": true
}
Para o caminho inverso, use JSON para Base64.
Como reconhecer JSON dentro do Base64
JSON quase sempre começa com { ou [, e esses bytes geram algumas aberturas fáceis de reconhecer:
| O Base64 começa com | Início decodificado | Origem típica |
|---|---|---|
eyJ | {" + uma letra | Objetos compactos, header e payload de JWT |
eyI | {" + um dígito ou símbolo | Objetos cuja primeira chave começa com dígito |
eyAi | { " | Objetos com espaços |
ewog | { + quebra de linha + espaços | Arquivos formatados |
W3s | [{ | Arrays de objetos |
WyJ | [" + uma letra | Arrays de strings |
Então eyJhIjoxfQ== é {"a":1} e W3siYSI6MX1d é [{"a":1}]. A página de prefixos comuns de Base64 traz mais desses padrões para outros formatos.
De onde vem o JSON codificado em Base64
- O header e o payload de um JSON Web Token (JWT) são JSON codificado em Base64URL, separados por pontos. Cole um segmento aqui ou o token inteiro no decodificador de JWT. Base64 no JWT explica o formato.
- Algumas APIs e webhooks passam metadados estruturados, cursores de paginação ou payloads de eventos como strings Base64 dentro de outro documento JSON. Se você tem o documento externo, decodificar Base64 dentro de JSON encontra e decodifica todos esses campos de uma vez.
- Um Secret
.dockerconfigjsondo Kubernetes guarda credenciais de registry de contêiner como Base64 de um documento JSON que, por sua vez, contém valoresauthem Base64; o decodificador de Docker config JSON desmonta as duas camadas. - Variáveis de ambiente e segredos de CI muitas vezes carregam uma configuração JSON como uma única linha Base64, para evitar problemas com aspas.
Entrada URL-safe (- e _, sem preenchimento) é aceita automaticamente, então segmentos de token decodificam como estão.
Quando o JSON não é formatado
A formatação exige JSON válido. Quando o parse falha, o texto decodificado aparece sem alterações, o que geralmente basta para enxergar o problema:
- Os dados estão truncados e o texto termina no meio de um valor. Confira se você copiou a string Base64 inteira; Reparar Base64 ajuda quando quebras de linha ou aspas se misturaram.
- O texto não é bem JSON. Aspas simples, vírgulas sobrando no final (
{"a":1,}éeyJhIjoxLH0=) e comentários são comuns em configurações escritas à mão, mas inválidos em JSON. - O charset está errado. JSON é UTF-8 por definição (RFC 8259), então, se os caracteres acentuados saírem errados, quem gerou usou outra codificação; experimente o Charset.
- O payload está compactado. Se a saída estiver ilegível e o Base64 começar com
H4sI, o JSON passou por gzip antes de ser codificado. Use o decodificador de Base64 gzip.
Base64 para JSON no código
import base64, json
s = "eyJpZCI6NDIsIm5hbWUiOiJiYXNlNjRodWIiLCJ0YWdzIjpbImpzb24iLCJkZWNvZGUiXSwiYWN0aXZlIjp0cnVlfQ=="
data = json.loads(base64.b64decode(s))
print(json.dumps(data, indent=2))
O json.loads aceita os bytes diretamente. Em JavaScript, decodifique para bytes e depois passe pelo TextDecoder, porque JSON.parse(atob(s)) estraga qualquer caractere fora do ASCII:
const s = "eyJuYW1lIjoiYmFzZTY0aHViIn0=";
const json = new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)));
JSON.parse(json).name; // "base64hub"
Veja Base64 em Python e Base64 em JavaScript para as variantes URL-safe.
Perguntas frequentes
Como decodificar Base64 para JSON?
Cole o Base64 acima. O JSON decodificado é formatado, e Baixar salva como decoded.json. No código: json.loads(base64.b64decode(s)) em Python, JSON.parse(Buffer.from(s, "base64").toString()) em Node.js.
Por que meu JSON não foi formatado?
O texto decodificado não é JSON válido, então aparece do jeito que está. As causas típicas são string truncada, aspas simples, vírgula sobrando no final ou comentários. Nesse caso o campo “Parece ser” mostra Text em vez de JSON.
Como saber se uma string Base64 é JSON?
A maioria dos objetos JSON vira uma string que começa com eyJ, que é {" seguido de uma letra. Arrays de objetos começam com W3s, e JSON formatado muitas vezes começa com ewog.
Dá para decodificar o payload de um JWT aqui?
Dá, cole o segmento do meio (entre os dois pontos). Para o token inteiro, com datas de expiração e verificação de assinatura, use o decodificador de JWT.