Codificar / decodificar Base64

Codifique e decodifique Base64, com suporte a UTF-8 e variante segura para URLs.

Sobre esta ferramenta

Converta texto para Base64 e de volta. Lida corretamente com qualquer texto Unicode e oferece suporte ao alfabeto seguro para URLs (base64url) usado em JWTs e URLs.

Como usar

  1. Escolha Codificar para transformar texto em Base64, ou Decodificar para transformar Base64 de volta em texto.
  2. Cole a sua entrada. Textos Unicode, como acentos ou emojis, são tratados corretamente.
  3. Para tokens e URLs, ative Seguro para URL para usar - e _ em vez de + e /.
  4. Copie o resultado ou clique em Inverter para fazer a operação contrária.

Perguntas

Base64 é criptografia?
Não. Base64 é uma codificação que qualquer pessoa reverte na hora. Nunca use para esconder senhas ou segredos.
Qual é a diferença entre Base64 e Base64url?
O Base64url troca + por - e / por _ e geralmente remove o preenchimento =, para que o resultado possa ser usado em URLs e nomes de arquivos. JWTs usam Base64url.
Por que a decodificação falha?
Ou a entrada tem caracteres fora do alfabeto Base64, ou ela decodifica para dados binários em vez de texto UTF-8, como uma imagem ou um arquivo compactado.
Por que o texto codificado fica mais longo?
O Base64 representa cada 3 bytes com 4 caracteres, então a saída fica cerca de 33% maior que a entrada.
O que significa o = no fim de um Base64?
É padding. A saída Base64 sempre tem um número de caracteres múltiplo de quatro, então um = significa que o último grupo tinha dois bytes e == significa que tinha um. O padding não carrega dados, e é por isso que o base64url geralmente o descarta. Esta ferramenta adiciona de volta o padding que falta antes de decodificar.
Como codificar em Base64 na linha de comando?
No Linux e no macOS, rode printf hello | base64 para obter aGVsbG8=. Evite o echo puro, que adiciona uma quebra de linha e gera aGVsbG8K. Para decodificar, use base64 -d, ou base64 -D em versões mais antigas do macOS. No PowerShell, use [Convert]::ToBase64String com os bytes do seu texto.
Como decodificar uma imagem ou um PDF em Base64?
Esta ferramenta decodifica para texto UTF-8, então dados binários como um PNG ou um PDF mostram um erro em vez de um arquivo. Salve a string Base64 em um arquivo e rode base64 -d input.txt > image.png em um terminal. Remova antes qualquer prefixo data:image/png;base64, porque ele não faz parte dos dados codificados.

O que é a codificação Base64 e como ela funciona?

O Base64 representa dados binários com 64 caracteres ASCII imprimíveis: A–Z, a–z, 0–9, + e /. O alfabeto padrão é definido na RFC 4648. O codificador lê a entrada de três em três bytes, divide esses 24 bits em quatro grupos de 6 bits e associa cada grupo a um caractere. É assim que os três bytes de “Man” viram “TWFu”. Quando o tamanho da entrada não é múltiplo de três, o padding = completa o último grupo.

O Base64 existe porque muitos canais foram feitos para texto, não para bytes brutos. Anexos de e-mail (MIME), URLs data: em HTML e CSS, cabeçalhos de autenticação HTTP Basic, certificados PEM e campos JSON que carregam imagens dependem dele. É uma codificação de transporte, não compressão nem segurança. A decodificação é instantânea e não precisa de chave, então trate qualquer coisa codificada em Base64 como texto simples que qualquer pessoa pode ler.

Como decodificar Base64 para texto, e por que o UTF-8 importa

Para decodificar Base64 online, escolha Decodificar e cole a string. Espaços e quebras de linha são removidos antes, então a saída quebrada em linhas de um arquivo PEM ou de um e-mail é decodificada sem problema. O padding = que falta é adicionado de volta automaticamente, e os caracteres - e _ do formato seguro para URL também são aceitos, então você não precisa saber qual variante tem em mãos. Os bytes decodificados são então lidos como texto UTF-8.

O UTF-8 importa porque o Base64 codifica bytes, não caracteres. O btoa() nativo do navegador só aceita Latin-1, então chamá-lo com um texto que tenha ✓ ou um emoji lança um InvalidCharacterError. Esta ferramenta converte o texto para bytes UTF-8 antes, então acentos e emoji fazem a ida e volta corretamente: “é” vira os dois bytes C3 A9 e é codificado como “w6k=”. Se os bytes decodificados não forem UTF-8 válido, como em uma imagem ou em um arquivo gzip, você recebe um erro em vez de texto embaralhado.

Base64, hex ou URL encoding: qual usar

Base64, hex e percent-encoding transformam dados em texto seguro, mas servem para trabalhos diferentes. O hex usa dois caracteres por byte, então a saída dobra de tamanho, mas é fácil de ler e é o padrão para hashes e checksums. O Base64 usa quatro caracteres para cada três bytes, cerca de 33% a mais, o que o torna a melhor escolha para payloads binários maiores, como imagens, chaves ou conteúdo de arquivos dentro de JSON.

O percent-encoding, usado em URLs, foi feito para texto com alguns caracteres reservados, não para dados binários. Se um valor Base64 precisa ir para uma URL, uma query string ou um nome de arquivo, use o alfabeto base64url em vez de aplicar percent-encoding em + e /. Ative Seguro para URL ao codificar aqui: - e _ substituem + e /, e o padding = é descartado, que é exatamente o formato que os JWTs usam. Para o percent-encoding em si, use a ferramenta de URL.

Algo não está funcionando ou um resultado parece errado? Relatar um problema com esta ferramenta