Codificador e decodificador Base64

Roda no seu navegador; nada é enviado

Codifique texto ou arquivos em Base64, ou decodifique Base64 de volta para texto, bytes ou uma imagem. Se a entrada for inválida, o caractere é apontado.

Text

Base64

Base64 appears here as you type.

Ready

O que é Base64?

Base64 é uma forma de escrever quaisquer bytes usando só 64 caracteres seguros: A–Z, a–z, 0–9, + e /, com = como preenchimento no final. Cada 3 bytes de entrada viram 4 caracteres de saída, então os dados codificados ficam cerca de um terço maiores que o original.

Ele existe porque muitos sistemas só lidam bem com texto. Com Base64 você coloca dados binários, como uma imagem, um arquivo ou uma chave criptográfica, dentro de um JSON, um email, uma URL ou um header HTTP sem que eles se corrompam no caminho.

Existem dois alfabetos. O padrão (RFC 4648) usa + e /. O seguro para URLs usa - e _ no lugar, porque + e / têm significado em URLs, e normalmente deixa de fora o preenchimento =; é o que os JWTs usam. O email (MIME) quebra o Base64 padrão em linhas de 76 caracteres.

No trabalho com APIs ele aparece o tempo todo. A autenticação HTTP Basic envia username:password codificado em Base64 no header Authorization, as partes de um JWT são Base64 seguro para URLs, e muitas APIs devolvem arquivos ou miniaturas como strings Base64 ou URLs data: dentro do JSON. Base64 é uma codificação, não criptografia: qualquer pessoa consegue decodificar.

Como usar esta ferramenta

  1. 1Escolha Encode ou Decode. Trocar de modo mantém o que você digitou; Swap (Alt+Shift+S) move a saída para a entrada e troca o modo.
  2. 2Para codificar, digite um texto (ele é codificado como UTF-8), ou arraste ou abra um arquivo para codificar os bytes exatamente como são. URL-safe, Wrap at 76 e data: URL mudam o formato do resultado.
  3. 3Para decodificar, cole Base64, Base64 MIME quebrado em linhas ou uma URL data: inteira. O alfabeto e o preenchimento que faltar são detectados automaticamente, e a barra de status diz qual era o formato.
  4. 4Se a entrada não for Base64 válido, o caractere fica marcado no editor e F8 leva até ele. A mensagem diz o que está errado, como um caractere fora do alfabeto ou a quantidade errada de preenchimento.
  5. 5Texto decodificado aparece como texto. Bytes que não são texto UTF-8 aparecem como dump hexadecimal, imagens aparecem como prévia, e Download (Ctrl+S) salva os bytes como arquivo com a extensão certa.

Solução de problemas

. não é um caractere Base64
A entrada provavelmente é um JWT, cujas três partes são separadas por pontos. Decodifique uma parte por vez, ou cole o token no decodificador de JWT.
% não é um caractere Base64
O Base64 passou por percent-encoding para ir numa URL (+ virou %2B, = virou %3D). Decodifique primeiro com o decodificador de URL.
Falta ou sobra um caractere
Base64 vem em grupos de quatro caracteres, e esta string termina com um grupo de um. Quase certamente ela foi cortada ao ser copiada.
Os bytes decodificados não são texto UTF-8
Os dados são binários (uma imagem, um zip, uma chave) ou texto em outra codificação, como Latin-1. Olhe a visualização Hex ou baixe os bytes em vez de copiá-los como texto.
O resultado tem um � onde deveria haver um emoji
O texto que você codificou continha metade de um emoji, geralmente por cortar uma string no meio de um. A barra de status aponta o caractere; essa metade não pode ser codificada, então vira U+FFFD.

Perguntas frequentes

Meus dados são enviados para um servidor?

Não. A codificação, a decodificação e as prévias de imagem rodam no seu navegador, e os arquivos que você abre são lidos localmente. O texto que você cola fica guardado no session storage desta aba até você limpar ou fechar a aba, então recarregar não apaga nada, e Copy link coloca o texto no link depois do #, parte que os navegadores nunca enviam a um servidor. As opções que você escolhe, como URL-safe, ficam salvas neste navegador.

Por que algumas strings codificadas são maiores que outras com o mesmo número de caracteres?

Base64 codifica bytes, não caracteres. Em UTF-8 uma letra sem acento ocupa 1 byte, uma letra acentuada 2 bytes e muitos caracteres asiáticos 3 bytes, então texto nesses alfabetos gera um Base64 mais longo.

Como decodifico um header de autenticação Basic?

Pegue a parte depois de Basic no header Authorization e decodifique aqui. O resultado é o usuário e a senha separados por dois-pontos.

Eu preciso do preenchimento `=`?

A maioria dos decodificadores, este incluído, aceita Base64 sem preenchimento, e o Base64 seguro para URLs costuma omiti-lo. Alguns decodificadores rígidos exigem; o Base64 padrão o adiciona para que o tamanho seja múltiplo de quatro.