O que é Base64
Base64 é uma forma de codificar dados binários em texto puro. Ele usa 64 caracteres imprimíveis (A-Z, a-z, 0-9, +, /) para representar qualquer dado binário, permitindo que binários sejam transmitidos por canais que suportam apenas texto (como JSON, XML, URL, e-mail).
Princípio da codificação
Tabela de caracteres
O Base64 usa 64 caracteres: A-Z maiúsculas (26), a-z minúsculas (26), dígitos 0-9 (10), sinal de mais + e barra /, totalizando 64. O sinal de igual = é usado como preenchimento no final.
Processo de codificação
- Divida os dados de entrada em grupos de 3 bytes (24 bits)
- Divida os 24 bits em 4 grupos de 6 bits cada
- Cada grupo de 6 bits corresponde a um caractere Base64 (2 elevado a 6 = 64, exatamente 64 caracteres)
- Se faltar para completar 3 bytes, preencha com =
Exemplo
3 bytes de entrada (24 bits) → 4 caracteres Base64. Por isso, o número de bytes após a codificação é 4/3 do original, ou seja, cerca de 133%, um aumento de 33%.
Por que aumenta 33%
Em essência, 1 byte consegue representar 256 valores (8 bits), enquanto cada caractere Base64 representa apenas 64 valores (6 bits). Para representar a mesma quantidade de informação, a codificação de 6 bits usa 8/6 = 4/3 de caracteres a mais que a de 8 bits. Por isso, o volume após a codificação Base64 é 4/3 do original, um aumento de 33%.
Esse é o custo inerente do Base64 — troca-se espaço por "texto transmissível".
Exemplo de codificação
Texto "Man" (3 bytes ASCII):
- M = 77 = 01001101
- a = 97 = 01100001
- n = 110 = 01101110
- Junta em 24 bits: 01001101 01100001 01101110
- Divide em 4 grupos de 6 bits: 010011 010110 000101 101110
- Corresponde aos caracteres Base64: T W F u
- Resultado da codificação: TWFu
3 bytes viram 4 bytes, exatamente 4/3.
Variantes do Base64
Base64 padrão
A tabela de caracteres contém + e /, com preenchimento por = no final. Adequado para uso geral.
Base64 seguro para URL
- e / têm significado especial em URL; são substituídos por - e _. Adequado para transmissão em URL.
Base64URL
Variante segura para URL, comum em JWT (JSON Web Token).
Base64 vs Base32 vs Hex
Base64
- Conjunto de 64 caracteres
- Aumento de 33% após a codificação
- Caracteres incluem letras maiúsculas e minúsculas, dígitos e +/; diferencia maiúsculas de minúsculas
Base32
- Conjunto de 32 caracteres (A-Z, 2-7)
- Aumento de 60% após a codificação
- Não diferencia maiúsculas de minúsculas e evita caracteres facilmente confundíveis; adequado para entrada manual
Hex (hexadecimal)
- Conjunto de 16 caracteres (0-9, a-f)
- Aumento de 100% após a codificação (cada byte vira dois caracteres)
- O mais simples e compatível, mas o volume dobra
Volume: Hex > Base32 > Base64. Para um arquivo menor, escolha Base64; para compatibilidade e simplicidade, escolha Hex.
Base64 é criptografia?
Não. Base64 é codificação, não criptografia. Qualquer pessoa consegue decodificar, não há proteção por chave. Usar Base64 como criptografia é um equívoco grave — ele apenas "disfarça" os dados como texto ilegível, e decodificar devolve o texto original.
Para dados sensíveis que precisam de criptografia, use algoritmos como AES; Base64 serve apenas para codificação de transporte.
Casos de uso
Transmissão de dados
Dados binários transmitidos por canais de texto (JSON, XML, URL, e-mail) são codificados em Base64 como texto.
Incorporar imagens pequenas
Imagens pequenas são codificadas em Base64 e embutidas inline em HTML/CSS, reduzindo requisições HTTP (veja os usos de imagens em Base64).
JWT
O JSON Web Token usa Base64URL para codificar o header e o payload.
Data URI
O protocolo data URL usa Base64 para embutir recursos.
Basic Auth
A autenticação HTTP Basic usa Base64 para codificar usuário e senha (atenção: não é criptografia; use com HTTPS).
Codificar e decodificar com o DocsAll
A ferramenta de codificação e decodificação Base64:
- Insira o texto ou a string Base64
- Escolha codificar ou decodificar
- Converta com um clique
- Copie o resultado
Processamento no navegador, os dados não saem do dispositivo.
Armadilhas comuns
Tratar como criptografia
Base64 não é criptografia; não confie apenas em Base64 para "proteger" dados sensíveis.
Aumento de tamanho após a codificação
Arquivos grandes codificados em Base64 incham 33%, aumentando o custo de transmissão e armazenamento. Se houver canal binário, evite usar Base64.
Confusão de conjunto de caracteres
O Base64 padrão contém +/; para colocar em URL é preciso escapar ou usar a variante segura para URL. Misturar variantes provoca falha na decodificação.
O = final não pode ser omitido
O caractere de preenchimento = faz parte da codificação; omiti-lo pode causar erro de decodificação. Algumas implementações toleram a omissão, mas não é o padrão.
Resumo
Base64 é codificação, não criptografia: usa 64 caracteres para representar binários, e o aumento de 33% no volume é um custo inerente. A finalidade é permitir que binários trafeguem por canais de texto. Em contexto de URL, use a variante segura para URL. A ferramenta de codificação/decodificação do DocsAll roda no navegador, sem transmitir os dados.