Última atualização: 8 de setembro de 2026
Conversor de Base64
Codifique ou decodifique texto em Base64, sem enviar nada a servidores.
Como usar o Conversor de Base64
- 1Escolha o modo. Codificar (texto → Base64) ou Decodificar (Base64 → texto).
- 2Digite ou cole o texto. O resultado aparece automaticamente, a cada tecla.
Para que serve Base64 (e para que não serve)
Base64 é uma codificação, não uma criptografia: ela transforma dados binários arbitrários (uma imagem, um PDF, uma chave) em uma sequência de 64 caracteres seguros para texto (letras, números, +, / e = de preenchimento), para que esses dados possam trafegar em contextos que só aceitam texto puro: um campo JSON, um cabeçalho HTTP, uma URL de dados (data:), o corpo de um token JWT. Qualquer pessoa com o texto codificado consegue decodificar de volta sem nenhuma senha, então Base64 nunca deve ser usado como forma de esconder informação sensível — para isso existe criptografia de verdade, com chave.
Um uso comum em teste de API é decodificar o cabeçalho Authorization: Basic (usuário e senha juntos em Base64) para conferir se o valor enviado bate com o esperado, ou decodificar o payload de um JWT (a segunda parte do token, entre os pontos) para inspecionar as claims sem precisar de biblioteca nenhuma.
Outro uso frequente é embutir uma imagem pequena diretamente no HTML ou CSS, sem precisar de uma requisição HTTP separada, através de uma URL de dados no formato data:image/png;base64,.... O ganho de performance só compensa para arquivos pequenos, já que a codificação Base64 aumenta o tamanho dos dados originais em aproximadamente um terço, o que costuma ser esquecido por quem escolhe essa técnica só pensando na economia de uma requisição.
Exemplo de código: codificação segura para UTF-8
function base64Encode(texto) {
const bytes = new TextEncoder().encode(texto);
let binario = '';
for (let i = 0; i < bytes.length; i++) binario += String.fromCharCode(bytes[i]);
return btoa(binario);
}
function base64Decode(base64) {
const binario = atob(base64);
const bytes = new Uint8Array(binario.length);
for (let i = 0; i < binario.length; i++) bytes[i] = binario.charCodeAt(i);
return new TextDecoder().decode(bytes);
}
O detalhe que costuma quebrar implementações rápidas: as funções nativas btoa/atob do navegador só entendem texto de 1 byte por caractere (Latin1), então acentos, emojis e qualquer caractere fora do ASCII básico quebram ou geram lixo se passados direto para elas. Passar primeiro por TextEncoder/TextDecoder, como esta ferramenta faz, resolve isso corretamente para qualquer texto em UTF-8.
Casos de teste sugeridos
- Codificar um texto com acentos ou emoji e decodificar de volta, conferindo que o resultado bate exatamente com o original (round-trip).
- Decodificar uma string Base64 incompleta ou corrompida (por exemplo, com um caractere a menos), para conferir se o sistema em teste rejeita com uma mensagem clara em vez de travar.
- Codificar uma string vazia, caso de borda que algumas implementações tratam de forma inconsistente.
- Colar um valor que não é Base64 válido no modo "Decodificar" (por exemplo, texto comum com espaços), para conferir o tratamento de erro.
Perguntas Frequentes
Base64 é uma forma de criptografia?
Não. Base64 é apenas uma codificação, sem chave nem senha — qualquer pessoa pode decodificar o texto de volta. Não deve ser usado para proteger dados sensíveis.
Por que meu texto com acentos ficou errado ao decodificar em outra ferramenta?
Provavelmente a outra ferramenta usou btoa/atob diretamente, sem tratar UTF-8 corretamente. Esta ferramenta já cuida disso automaticamente.
Os dados digitados aqui são enviados para algum servidor?
Não. A codificação e decodificação rodam inteiramente no seu navegador, em JavaScript — nada é enviado ou armazenado.