O que é a codificação Base64 e como ela funciona?

Base64 é um jeito de escrever qualquer dado, texto ou binário, usando só 64 caracteres seguros (A a Z, a a z, 0 a 9, além de + e /), para que ele possa passar por sistemas que só lidam com texto simples. Cada 3 bytes de entrada viram 4 caracteres, o que deixa o resultado cerca de 33 por cento maior. É uma codificação, não uma criptografia: qualquer pessoa consegue decodificar.

6 min de leitura

Base64 em um minuto

Os computadores guardam tudo como bytes, e um byte pode ter 256 valores diferentes. Muitos protocolos e formatos mais antigos, como e-mail, URLs, strings JSON e cabeçalhos HTTP, foram pensados para texto legível e podem estragar ou recusar bytes fora de um pequeno conjunto seguro. O Base64 resolve isso reescrevendo os bytes com caracteres que sobrevivem em qualquer lugar.

A ferramenta abaixo codifica o texto em Base64 enquanto você digita e decodifica de volta com um clique em Decodificar. O texto é convertido para UTF-8 antes, então letras acentuadas como ç e ã, outros alfabetos e emojis voltam exatamente como eram. A linha de status mostra quantos bytes de texto viraram quantos bytes de Base64.

Experimente aqui: Codificar Base64

Abrir a página completa da ferramenta

Como a codificação funciona, passo a passo

O Base64 pega a entrada de 3 em 3 bytes (24 bits) e divide esses 24 bits em quatro grupos de 6 bits. Seis bits comportam um número de 0 a 63, e cada número é buscado num alfabeto fixo: de 0 a 25 são A a Z, de 26 a 51 são a a z, de 52 a 61 são 0 a 9, 62 é + e 63 é /.

Pegue a palavra Man. Os bytes dela são 77, 97 e 110, ou 01001101 01100001 01101110 em binário. Reagrupados em blocos de 6 bits, ficam 010011 010110 000101 101110, que são 19, 22, 5 e 46, e isso corresponde a T, W, F e u. Então Man vira TWFu.

Quando o tamanho da entrada não é múltiplo de 3, o último grupo recebe preenchimento. Um byte que sobra gera dois caracteres mais ==, dois bytes que sobram geram três caracteres mais =. É por isso que Ma vira TWE= e M vira TQ==, e por isso Hello (5 bytes) vira SGVsbG8=.

Por que o Base64 fica 33 por cento maior

Quatro caracteres de saída carregam a informação de três bytes de entrada, então o tamanho cresce num fator de 4/3, mais até dois caracteres de preenchimento. Alguns sistemas também inserem uma quebra de linha a cada 76 caracteres (MIME, no e-mail) ou a cada 64 caracteres (certificados PEM), o que soma mais alguns por cento.

Tamanho originalTamanho em Base64Com linhas de 76 caracteres
3 bytes4 bytes4 bytes
1 KB (1.024 bytes)1.368 bytescerca de 1,4 KB
100 KBcerca de 133 KBcerca de 137 KB
1 MBcerca de 1,33 MBcerca de 1,37 MB
Anexo de e-mail de 10 MBcerca de 13,3 MBcerca de 13,7 MB

