Codificador / Decodificador Base64
Codifique texto para Base64 ou decodifique Base64 de volta para texto — compatível com UTF-8, tudo no seu navegador.
1.267 visualizações
Como Funciona
O Base64 transforma dados binários em texto simples usando um alfabeto de 64 caracteres imprimíveis: A–Z, a–z, 0–9, mais + e / (64 símbolos é exatamente 2⁶, por isso o nome Base64). O codificador lê a entrada 3 bytes (24 bits) de cada vez, divide esses 24 bits em quatro blocos de 6 bits e mapeia cada bloco de 6 bits para um caractere do alfabeto — assim, 3 bytes de dados binários sempre se tornam exatamente 4 caracteres de texto. Se o comprimento da entrada não for um múltiplo exato de 3, o último grupo é preenchido com um ou dois caracteres = para manter o comprimento da saída como múltiplo de 4.
Concretamente: os três bytes que formam "Man" (77, 97, 110 — 01001101 01100001 01101110 em binário) são reagrupados em quatro blocos de 6 bits (010011, 010110, 000101, 101110), cada um mapeado para um caractere, produzindo TWFu. Como cada 3 bytes de entrada sempre se expandem para 4 caracteres de saída, os dados codificados em Base64 são de forma confiável cerca de 33% maiores do que o original — uma imagem de 300 KB se torna uma string Base64 de aproximadamente 400 KB, o que importa ao incorporar imagens como URIs data: ou anexar arquivos binários dentro de JSON ou e-mail.
Esta ferramenta trata o Unicode corretamente ao codificar o texto em UTF-8 primeiro, para que caracteres multibyte e emojis ("çğü 😀") façam a ida e volta intactos — uma chamada ingênua de btoa() em JavaScript gera erro nesses casos porque espera um byte por caractere. Tudo roda localmente no seu navegador; nada do que você digita é enviado a lugar nenhum.
O Base64 aparece constantemente em lugares que a maioria das pessoas nunca percebe: uma tag HTML <img src="data:image/png;base64,..."> incorpora uma imagem inteira diretamente em vez de vincular a um arquivo; o cabeçalho HTTP Authorization: Basic carrega uma string "usuário:senha" codificada em Base64 (apenas formatação, não proteção — é o TLS que realmente mantém isso privado em trânsito); anexos de e-mail são codificados em Base64 desde o padrão MIME original, porque o SMTP foi projetado para transportar texto de 7 bits, não dados binários brutos; e os JSON Web Tokens (JWTs) usam a variante segura para URL para empacotar uma estrutura binária assinada em três segmentos de texto separados por pontos.
O Que Saber
- Base64 não é criptografia — é uma representação reversível e publicamente conhecida, sem qualquer sigilo. Qualquer pessoa pode decodificá-la instantaneamente com o mesmo alfabeto; ela existe puramente para tornar dados binários seguros para trafegar por canais somente de texto (anexos MIME de e-mail, URIs data, campos JSON, cabeçalhos HTTP Basic-Auth), nunca para esconder conteúdo.
- Variante segura para URL: como
+e/têm significado especial em URLs, um alfabeto Base64 "seguro para URL" os substitui por-e_e muitas vezes descarta o preenchimento=. Esta ferramenta decodifica ambas as variantes automaticamente. - O custo de tamanho é fixo e previsível: a expansão de ~33% (proporção 4/3) é exata para os dados em si — por isso APIs que aceitam uploads binários brutos costumam ser mais eficientes em banda do que as que exigem corpos JSON envolvidos em Base64.
- O preenchimento indica o resto: um
=significa que o comprimento dos dados originais era 2 bytes a mais que um múltiplo de 3; dois=significam 1 byte a mais. Nenhum preenchimento significa que a entrada era um múltiplo exato de 3 bytes.
Perguntas Frequentes
Por que minha saída decodificada aparece corrompida?
Geralmente a entrada não era Base64 válido (truncado, ou com caracteres seguros para URL -_ em vez de +/), ou os bytes originais não eram texto. Esta ferramenta decodifica automaticamente as variantes seguras para URL.
Posso codificar arquivos?
Esta ferramenta é para texto. Para arquivos, o padrão é uma URI data:, que envolve a string Base64 com um prefixo de tipo MIME para que um navegador ou cliente de e-mail saiba como renderizá-la — a maioria das linguagens oferece soluções de uma linha para isso (PHP base64_encode(file_get_contents(...)), JS FileReader.readAsDataURL). Arquivos muito grandes geralmente são melhor enviados como binário bruto em vez de envolvidos em Base64, dado o overhead de tamanho de ~33%.
Base64 é seguro para senhas?
Não — é trivialmente reversível por design, sem chave ou segredo envolvido. A autenticação HTTP Basic o usa apenas para formatação de transporte (empacotando "usuário:senha" em uma string segura para cabeçalho) e depende inteiramente do TLS/HTTPS para o sigilo real em trânsito. Armazene senhas com hash usando um algoritmo lento e salgado (bcrypt, argon2, scrypt) — nunca codificadas, e nunca em Base64, que qualquer pessoa pode reverter em uma linha de código.
Por que a saída codificada em Base64 é sempre cerca de 33% maior do que a entrada?
Porque a codificação mapeia cada 3 bytes (24 bits) de entrada para 4 caracteres de saída, e cada caractere de saída carrega apenas 6 bits de informação em vez dos 8 bits de um byte — essa é uma proporção de expansão fixa de 4/3, algo que não varia com o conteúdo. Um arquivo de 3 MB se torna uma string Base64 de aproximadamente 4 MB, sempre.
Qual é a diferença entre o Base64 padrão e a variante "segura para URL"?
O Base64 padrão usa + e / em seu alfabeto, ambos com significado reservado dentro de URLs e caminhos de arquivo, então uma variante segura para URL os substitui por - e _ (e muitas vezes omite o preenchimento =) para que a string codificada possa ficar diretamente em uma URL ou nome de arquivo sem escape. Esta ferramenta reconhece e decodifica ambas as variantes automaticamente.
Ferramentas Semelhantes
Reportar um Problema
Codificador / Decodificador Base64
Comentários
Ainda não há comentários — seja o primeiro a escrever um!