Todos os artigos

Base64: para que serve a codificação e como funciona

Base64 é uma forma de representar dados binários arbitrários como texto composto apenas por letras, números e os caracteres +, / e =. Não comprime nem cifra nada: o resultado fica cerca de um terço maior, e qualquer pessoa que conheça o algoritmo pode ler o conteúdo original.

Como funciona a codificação

Os bytes de entrada são agrupados de três em três (24 bits) e divididos em quatro blocos de seis bits. Cada bloco corresponde a um caractere do alfabeto Base64 (A–Z, a–z, 0–9, +, /). Se o comprimento dos dados não for múltiplo de três bytes, o caractere de preenchimento = é adicionado no final.

Para que serve

Muitos protocolos e formatos — e-mail (MIME), URLs, JSON, XML — são pensados para texto e não lidam bem com bytes "crus": bytes nulos, caracteres de controle ou sequências que conflitam com a sintaxe do formato. O Base64 contorna isso transformando qualquer dado binário em texto seguro.

Casos de uso comuns

  • Anexos de e-mail via MIME.
  • Enviar imagens ou arquivos pequenos dentro de uma API JSON.
  • Guardar dados binários em campos de texto de um banco de dados ou arquivo de configuração.
  • Codificar as partes header e payload de um JWT.

O que Base64 NÃO é

Não é criptografia nem hashing. Qualquer pessoa pode decodificar uma string Base64 e recuperar os dados originais sem chave ou senha: é apenas um formato de representação, não uma medida de segurança.

Alfabeto padrão e URL-safe

O alfabeto clássico do Base64 usa os caracteres + e /, que têm significado especial em URLs e nomes de arquivo. Para esses casos existe a variante Base64URL, em que + é substituído por - e / por _. Se o resultado da codificação padrão for inserido numa URL sem percent-encoding adicional, os caracteres + e / podem distorcer o endereço ou entrar em conflito com os separadores de caminho.

Erro comum: preenchimento cortado ou "corrompido"

O caractere = no final da string não é lixo, mas parte da codificação, indicando quantos bytes faltam no último bloco. Se a string Base64 for copiada incompleta ou os caracteres de preenchimento forem removidos manualmente, o decodificador retorna um erro ou um resultado truncado. Alguns sistemas (por exemplo, JWT) descartam o = deliberadamente, e nesse caso o comprimento precisa ser restaurado antes de decodificar.

Experimentar a ferramenta