Ajude a melhorar o JSON Workbench: conte como você usa.
01

O que é Base64

Base64 é uma forma de representar qualquer dado binário usando apenas 64 caracteres imprimíveis. Não é criptografia, é só «outro jeito de escrever» os mesmos bytes. Os 64 caracteres são A–Z, a–z, 0–9, + e /, com = como preenchimento no final. Como esses caracteres passam sem problema por cabeçalhos HTTP, JSON, XML, e-mails e URLs, o Base64 é usado para enviar imagens e dados binários por canais que só aceitam texto.

Por que 64 caracteres? Porque 64 = 2⁶: cada caractere carrega exatamente 6 bits. O codificador lê 3 bytes (24 bits), divide em quatro grupos de 6 bits e converte cada grupo em um caractere:

M
'M' = 77
01001101
a
'a' = 97
01100001
n
'n' = 110
01101110
24 bits
010011010110000101101110→ 4 × 6 bits
T
010011 = 19
W
010110 = 22
F
000101 = 5
u
101110 = 46

Man → TWFu — Toda string Base64 que você encontrar, inclusive as de JWT e de data URI, funciona igualzinho a este exemplo.

33% maior. 3 bytes de entrada viram 4 caracteres, então o resultado fica cerca de um terço maior. Se a entrada não for múltipla de 3, o preenchimento = completa até um múltiplo de 4.
Qualquer pessoa consegue reverter. Não há chave nem segredo: o mesmo alfabeto existe em todas as linguagens e decodificadores, e reverter leva microssegundos.
Base64 não é criptografia. Serve para transportar bytes com segurança, não para escondê-los. Quem vir dXNlcjpwYXNz consegue ler. Nunca trate uma senha ou chave de API «passada em Base64» como se estivesse protegida.
02

Onde você vai esbarrar em Base64

Quase ninguém decide usar Base64: ele aparece numa resposta de API, num cabeçalho ou num arquivo de configuração. Cada cartão é um caso real: o que você vê, o que fazer aqui e o que você recebe.

Data URI

O que você vê

Uma URL como data:image/png;base64,iVBORw0KGgo… dentro de HTML, CSS ou de um bundle do webpack.

O que fazer

Copie tudo que vem depois de base64,, cole aqui e clique em Decodificar e formatar.

O que você recebe

Conteúdos de texto (código SVG, JSON, CSV) voltam legíveis. Binários de verdade, como um PNG, saem como caracteres ilegíveis (veja Problemas comuns abaixo): esta página decodifica para texto, não para arquivos.

Token JWT

O que você vê

Um token como eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.sig: três partes separadas por pontos. As duas primeiras sempre começam com eyJ, que é só o início de um objeto JSON codificado.

O que fazer

Copie a parte do meio (entre os dois pontos), cole aqui e clique em Decodificar e formatar. Ou passe o token inteiro pelo depurador JWT.

O que você recebe

O payload com as claims aparece como JSON formatado em uma aba própria, pronto para alternar entre árvore e tabela. Os caracteres URL-safe - e _ são tratados automaticamente.

Cabeçalho Authorization

O que você vê

Um cabeçalho como Authorization: Basic dXNlcjpwYXNz em um dump de requisição ou nos logs de um proxy.

O que fazer

Copie só o que vem depois de Basic, cole aqui e clique em Decodificar e formatar.

O que você recebe

As credenciais em texto puro, no caso user:pass. E um lembrete de por que a autenticação Basic só é aceitável dentro de HTTPS.

E-mails e partes MIME

O que você vê

Um bloco longo de texto quebrado em linhas sob Content-Transfer-Encoding: base64 ao ver o código-fonte de um e-mail ou um arquivo .eml.

O que fazer

Junte as linhas numa string só (as quebras de linha internas não fazem parte do alfabeto), cole e clique em Decodificar e formatar.

O que você recebe

O conteúdo de texto dessa parte do e-mail. Um anexo binário de verdade sai como ruído, pelo mesmo motivo do PNG acima.

Base64 dentro de um JSON

O que você vê

Um campo como "payload": "eyJ1c2VySWQiOjQyfQ==" numa resposta de API: algum serviço colocou dados codificados onde deveria haver texto.

