Resumo rapido: base64 nao e criptografia. E apenas um esquema de codificacao para transportar binario em canal que aceita so texto. Qualquer pessoa decodifica em segundos. Nao use base64 para esconder senha ou token sensivel.
Conversor base64: para que serve e quando voce realmente precisa
Base64 e uma das codificacoes mais antigas e mais incompreendidas da internet. Aparece em e-mail, em token de autenticacao, em imagem embutida em CSS, em chave PEM de certificado. Muita gente acha que e criptografia: nao e. Base64 apenas representa qualquer sequencia de bytes usando 64 caracteres seguros para texto.
O motivo dessa codificacao existir e historico. Protocolos antigos como SMTP foram projetados para texto ASCII de 7 bits. Anexar arquivo binario direto quebrava o transporte. Base64 resolve isso transformando os bytes em caracteres seguros, ao custo de ampliar o tamanho em cerca de 33 porcento.
Onde base64 aparece no dia a dia
Tokens JWT sao tres pedacos separados por ponto, cada pedaco em base64URL. Voce pode colar o token nesta ferramenta (com pequeno ajuste manual de "-" e "_") e ler o conteudo do payload, que costuma trazer claims como user_id, exp e iat.
Imagens embutidas em CSS usam data URI: background: url(data:image/png;base64,iVBORw0KGgo...). Util para icone pequeno que nao vale uma requisicao HTTP separada.
HTTP Basic Authentication envia usuario e senha como Authorization: Basic dXNlcjpzZW5oYQ==. Esse "dXNlcjpzZW5oYQ==" e simplesmente "user:senha" em base64. Por isso Basic Auth so e seguro sobre HTTPS.
Certificados PEM envolvem base64 entre as linhas -----BEGIN CERTIFICATE----- e -----END CERTIFICATE-----. O conteudo interno e um blob binario X.509 codificado.
Variantes do base64
| Variante | Caracteres extras | Padding | Onde se usa |
|---|---|---|---|
| Base64 padrao (RFC 4648) | + e / | Sim (=) | E-mail, MIME, PEM |
| Base64URL | - e _ | Opcional | JWT, URL params |
| Base64 MIME | + e / | Sim | Quebra em linhas de 76 caracteres |
Acentuacao e UTF-8
O btoa() nativo do JavaScript quebra com caractere acima de ASCII (qualquer letra com acento). Por isso, codificar "configuração" direto com btoa('configuração') gera erro. A solucao e converter para UTF-8 antes: primeiro o texto vira sequencia de bytes UTF-8, depois esses bytes viram base64.
Esta ferramenta ja faz isso automaticamente via TextEncoder. Voce pode digitar acento, emoji e caractere chines sem se preocupar com o passo intermediario.
Base64 nao esconde nada
Codificar uma senha em base64 nao a torna segura. O algoritmo e publico e reversivel. Para esconder de verdade, use criptografia simetrica ou hash com salt, dependendo do caso.
Como funciona a matematica do base64
O esquema usa 64 caracteres seguros: as 26 letras maiusculas, as 26 minusculas, os 10 digitos, mais "+" e "/". Total: 64 simbolos. Por que 64? Porque 2^6 = 64, ou seja, cada caractere representa exatamente 6 bits. A conta fundamental do base64 e converter blocos de 24 bits da entrada (3 bytes) em 4 simbolos de 6 bits cada na saida.
Quando a entrada nao e multipla de 3 bytes, o esquema completa com bits zero e marca o resto com o caractere "=" (padding). Por isso, voce ve "==" no final de algumas strings base64 (2 bytes de entrada faltando completar o bloco) ou "=" sozinho (1 byte faltando). Esse padding facilita reconstruir o tamanho original durante a decodificacao.
O overhead de 33 porcento sai dessa conta: 3 bytes de entrada produzem 4 bytes de saida. (4 dividido por 3 menos 1 = 33,3 porcento). Mais quebras de linha, mais padding, e o overhead real fica entre 33 e 37 porcento dependendo do uso.
Casos de uso reais no dia a dia
- E-mail (MIME): anexo de PDF, foto, planilha viaja em base64 dentro do corpo do e-mail. SMTP nasceu para texto 7 bits, e base64 e a ponte para binario.
- Data URIs:
data:image/png;base64,iVBORw0KGgo...embute uma imagem inteira em CSS ou HTML, sem requisicao HTTP adicional. Util para icone pequeno ou logo critico para LCP. - JWT tokens: tres pedacos separados por ponto, cada pedaco em base64URL. O payload entre os dois pontos contem claims legiveis (decodificadas, nao descriptografadas).
- HTTP Basic Auth:
Authorization: Basic dXNlcjpzZW5oYQ==envia usuario e senha como base64 simples. Por isso Basic Auth so e seguro sobre HTTPS, pois TCP em texto puro expoe o credencial diretamente. - Certificados PEM: o conteudo entre
-----BEGIN CERTIFICATE-----e-----END CERTIFICATE-----e binario X.509 codificado em base64. - DNS TXT records: chaves DKIM, registros SPF longos e tokens de verificacao costumam carregar base64 dentro do conteudo do TXT, ja que DNS exige texto imprimivel.
Quando NAO usar base64
Base64 nao oferece confidencialidade. Qualquer pessoa com acesso a string consegue decodificar em milissegundos com ferramenta como esta. Para confidencialidade real, use:
- TLS para protecao em transito (HTTPS, SMTPS, IMAPS).
- AES-256-GCM ou ChaCha20-Poly1305 para cifra simetrica de dado em repouso.
- libsodium ou age para envelopes de criptografia modernos com chaves publicas.
Base64 dentro desses contextos serve apenas para empacotar o ciphertext em texto seguro para o canal. A protecao vem da cifra, nao da codificacao.
Variante URL-safe (RFC 4648 secao 5)
O base64 padrao usa "+" e "/" como caracteres 62 e 63. Esses caracteres tem significado especial em URLs ("+" vira espaco, "/" separa segmentos de caminho) e em campos de formulario. Para uso seguro em URL, a RFC 4648 define a variante base64URL que substitui:
- + por - (hifen)
- / por _ (underline)
- = de padding por nada (omissao) ou mantido conforme implementacao
JWT, OAuth state, parametros de query e tokens de reset de senha sempre usam base64URL. A ferramenta acima aceita as duas variantes automaticamente na decodificacao (converte "-" e "_" de volta para "+" e "/" antes de processar).
Exemplo de codificacao da expressao "saber meu IP"
Codificando "saber meu IP" (12 caracteres ASCII, 12 bytes em UTF-8) em base64 padrao, o resultado e c2FiZXIgbWV1IElQ. Sao 16 caracteres de saida para 12 de entrada, exatamente o overhead esperado de 33 porcento. Decodificando esse mesmo "c2FiZXIgbWV1IElQ", voce recupera "saber meu IP" sem perda nenhuma. Base64 e operacao perfeitamente reversivel.
Para entender como esses formatos sao especificados oficialmente, leia o que sao RFCs e padroes de internet. A propria definicao do base64 esta na RFC 4648. Quando voce ve chave DKIM ou registro SPF em TXT de DNS, frequentemente esta lendo base64 (saiba mais em o que e DNS).
Base64: Perguntas Frequentes
Base64 representa dados binários usando apenas 64 caracteres ASCII, útil para enviar conteúdo binário por canais que só aceitam texto.
Não. Base64 é apenas codificação reversível sem chave. Qualquer pessoa com o resultado pode decodificar e ler o conteúdo original.
Em emails MIME, imagens embutidas em HTML via data URI, tokens JWT, certificados PEM e payloads de API que carregam binário em JSON.
Sim. O conversor trata o texto em UTF-8 antes de codificar, garantindo que ç, ã, é e demais caracteres voltem corretos na decodificação.
Os caracteres = são preenchimento (padding) para deixar a saída em blocos de 4. Eles fazem parte do padrão e devem ser mantidos.
Base64URL substitui + e / por - e _, evitando conflito em URLs. JWT e tokens web costumam usar essa variante.