Onde você encontra Base64

  • Anexos de e-mail: o MIME codifica arquivos em Base64 com linhas de 76 caracteres, e é por isso que um arquivo de 20 MB pode ser recusado por um serviço de e-mail com limite de 25 MB por mensagem: codificado, ele passa de 27 MB.
  • Data URIs: imagens, fontes e ícones embutidos no HTML ou no CSS como data:image/png;base64, seguido do arquivo codificado.
  • Autenticação HTTP Basic: o cabeçalho Authorization: Basic seguido de usuario:senha em Base64. Qualquer pessoa que veja o cabeçalho consegue ler, então só é seguro com HTTPS.
  • JSON Web Tokens: o cabeçalho e o payload são JSON codificados em Base64url, e é por isso que um JWT começa com eyJ (a codificação dos caracteres {").
  • Certificados e chaves: arquivos PEM são Base64 entre as linhas BEGIN e END.
  • APIs e configuração: dados binários em campos JSON, secrets do Kubernetes, variáveis de ambiente e exportações de banco de dados. Muitas integrações brasileiras, como o envio de XML de nota fiscal eletrônica ou de PDFs de boleto por API, também trafegam o arquivo como string Base64.

Variantes do Base64: padrão, seguro para URL e MIME

O Base64 padrão (RFC 4648) usa + e / e completa com =. Esses três caracteres têm significado especial em endereços da web, então existe uma variante segura para URL, muitas vezes chamada de Base64url, que usa hífen e sublinhado no lugar deles e normalmente dispensa o preenchimento. JWTs e muitas APIs web usam essa forma. Na ferramenta, ative Seguro para URL para obter essa versão; o decodificador aceita as duas formas e também o preenchimento ausente.

O Base64 MIME, usado no e-mail, é o Base64 padrão dividido em linhas de no máximo 76 caracteres. Ative Linhas de 76 caracteres quando precisar de uma saída para o corpo de um e-mail ou para um arquivo no estilo PEM.

Base64 não é criptografia

Não existe chave nem segredo. Quem vê cGFzc3dvcmQxMjM= decodifica para password123 em um segundo. Trate credenciais, tokens e configurações em Base64 exatamente como texto puro: não faça commit deles em repositórios públicos, não cole em sites de confiança duvidosa e não use Base64 para esconder nada. Os secrets do Kubernetes, por exemplo, vêm codificados em Base64 por padrão, não criptografados.

Se você precisa de sigilo, use criptografia de verdade (como AES por meio de uma biblioteca adequada) e depois, se o texto cifrado tiver que viajar como texto, codifique esse resultado em Base64.

Problemas comuns ao decodificar

  • Letras acentuadas embaralhadas: o texto foi codificado com outro conjunto de caracteres. No JavaScript, btoa só aceita caracteres até o código 255 e os codifica como Latin 1, então ü vira /A== em vez da forma UTF-8 w7w=, e caracteres como o símbolo do euro geram erro. Use um codificador que entenda UTF-8, como a ferramenta desta página.
  • Erros de caractere inválido: a string contém espaços, quebras de linha ou caracteres da variante segura para URL que um decodificador rígido recusa. Esta ferramenta ignora quebras de linha e aceita os dois alfabetos.
  • O tamanho não é múltiplo de 4: o preenchimento foi removido. Acrescente = até o tamanho ser divisível por 4, ou use um decodificador que resolva isso para você.
  • O resultado parece um monte de símbolos aleatórios: os dados são binários, como uma imagem, um PDF ou um ZIP. A ferramenta avisa que são dados binários, identifica o tipo de arquivo quando consegue e deixa você salvar com Baixar.

Codificando na linha de comando

No Linux, base64 arquivo.txt codifica e base64 -d arquivo.b64 decodifica. No macOS existe o mesmo comando base64; versões mais antigas usam -D para decodificar. No Windows PowerShell, [Convert]::ToBase64String([IO.File]::ReadAllBytes("arquivo.bin")) codifica um arquivo, e certutil -encode entrada saida funciona no Prompt de Comando, mas acrescenta linhas de cabeçalho BEGIN e END. Para testes rápidos com texto, a ferramenta no navegador é mais rápida e não deixa os dados no histórico do terminal.

Passo a passo

  1. Escolha Base64 e a direçãoDefina Codificação como Base64 e Direção como Codificar, ou Decodificar se você já tem o Base64.
  2. Cole o seu textoDigite ou cole o texto, ou solte um arquivo de texto. O resultado é atualizado enquanto você digita.
  3. Escolha as opções necessáriasAtive Seguro para URL para endereços e tokens, ou Linhas de 76 caracteres para e-mail e saída no estilo PEM.
  4. Copie ou confiraCopie o resultado ou use Inverter para levá-lo à entrada e decodificar de novo, confirmando que nada se perdeu.

Perguntas frequentes

Base64 é um tipo de criptografia?

Não. Ele só muda a forma como os dados são escritos, e qualquer pessoa consegue reverter sem chave. Nunca use para proteger senhas ou segredos.

Por que strings Base64 terminam com = ou ==?

Isso é o preenchimento. Ele aparece quando o tamanho da entrada não é múltiplo de 3 bytes: um = quando sobram dois bytes, dois quando sobra um byte.

Quanto o Base64 aumenta um arquivo?

Cerca de 33 por cento, porque cada 3 bytes viram 4 caracteres. Quebras de linha a cada 76 caracteres somam mais uns 2,6 por cento.

Qual a diferença entre Base64 e Base64url?

O Base64url troca + por hífen e / por sublinhado, e normalmente omite o preenchimento =, então o resultado é seguro em URLs e nomes de arquivo. É usado em JWTs.

Meu texto é enviado quando codifico ou decodifico aqui?

Não. A codificação e a decodificação acontecem no seu navegador, então tokens e chaves ficam no seu dispositivo. A ferramenta é grátis e funciona offline depois da primeira visita.

Base64 pode conter imagens ou outros arquivos?

Sim, qualquer byte pode ser codificado. Se você decodificar um Base64 que acaba sendo um arquivo, a ferramenta mostra que tipo de arquivo é, exibe a prévia de imagens e deixa você baixar.