Como usar o codificador e decodificador Base64
- Escolha Codificar para transformar texto em Base64, ou Decodificar para transformar Base64 de volta em texto.
- Cole a sua entrada. O texto é tratado como UTF-8, então letras acentuadas, alfabetos não latinos e emojis funcionam corretamente.
- Ative a opção Seguro para URL se o resultado for para uma URL, um nome de arquivo ou um JWT.
- Copie a saída.
A codificação e a decodificação acontecem localmente no seu navegador; nada do que você cola é enviado ou armazenado.
Como o Base64 funciona
O Base64, definido na RFC 4648, representa dados binários quaisquer usando 64 caracteres ASCII imprimíveis: A–Z, a–z, 0–9, + e /. Ele existe para que conteúdo binário possa trafegar com segurança por sistemas feitos para texto, como e-mail, JSON, XML e cabeçalhos HTTP.
O algoritmo processa a entrada em blocos de 3 bytes (24 bits) e os divide em quatro grupos de 6 bits. Cada valor de 6 bits (0–63) seleciona um caractere do alfabeto. A palavra Man mostra o processo:
| Etapa | Valor |
|---|---|
| Bytes | M=77, a=97, n=110 |
| 24 bits | 01001101 01100001 01101110 |
| Grupos de 6 bits | 010011 010110 000101 101110 = 19, 22, 5, 46 |
| Base64 | TWFu |
Como cada 3 bytes viram 4 caracteres, a saída em Base64 fica cerca de 33% maior que a entrada (mais as quebras de linha, se um formato como o MIME as inserir).
Preenchimento com =
Quando o tamanho da entrada não é múltiplo de três, o último grupo recebe preenchimento (padding). Um byte restante gera dois caracteres mais ==; dois bytes restantes geram três caracteres mais =. Por exemplo, Hi é codificado como SGk=.
Base64 seguro para URL
Os caracteres padrão + e / têm significado especial em URLs e caminhos de arquivo. A RFC 4648 §5 define o alfabeto base64url, que os substitui por - e _. O preenchimento costuma ser omitido. Os JSON Web Tokens usam base64url sem preenchimento.
Standard: +/8=
URL-safe: -_8
Erros comuns
Base64 não é criptografia
Qualquer pessoa decodifica Base64 na hora; não existe chave. Nunca o use para "esconder" senhas ou chaves de API. Para verificar integridade, use um hash do gerador de hash e, para confidencialidade, use criptografia de verdade.
UTF-8 em JavaScript
A função btoa() nativa do navegador só aceita caracteres da faixa Latin-1 e gera um erro para qualquer outro. Converta o texto em bytes UTF-8 primeiro:
btoa("✓"); // InvalidCharacterError
const bytes = new TextEncoder().encode("✓");
btoa(String.fromCharCode(...bytes)); // "4pyT"
Misturar alfabetos
Decodificar dados base64url com um decodificador padrão estrito falha nos caracteres - e _, ou na falta de preenchimento. Converta o alfabeto e recoloque o preenchimento até um múltiplo de quatro caracteres antes de decodificar.
Onde você vai encontrar Base64
- Data URIs incorporam arquivos pequenos diretamente no HTML ou no CSS:
data:image/png;base64,iVBORw0KGgo... - A autenticação HTTP Basic envia
username:passwordcodificado em Base64.user:passviraAuthorization: Basic dXNlcjpwYXNz, o que é trivialmente reversível, então a autenticação Basic só deve ser usada via HTTPS. Você pode inspecionar esses cabeçalhos com o verificador de cabeçalhos HTTP. - Anexos de e-mail (MIME) e certificados e chaves PEM.
- JWTs, cujo cabeçalho e payload são JSON codificado em base64url. Use o decodificador de JWT para lê-los.
printf 'text' | base64 codifica e base64 -d decodifica (versões mais antigas do macOS usam -D). Use printf ou echo -n para que uma quebra de linha no final não seja codificada junto.Perguntas frequentes
Por que a minha string Base64 termina com = ou ==?
Isso é o preenchimento. Ele informa ao decodificador quantos bytes o último grupo tinha quando o tamanho da entrada não era divisível por três.
Base64 é seguro?
Não. É uma codificação, não criptografia. Não oferece nenhuma confidencialidade; apenas torna os dados binários seguros para serem transportados como texto.
Por que a saída codificada é maior que a entrada?
Cada caractere Base64 carrega 6 bits em vez de 8, então 3 bytes de entrada precisam de 4 caracteres de saída, um acréscimo de aproximadamente um terço.
Qual é a diferença entre Base64 e base64url?
Só dois caracteres mudam: o base64url usa - e _ em vez de + e / e normalmente dispensa o preenchimento =, de modo que o resultado pode ser colocado em URLs sem precisar de escape adicional.
Atualizado