Codificar e Decodificar Base64
Cole o texto e converta nos dois sentidos. Acentos e emoji são preservados corretamente.
Base64 não é criptografia
Este é o mal-entendido mais caro sobre Base64. Ele é uma codificação, não uma cifra: não existe chave, não existe segredo, e qualquer pessoa decodifica em um segundo. Base64 protege exatamente nada.
A finalidade é outra: transportar dados binários por canais que só aceitam texto. Anexo de e-mail, imagem embutida em CSS, token dentro de um JSON, certificado em arquivo PEM — todos usam Base64 porque o canal do meio não tolera bytes arbitrários.
Se você viu uma senha "protegida" em Base64 num sistema, isso é uma vulnerabilidade e não uma proteção.
Por que o resultado fica 33% maior
Base64 representa cada 3 bytes de entrada com 4 caracteres de saída, usando um alfabeto de 64 símbolos — 26 letras maiúsculas, 26 minúsculas, 10 dígitos, mais + e /. Cada caractere carrega 6 bits, e três bytes somam 24 bits, que cabem exatamente em quatro caracteres de 6.
Daí a razão 4:3, ou seja, um crescimento de aproximadamente 33%. É um custo previsível e é o preço de atravessar um canal de texto. Quando o número de bytes não é múltiplo de 3, o preenchimento com = completa o último grupo — um ou dois sinais de igual no fim.
A variante URL-safe
Os caracteres + e / têm significado próprio dentro de uma URL: o primeiro pode virar espaço e o segundo separa caminhos. Colar um Base64 comum numa query string quebra de formas difíceis de depurar.
A variante URL-safe, definida na RFC 4648, troca + por - e / por _, e frequentemente omite o preenchimento. É o que se usa em JWT, em identificador de recurso e em qualquer coisa que trafegue na própria URL. Nossa decodificação aceita as duas variantes automaticamente, com ou sem preenchimento.
Acentos e a armadilha do encoding
Base64 codifica bytes, não letras. Para codificar texto, é preciso primeiro transformar o texto em bytes — e é aí que o encoding importa. "ção" em UTF-8 são 5 bytes; em Latin-1 seriam 3, e o Base64 resultante seria completamente diferente.
Usamos UTF-8, que é o padrão da web. Se você decodificar aqui um Base64 gerado com outro encoding, o resultado sai com caracteres estranhos — o problema não é o Base64, é a interpretação dos bytes do outro lado.
Quando o conteúdo decodificado não é texto válido em UTF-8, mostramos o resultado em hexadecimal e avisamos: quase sempre significa que aquilo era um arquivo binário, não uma frase.
Onde você encontra Base64 no dia a dia
JWT — as três partes de um token são Base64 URL-safe. Decodificar as duas primeiras mostra cabeçalho e payload em texto claro, o que reforça que ali não há segredo: o que protege o token é a assinatura, não a codificação.
Data URLs — imagens embutidas em HTML ou CSS como data:image/png;base64,..., para evitar uma requisição extra.
Basic Auth — o cabeçalho HTTP carrega usuario:senha em Base64. É reversível por qualquer um, motivo pelo qual só se usa Basic Auth sobre HTTPS.
Certificados PEM — o conteúdo entre BEGIN e END é Base64 do certificado binário.
Continue por aqui
- URL Encode e Decode — a outra codificação que aparece no mesmo contexto — e que também não é criptografia.
- Gerador de Hash — quando o que você precisa é uma impressão digital irreversível, e não uma codificação de ida e volta.