tooly

Codificador e decodificador Base64

Converta texto em Base64 e vice-versa, ou transforme qualquer arquivo em um data URI Base64 para incorporar. Unicode é tratado corretamente e tudo roda localmente no navegador.

Tudo roda no seu navegador — nada é enviado

Como usar

  1. 1

    Escolha Codificar ou Decodificar.

  2. 2

    Digite ou cole seu texto, ou escolha um arquivo para codificar.

  3. 3

    Copie o resultado.

Para que serve o Base64

O Base64 existe para levar dados binários por canais que foram feitos para texto. E-mail, JSON, XML, atributos HTML, variáveis de ambiente e cabeçalhos HTTP esperam caracteres imprimíveis, e muitos deles quebram com bytes brutos como o nulo, quebras de linha ou valores acima de 127. O Base64 reescreve qualquer sequência de bytes usando só 64 símbolos seguros: A–Z, a–z, 0–9, + e /, com = como preenchimento.

Lugares típicos onde você o encontra:

  • Autenticação HTTP Basic, em que user:password é enviado como dXNlcjpwYXNzd29yZA==.
  • JSON Web Tokens, cujas três partes separadas por pontos são Base64 URL-safe.
  • Anexos de e-mail, que viajam como Base64 dentro de mensagens MIME.
  • Data URIs que embutem um ícone ou uma fonte pequena direto no HTML ou no CSS.
  • Payloads de API e arquivos de configuração que precisam carregar um certificado, uma chave ou um pequeno blob binário como string.

Base64 é uma codificação, não uma criptografia. Qualquer pessoa decodifica em um segundo, então uma string Base64 num arquivo de configuração não protege nada. Se você precisa verificar que os dados não foram alterados, use um hash.

Como a codificação funciona

O codificador pega a entrada de três em três bytes, ou seja, 24 bits, e divide em quatro grupos de 6 bits. Cada valor de 6 bits, de 0 a 63, escolhe um caractere do alfabeto. Entram três bytes, saem quatro caracteres — por isso a saída em Base64 é sempre cerca de 33% maior que a entrada: uma imagem de 30 KB vira uns 40 KB de texto.

Quando o tamanho da entrada não é múltiplo de três, o último grupo fica incompleto. O codificador o completa e marca a lacuna com um ou dois sinais =. É por isso que Man vira TWFu, Ma vira TWE= e M vira TQ==.

O texto precisa virar bytes antes de ser codificado, e esta ferramenta sempre usa UTF-8 nessa etapa. A palavra café tem cinco bytes em UTF-8 (o é ocupa dois), e um emoji ocupa quatro. A decodificação interpreta os bytes como UTF-8 de novo, então texto em qualquer escrita faz o caminho de ida e volta sem alteração.

A variante URL-safe

Dois caracteres do alfabeto padrão dão problema fora do texto puro. Numa URL, + pode ser lido como espaço e / como separador de caminho; num nome de arquivo, / nem é permitido. O alfabeto URL-safe definido na RFC 4648 os troca por - e _.

Com a caixa URL-safe marcada, a ferramenta faz essa troca e também remove o preenchimento = do final, que é como os JWTs e a maioria das APIs web esperam. O decodificador aceita as duas formas: ele converte - e _ de volta e restaura automaticamente o preenchimento que falta, então você pode colar direto um segmento de JWT e ler o JSON dele. Se esse JSON sair numa única linha comprida, o formatador de JSON deixa tudo legível.

Codificando arquivos como data URIs

Codificar um arquivo… lê o arquivo no seu navegador e gera uma data URI completa, como data:image/png;base64,iVBORw0KGgo…. O tipo MIME vem do que o navegador informa sobre o arquivo; quando ele não sabe dizer, usa-se o genérico application/octet-stream. Você pode colar o resultado num <img src>, num background-image: url(...) do CSS ou numa regra @font-face.

Data URIs fazem sentido para recursos pequenos: um ícone SVG, uma imagem provisória de 1–2 KB, um logotipo numa assinatura de e-mail em HTML. Para qualquer coisa maior, elas jogam contra você. O texto fica um terço maior que o arquivo original, não pode ser armazenado em cache separadamente da página que o contém e incha o HTML ou o CSS que precisa carregar antes de qualquer coisa ser renderizada. Um teto prático é de alguns kilobytes por recurso.

O arquivo inteiro é lido na memória e convertido de uma vez, então arquivos muito grandes podem deixar a aba lenta ou esgotar a memória. O arquivo não é enviado a lugar nenhum.

Quando a decodificação falha

O decodificador mostra "Base64 inválido" quando a entrada tem caracteres fora do alfabeto ou um comprimento impossível. Causas comuns:

  • Um prefixo de data URI. Remova tudo até a vírgula, inclusive, em data:image/png;base64, antes de decodificar.
  • Quebras de linha dentro da string. Codificadores MIME quebram o Base64 a cada 76 caracteres. Se a decodificação falhar com texto quebrado, junte tudo numa única linha primeiro.
  • Erros ao copiar. Um último caractere faltando ou uma aspa perdida de uma string JSON bastam para quebrar tudo.

O decodificador sempre transforma o resultado em texto. Se os dados originais eram um arquivo binário, como uma imagem ou um arquivo ZIP, a saída vai parecer uma sequência de símbolos aleatórios e pontos de interrogação; isso é esperado, porque esses bytes nunca foram texto.

Perguntas frequentes

Meus dados são enviados?

Não. A codificação acontece no navegador; texto e arquivos nunca saem do seu dispositivo.

O que é Base64 URL-safe?

Uma variante que usa - e _ em vez de + e / e dispensa o preenchimento, para caber em URLs e nomes de arquivo.

Funciona com emoji e acentos?

Sim. O texto é codificado primeiro como UTF-8, então qualquer texto Unicode vai e volta corretamente.

O que a codificação de um arquivo gera?

Um data URI (data:image/png;base64,…) que você pode colar direto no HTML ou CSS.

Ferramentas relacionadas