Codificar texto e arquivos em Base64

Transforme texto, bytes brutos ou qualquer arquivo em Base64. Escolha o conjunto de caracteres que o destinatário espera, mantenha ou remova o preenchimento = e quebre as linhas a cada 76 ou 64 caracteres para MIME e PEM.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Digite ou cole o texto a ser codificado, mude a entrada para Hex para codificar bytes brutos ou clique em Abrir arquivo para codificar um arquivo.
  2. Deixe Codificação de texto em UTF-8, a menos que o sistema de destino espere outro conjunto de caracteres.
  3. Defina as opções: mantenha a variante Padrão na maioria dos casos, desative o Preenchimento se o destinatário não o quiser e ajuste a Quebra de linha para 76 (MIME) ou 64 (PEM) caracteres quando necessário.
  4. Copie a saída em Base64 ou baixe-a como arquivo.

Como funciona a codificação Base64

O codificador lê a entrada de três em três bytes. Esses 24 bits são divididos em quatro grupos de 6 bits, e cada valor de 6 bits (de 0 a 63) seleciona um caractere: A-Z para 0 a 25, a-z para 26 a 51, 0-9 para 52 a 61 e, por fim, + e /. Entram três bytes e saem quatro caracteres, e é por isso que o Base64 fica cerca de 33% maior que os dados originais.

Texto    M        a        n
Bytes    77       97       110
Binário  01001101 01100001 01101110
6 bits   010011 010110 000101 101110
Índice   19     22     5      46
Base64   T      W      F      u

Preenchimento e comprimento da saída

Quando o comprimento da entrada não é múltiplo de três, o último grupo fica incompleto. Um byte restante vira dois caracteres seguidos de ==; dois bytes restantes viram três caracteres e um =. Por isso, a saída com preenchimento sempre tem 4 × ceil(n / 3) caracteres para n bytes de entrada.

O preenchimento não carrega dados. JSON Web Tokens, parâmetros de URL e muitas APIs o omitem, então desative o preenchimento quando o lado receptor esperar uma saída sem ele. Para links e nomes de arquivo, escolha a variante segura para URL ou use a página Base64URL; as duas substituem + e / por - e _.

Quebra de linha para MIME e PEM

Por padrão, a saída é uma única linha longa, que é o que JSON, data URIs e cabeçalhos HTTP exigem. Dois formatos esperam quebras de linha:

  • MIME, 76 caracteres. Anexos de e-mail enviados com Content-Transfer-Encoding: base64 não podem ter linhas com mais de 76 caracteres (RFC 2045). Esta opção termina as linhas com CRLF, como o MIME exige.
  • PEM, 64 caracteres. Certificados e chaves entre as linhas -----BEGIN e -----END usam linhas de 64 caracteres (RFC 7468). Esta opção usa finais de linha LF.

Conjuntos de caracteres e arquivos

O Base64 codifica bytes, não letras, então o texto é primeiro convertido em bytes por meio de um conjunto de caracteres. A letra é ocupa dois bytes em UTF-8, mas um único byte em ISO-8859-1 ou Windows-1252, de modo que o mesmo texto gera um Base64 diferente. O UTF-8 é a escolha certa para a web, para JSON e para quase todas as APIs modernas; escolha GBK, Shift_JIS, Windows-1251 ou outro conjunto de caracteres apenas para se adequar a um sistema legado.

Os arquivos são codificados exatamente como estão armazenados, sem nenhuma conversão de conjunto de caracteres. Para imagens com trechos de HTML e CSS prontos, veja Imagem para Base64; para um data URI com o tipo MIME detectado, use Arquivo para Base64.

Especificação

AlfabetoA-Z a-z 0-9 + /
Tamanho da saída4 caracteres a cada 3 bytes (cerca de 133%)
PreenchimentoCom = até um múltiplo de 4 caracteres
PadrãoRFC 4648, seção 4
Diferencia maiúsculas e minúsculasSim

Exemplos

Entrada (UTF-8)Saída
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

Perguntas frequentes

Por que minha saída em Base64 é diferente da de outro codificador?
Quase sempre porque os bytes de entrada são diferentes. As causas típicas são uma quebra de linha no final (o comando de shell echo adiciona uma; use printf '%s' ou echo -n), um conjunto de caracteres diferente, finais de linha do Windows no texto ou configurações diferentes de preenchimento, alfabeto ou quebra de linha. Os mesmos bytes com as mesmas opções sempre geram a mesma saída.
Como codificar texto Unicode em Base64 no JavaScript?
A função btoa() só aceita caracteres até U+00FF e lança um erro para qualquer outro. Converta a string primeiro em bytes UTF-8, por exemplo btoa(String.fromCharCode(...new TextEncoder().encode(str))). No Node.js, use Buffer.from(str, 'utf8').toString('base64').
Como codificar em Base64 na linha de comando?
Execute printf '%s' 'your text' | base64 no Linux ou no macOS. O base64 do GNU quebra a saída a cada 76 caracteres por padrão (adicione -w 0 para obter uma única linha), e o openssl base64 quebra a cada 64 (adicione -A).
A codificação Base64 é uma forma de criptografia?
Não. O Base64 não tem chave, e qualquer pessoa pode revertê-lo com um decodificador Base64. Ele existe para transportar dados binários por canais que só aceitam texto, não para esconder informações.
Quanto o Base64 aumenta o tamanho dos meus dados?

Cada 3 bytes viram 4 caracteres, arredondando para um grupo completo, então a saída fica cerca de 33% maior. A quebra de linha MIME adiciona mais dois bytes (CRLF) a cada 76 caracteres.