Ú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

  1. 1Escolha o modo. Codificar (texto → Base64) ou Decodificar (Base64 → texto).
  2. 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.

Copiado com sucesso!