Codificador e decodificador Base64

Codifique e decodifique Base64: texto, arquivos, URL-safe e data URI com prévia.

O que esta ferramenta faz

Base64 é um jeito de escrever qualquer dado, texto ou binário, usando só 64 caracteres seguros: letras, dígitos, o sinal de mais e a barra. Existe porque muitos sistemas que transportam dados, como e-mail, JSON, URLs e atributos HTML, só aceitam texto simples. Esta ferramenta converte nos dois sentidos. Codificar recebe o texto digitado ou um arquivo aberto; Decodificar recebe Base64 e devolve o texto, ou o arquivo quando não for texto. Tudo acontece no navegador, então uma chave privada, um token ou um documento nunca é enviado.

Como usar

  1. Escolha Codificar ou Decodificar.
  2. Digite ou cole, clique em "Abrir um arquivo" ou solte um arquivo na página. O resultado aparece enquanto você digita.
  3. Copie ou baixe o resultado. "Usar como entrada" leva o resultado para a outra aba, um jeito rápido de conferir se ida e volta dão o original.

Ao decodificar, não é preciso limpar o texto antes. Espaços e quebras de linha são ignorados, o = final que faltar é acrescentado, as letras URL-safe - e _ são aceitas e um data: URI inteiro é aberto. A ferramenta informa o que fez. Se o texto não for Base64, ela mostra qual caractere está errado e onde.

UTF-8 e a armadilha dos acentos

Base64 codifica bytes, não letras, então o texto primeiro vira bytes. Aqui se usa UTF-8, a codificação da web. A palavra café são os cinco bytes 63 61 66 c3 a9 e seu Base64 é Y2Fmw6k=. Um erro comum é passar esse texto para a antiga função btoa do navegador, que trata cada caractere como um byte: ela dá Y2Fm6Q==, que outros sistemas leem como "caf" mais um byte inválido, ou recusam com caracteres como Việt ou emojis. O texto "Hello, Việt Nam! 😀 café" é codificado como SGVsbG8sIFZp4buHdCBOYW0hIPCfmIAgY2Fmw6k= e volta idêntico.

Padrão, URL-safe, preenchimento e tamanho da linha

  • Padrão usa + e /, que têm significado numa URL. Para URL, nome de arquivo ou JWT escolha URL-safe, que escreve - e _. Os bytes fb ff fe ff são +//+/w== no padrão e -__-_w== em URL-safe.
  • Preenchimento acrescenta = até um múltiplo de quatro. Muitos usos URL-safe, como as três partes de um JWT, o omitem; desligue-o. O cabeçalho {"alg":"HS256","typ":"JWT"} é eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9, sem preenchimento.
  • Tamanho da linha quebra a saída em linhas de 64 caracteres (PEM, em certificados e chaves) ou 76 (MIME, em anexos de e-mail). Para o resto, uma linha só.

Arquivos, imagens e data URI

Abra qualquer arquivo para codificá-lo, até 20 MB. Ative Como data: URI para obter um valor pronto para colar como data:image/png;base64,iVBOR…, útil como origem de um <img> ou em url() do CSS. Serve para um ícone pequeno, mas aumenta o tamanho em um terço e o navegador não consegue guardar em cache separadamente, então acima de alguns kilobytes é melhor um arquivo normal; o kit de imagens pode reduzir a imagem antes. Se o decodificado for uma imagem, você vê uma prévia, e o que não for texto, como imagem, PDF ou ZIP, é oferecido para download com a extensão certa.

Bom saber

  • Base64 não é criptografia. Qualquer um decodifica; não use para esconder segredos. Para conferir se um arquivo não mudou, use o verificador de hash.
  • Aumenta o tamanho. Cada 3 bytes viram 4 caracteres, cerca de 33% a mais; 1000 bytes viram 1336 caracteres com preenchimento.

Perguntas frequentes

Base64 é uma forma de criptografia?

Não. É só um jeito de escrever bytes como texto, e qualquer um pode reverter. Não use para proteger senhas ou segredos.

Por que o texto decodificado sai errado ou com caracteres estranhos?

Talvez o original tenha sido codificado com um conjunto de caracteres diferente de UTF-8, ou os dados não sejam texto. A ferramenta lê o resultado como UTF-8 e oferece download quando os bytes não são texto válido.

Qual a diferença entre Base64 e Base64URL?

Base64URL troca + por - e / por _ para ser seguro em URLs e nomes de arquivo, e costuma omitir o preenchimento =. Os JWT usam essa forma. A ferramenta lê as duas ao decodificar e escreve qualquer uma ao codificar.

Meus arquivos são enviados?

Não. A página lê e converte o arquivo no seu navegador e não envia nada a lugar nenhum.