Guias de Base64
Estes guias práticos explicam o que o Base64 faz, quando usá-lo e como solucionar problemas com dados reais. Os exemplos usam Base64 padrão, salvo indicação em contrário.
Tutoriais independentes relacionados
- O que é Base64?
- JavaScript e UTF-8
- Python Base64
- Base64URL e preenchimento
- Imagens com URL de dados
- Conjuntos de caracteres UTF-8
- Ler JWT com segurança
- Erros comuns
1. O que é Base64
Base64 é uma codificação de binário para texto. Ela mapeia cada grupo de três bytes para quatro caracteres imprimíveis escolhidos entre A-Z, a-z, 0-9, sinal de mais (+) e barra (/). Um sinal de igual (=) preenche o grupo final quando o tamanho original não é divisível por três. Como cada grupo de quatro caracteres representa três bytes, a representação normalmente cresce cerca de um terço.
O formato é útil quando o transporte espera texto, mas os dados são binários. Partes MIME de e-mail, campos JSON, URLs de dados, arquivos de configuração e payloads de API são exemplos comuns. Para arquivos grandes, o aumento de tamanho pode custar largura de banda e memória.
2. Codificar texto corretamente
O texto deve primeiro ser convertido em bytes com um conjunto de caracteres definido. UTF-8 é o padrão mais seguro para aplicações modernas porque representa Unicode de modo consistente. A string café, por exemplo, é codificada a partir de seus bytes UTF-8, não diretamente dos caracteres visuais.
No navegador, escolha o charset de origem, cole o texto e confira o resultado. Preserve quebras de linha de forma intencional: codificar o parágrafo inteiro e codificar cada linha separadamente gera strings diferentes. Em APIs, documente o charset e a normalização de LF ou CRLF.
3. Decodificar texto ou arquivos
Bytes decodificados nem sempre são texto. Um PNG, PDF, ZIP ou certificado pode decodificar corretamente e ainda parecer sem sentido em uma caixa de texto. Use um decodificador voltado a arquivos quando a entrada começar com uma URL de dados como data:application/pdf;base64,... ou quando a origem for binária.
Sistemas de e-mail e documentação costumam inserir espaços ou quebras de linha em Base64. Decodificadores padrão podem remover quebras inofensivas, mas alterações acidentais dentro do alfabeto corrompem os dados. Compare assinatura de arquivo e tamanho ao investigar.
Experimente com o decodificador Base64.
4. Base64URL e preenchimento
URLs tratam mais e barra de modo especial, então Base64URL troca + por - e / por _. Muitos produtores também removem o preenchimento final. Um decodificador URL-safe deve restaurar o preenchimento esperado antes de converter os bytes finais.
Base64URL é comum em JSON Web Tokens e parâmetros de URL. Não é criptografia e não torna um token confiável. Aplicações ainda precisam autenticar, autorizar, validar tamanho e proteger segredos com criptografia ou um desenho de token seguro.
5. URLs de dados em HTML e CSS
Uma URL de dados incorpora tipo de mídia e payload codificado em uma única string, por exemplo data:image/png;base64,.... É prática para ícones pequenos, dados de teste ou demos autocontidas. URLs de dados grandes dificultam cache e manutenção; arquivos estáticos comuns costumam ser melhores.
Ao decodificar uma URL de dados, mantenha os metadados antes da vírgula separados do payload Base64. O tipo de mídia diz como interpretar os bytes, mas não prova que eles são válidos. Valide assinaturas de arquivo antes de exibir conteúdo não confiável.
6. Base64 em APIs e JWTs
APIs frequentemente usam Base64 para campos binários, mas JSON já é texto e geralmente não precisa de Base64 para strings comuns. JWTs usam header e payload codificados com Base64URL e separados por pontos. Essas partes são legíveis, não armazenamento confidencial.
Ao integrar uma API, registre se o preenchimento é exigido, se quebras de linha são permitidas, o charset esperado e o tamanho máximo do payload. Teste entrada vazia, texto Unicode, valores de um e dois bytes e caracteres malformados.
7. Segurança e privacidade
Base64 no máximo ofusca. Ele não autentica uma mensagem, não impede adulteração e não protege segredos. Trate conteúdo decodificado como entrada não confiável e aplique validação normal antes de analisar, renderizar ou executar.
Para fluxos confidenciais, use uma linha de comando local ou biblioteca offline sob os controles da sua organização. Para transporte seguro, use HTTPS e um esquema de criptografia ou criptografia autenticada apropriado.
8. Erros comuns e checklist
“Invalid character” geralmente significa que um decodificador padrão recebeu caracteres URL-safe ou pontuação estranha. “Incorrect padding” costuma indicar string truncada ou sinais de igual finais removidos. Texto ilegível normalmente aponta para charset incorreto; uma prévia ilegível após decodificação bem-sucedida pode ser apenas binário.
Verifique nesta ordem: valor completo copiado, alfabeto padrão ou URL-safe identificado, apenas espaços permitidos removidos, charset original escolhido, tamanho em bytes comparado e assinatura de arquivo esperada inspecionada. Guarde um teste conhecido como SGVsbG8= (texto UTF-8 “Hello”).
Experimente com o codificador Base64.
const text = "Hello, Base64!";
const encoded = btoa(unescape(encodeURIComponent(text)));
console.log(encoded); // SGVsbG8sIEJhc2U2NCE=
const decoded = decodeURIComponent(escape(atob(encoded)));
console.log(decoded);
import base64
value = "你好, Base64"
encoded = base64.b64encode(value.encode("utf-8")).decode("ascii")
decoded = base64.b64decode(encoded).decode("utf-8")
print(encoded)
print(decoded)
# Decode a text value on macOS or Linux
printf 'SGVsbG8=' | base64 --decode
# URL-safe decoding in Python
import base64
base64.urlsafe_b64decode("SGVsbG8")
Conteúdo revisado: 30 de agosto de 2026