O que é Base64?
Base64 é um esquema de codificação que converte dados binários em texto ASCII usando 64 caracteres imprimíveis (A-Z, a-z, 0-9, +, /). É amplamente usado para transmitir dados binários através de meios que suportam apenas texto, como email (MIME) e URLs.
Como funciona a codificação Base64?
A codificação Base64 funciona dividindo a entrada em grupos de 3 bytes (24 bits) e convertendo cada grupo em 4 caracteres de 6 bits. Quando o número de bytes não é múltiplo de 3, caracteres de padding (=) são adicionados ao final.
Exemplo de conversão:
Texto original: "ABC"
Binário: 01000001 01000010 01000011
Agrupado (6 bits): 010000 010100 001001 000011
Decimal: 16 20 9 3
Base64: "QUJD"
Para que serve Base64?
1. Incorporar Imagens em HTML/CSS: Data URLs permitem incluir imagens diretamente no código sem requisições HTTP adicionais.
<img src="data:image/png;base64,iVBORw0KGg..." />2. Transmissão de Dados Binários em JSON: APIs REST frequentemente usam Base64 para enviar arquivos ou dados binários em payloads JSON.
3. Autenticação HTTP Basic: Credenciais são codificadas em Base64 no header Authorization.
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=4. Email (MIME): Anexos em emails são codificados em Base64 para garantir compatibilidade com servidores que só suportam ASCII de 7 bits.
5. Armazenamento Temporário: Armazenar dados binários em cookies, localStorage ou sessionStorage.
Vantagens e Desvantagens
✓ Vantagens
- • Compatível com sistemas que só aceitam texto ASCII
- • Fácil de transmitir por email, URL e JSON
- • Suportado nativamente em todas as linguagens
- • Seguro para copiar/colar sem perder dados
✗ Desvantagens
- • Aumenta tamanho em ~33% (overhead)
- • Não é criptografia (não oferece segurança)
- • Custo de CPU para encode/decode
- • Não é human-readable
Base64 vs Outros Esquemas
| Esquema | Caracteres | Overhead | Uso Comum |
|---|---|---|---|
| Base64 | A-Z, a-z, 0-9, +, / | ~33% | Email, JSON, Data URLs |
| Base64URL | A-Z, a-z, 0-9, -, _ | ~33% | URLs, JWT tokens |
| Hexadecimal | 0-9, A-F | 100% | Hashes, cores CSS |
| Base32 | A-Z, 2-7 | ~60% | TOTP, códigos de backup |
Casos de uso práticos
🖼️ Data URL para favicon
Incorpore um favicon inline sem requisição HTTP externa:
<link rel="icon" href="data:image/svg+xml;base64,PHN2Zy..." />🔑 HTTP Basic Auth
Enviar credenciais em requisições HTTP:
const credentials = btoa('usuario:senha');
headers.Authorization = `Basic ${credentials}`;📧 Anexo de email
Protocolos SMTP usam Base64 para anexos, garantindo que caracteres especiais não corrompam a mensagem durante transmissão.
Base64 NÃO é criptografia
⚠️ Aviso Importante
Base64 é um esquema de codificação, não criptografia. Qualquer pessoa pode decodificar Base64 instantaneamente. Nunca use Base64 para proteger senhas, tokens ou dados sensíveis. Para segurança real, use algoritmos de criptografia como AES, RSA ou bcrypt.