O que fazer

Copie o valor, cole aqui e clique em Decodificar e formatar.

O que você recebe

Uma nova aba numerada com o resultado formatado como JSON; sua resposta original fica intacta no editor, e você pode compará-las lado a lado.

03

Codificar e decodificar

Duas direções, dois botões, nenhuma configuração. Tudo roda no seu navegador: nada é enviado nem registrado.

Texto → Base64

  1. 1Cole qualquer texto, JSON, XML ou CSV no editor vazio (ou use Colar).
  2. 2Clique em Codificar: o conteúdo do editor é substituído pela versão em Base64. A codificação é UTF-8, então acentos, cedilha, emojis e outros alfabetos são preservados sem corromper.
  3. 3Leve o resultado com Copiar ou Baixar. A saída usa o alfabeto padrão (+ e /) com o preenchimento = correto.

Base64 → texto ou JSON

  1. 1Cole a string Base64, padrão ou URL-safe, com ou sem preenchimento =.
  2. 2Clique em Decodificar e formatar (com indentação) ou Decodificar e minificar (numa linha só). Um Base64 inválido é rejeitado com uma mensagem de erro, em vez de gerar lixo.
  3. 3Se o texto decodificado for um JSON válido, ele abre formatado e validado numa nova aba; senão, abre como texto simples.
Qual usar? Codificar substitui o conteúdo pela versão codificada; decodificar mantém o original a salvo e abre o resultado ao lado. A assimetria é intencional: recodificar é barato, mas o original, às vezes, não é.
04

Abas e comparação

Sites de codificação de caixa única fazem você trabalhar uma string por vez. Esta página mantém uma sessão inteira:

Sessões multi-aba

Cada decodificação abre uma aba numerada — Base64 #1, Base64 #2, … — em vez de sobrescrever seu trabalho. Seu Base64 original vive no editor raiz: o botão + no fim da barra de abas retorna a ele, e alternar entre abas preserva o conteúdo de cada uma. Feche abas com o ✕ ao passar o mouse; fechar a última retorna ao codificador.

Comparação entre abas

Passe o mouse sobre uma aba e clique no ícone ⇄ dela, depois clique no ícone ⇄ de uma segunda aba. Uma barra de aviso confirma a seleção, e ambos os conteúdos abrem lado a lado na página de comparação JSON com seus rótulos — perfeito para descobrir por que dois resultados supostamente idênticos diferem.

JSON decodificado ganha ferramentas completas

Quando uma decodificação produz JSON, a barra troca para o conjunto completo do formatador: visualizações Code / Tree / Table, busca, Format, Minify, Anonymize, Escape/Unescape, além de Copy, Paste, Upload e Download. Decodificações que não são JSON permanecem como texto simples.

Limites honestos: as abas vivem na memória durante esta visita — não sobrevivem a um recarregamento. E como as abas não-JSON são texto puro, o botão Upload só aparece quando o conteúdo é reconhecido como JSON.
05

Armadilhas: sintoma → causa → correção

Noventa por cento dos relatos de "meu Base64 não funciona" caem em cinco grupos:

SintomaCausaCorreção
Rejeitado com “Content is not a valid Base64 string.”O validador encontrou um caractere fora do alfabeto — normalmente um espaço, quebra de linha ou aspas copiadas junto com a string — ou o comprimento deixa um caractere sobrando após remover o preenchimento.Copie novamente a string exata sem aspas ao redor, junte as linhas quebradas e verifique que nada foi truncado nas extremidades.
Funciona nesta ferramenta mas falha em outras (ou vice-versa)Falta o preenchimento =. Muitos decodificadores exigem comprimento múltiplo de 4; esta página completa automaticamente, ferramentas estritas não.Acrescente = até o comprimento dividir por 4 antes de alimentar um decodificador mais estrito.
Um segmento JWT falha ao decodificar em outro lugarJWTs usam base64url: + vira - e / vira _, muitas vezes sem preenchimento algum.Aqui é automático — ambos os alfabetos são aceitos e normalizados. Em outros lugares, troque -/_ por +// e complete o preenchimento primeiro.
A saída decodificada é ilegível, tipo �PNGA carga era binário real (imagem, zip, fonte). A decodificação produziu os bytes corretos; exibi-los como texto UTF-8 gera caracteres de substituição.Nada está corrompido — você simplesmente não pode mostrar bytes como texto. Para binários use ferramentas orientadas a arquivos ou sirva-os via data URI.
Base64 estilo e-mail não validaMIME quebra a saída em colunas de 76. Só os espaços externos são aparados aqui; quebras de linha dentro da string são caracteres ilegais.Junte as linhas numa única string (um buscar-e-substituir de quebras de linha resolve) e decodifique de novo.
“Está em Base64, então minha chave de API fica oculta, certo?”Não. Codificar não adiciona sigilo algum — qualquer decodificador, este incluído, a reverte instantaneamente.Proteja segredos com criptografia ou hashing num servidor, mantenha-os fora do código cliente por completo e rotacione qualquer chave que já tenha sido enviada codificada em Base64.
06

Cola rápida

As mesmas operações longe desta página — entradas idênticas produzem saídas idênticas:

Comando / sintaxeO que faz
btoa('Man') // 'TWFu'Codificar em JS de navegador. Só Latin-1 — falha com emojis ou qualquer caractere acima de U+00FF.
atob('TWFu') // 'Man'Decodificar em JS de navegador.
btoa(String.fromCharCode(...new TextEncoder().encode(s)))Truque de codificação seguro para Unicode — a mesma abordagem que esta ferramenta usa internamente, em blocos para entradas grandes.
echo -n 'Man' | base64 # TWFuCodificar via CLI. A flag -n suprime a quebra de linha do echo — sem ela você codificaria Man\n e obteria TWFuCg==.
echo 'TWFu' | base64 -d # ManDecodificar via CLI (GNU coreutils). O macOS usa --decode ou -D; o GNU também oferece -w 0 para desativar a quebra em 76 colunas.
data:[mediatype][;base64],DATAAnatomia de uma data URI — p. ex. data:text/plain;base64,SGVsbG8=. Tudo depois da vírgula é Base64 puro.
header.payload.signatureAnatomia de um JWT: três segmentos base64url. Cabeçalho e payload decodificam para JSON; a assinatura decodifica para bytes brutos e não deveria ser legível.
07

Perguntas frequentes

Meus dados são enviados para algum servidor?

Não. Codificar, decodificar, validar e formatar acontecem no seu navegador, com JavaScript. Não há nenhuma requisição ao servidor, e com a página carregada você pode continuar usando offline.

Decodifica o Base64 URL-safe usado nos JWT?

Sim. Os caracteres - e _ são normalizados automaticamente e a falta de preenchimento é tolerada. Só lembre que um token completo, com os pontos, não é Base64 válido: decodifique cada parte separadamente ou use o depurador JWT.

A codificação gera Base64 URL-safe?

Não. A saída sempre usa o alfabeto padrão (+, /, =). Se o sistema de destino exigir a variante URL-safe, troque + por -, / por _ e remova os = do final.

Por que decodificar abre uma nova aba em vez de substituir meu texto?

É proposital. A string original permanece no editor raiz e cada resultado ganha sua aba numerada, assim você pode decodificar vários dados em sequência, conferir um por um e mandar quaisquer dois para a comparação sem colar de novo.

Até que tamanho posso ir?

Não há limite artificial; depende da memória da aba. Vários MB passam tranquilo no computador. A codificação é feita em blocos, então entradas muito longas não quebram como uma chamada direta a btoa.

É grátis? Precisa de cadastro?

É grátis, sem conta, sem limite de uso e sem marca d'água. Como todas as ferramentas do site, roda no seu dispositivo: seus dados não são enviados nem armazenados em nenhum servidor.

Trabalhando com tokens? O depurador JWT decodifica o token completo (cabeçalho, payload e verificação de assinatura) e complementa bem a decodificação por partes desta página. Para continuar editando o resultado, use o formatador JSON; e para comparar dois resultados, a comparação de JSON continua exatamente de onde a comparação de abas parou.