Base64 Decodificador

/

Seus dados são 100% privados -- o Base64 é codificado e decodificado totalmente no seu dispositivo.

Texto simples
Base64

O que é Base64?#

Base64 é uma forma de representar dados binários como texto simples usando 64 caracteres ASCII: A–Z, a–z, 0–9, mais + e /. Ele permite que dados binários como imagens, chaves e anexos de e-mail trafeguem com segurança por sistemas feitos para texto. É codificação, não criptografia.

O Base64 usa um alfabeto fixo de 64 caracteres. Cada valor de 0 a 63 mapeia para exatamente um deles, e é assim que quaisquer 3 bytes de binário viram 4 caracteres legíveis:

ValoresCaracteres
0–25A–Z26 letras maiúsculas
26–51a–z26 letras minúsculas
52–610–910 dígitos
62–63+ /2 símbolos

O sinal "=" é a única exceção. Ele é preenchimento, não um dos 64 valores, e só arredonda o último bloco.

Você quase certamente já viu isso. O Base64 aparece sempre que dados binários precisam trafegar dentro de texto:

  • Embutir uma imagem ou ícone pequeno direto no HTML ou CSS
  • Retornar blobs binários dentro de uma resposta de API em JSON
  • Codificar anexos de e-mail (MIME)
  • Armazenar chaves e certificados em arquivos PEM

Esse truque de data URI fica assim. A longa sequência é a imagem inteira:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />

Por que o Base64 existe?#

Os primeiros protocolos de rede foram feitos para texto, não para bytes brutos. O ASCII usava 7 bits e 128 caracteres, o que servia bem para o inglês, mas não para binário. Alguns sistemas corrompiam caracteres de controle ou reescreviam quebras de linha (LF para CR + LF), corrompendo silenciosamente imagens e áudio em trânsito.

O Base64 contorna tudo isso emitindo apenas caracteres com os quais todo sistema já concorda. Base16 e Base32 fazem o mesmo trabalho com alfabetos menores, mas o Base64 empacota mais dados por caractere mantendo a segurança. Foi por isso que venceu.

Como funciona a codificação Base64#

Todo o esquema é uma ideia repetida: pegar 3 bytes (24 bits), refatiá-los em quatro grupos de 6 bits e procurar cada grupo no alfabeto. Veja a palavra "Logto", codificada à mão.

  1. Escreva cada caractere como binário de 8 bits, usando seu código ASCII.
  2. Pegue 3 bytes por vez. Isso são 24 bits.
  3. Refatie esses mesmos 24 bits em quatro grupos de 6 bits.
  4. Leia cada grupo de 6 bits como um número de 0 a 63.
  5. Procure esse número no alfabeto para obter um caractere.
  6. Se o último trecho de bytes não chegar a 3, preencha os bits que sobram com zeros e adicione "=" para que cada bloco fique com 4 caracteres.

Passo 1. Transforme cada caractere em seu binário de 8 bits:

CaractereCódigo ASCIIBinário
L7601001100
o11101101111
g10301100111
t11601110100
o11101101111

Passo 2. Pegue os três primeiros bytes, "Log", e refatie esses mesmos 24 bits em quatro grupos de 6 bits:

bytes de 8 bits
01001100 01101111 01100111
grupos de 6 bits
010011 000110 111101 100111

Passo 3. Leia cada grupo de 6 bits como um número e procure o número no alfabeto:

Grupo de 6 bitsValorCaractere Base64
01001119T
0001106G
111101619
10011139n

"Logto" tem 5 bytes, não é múltiplo de 3. Os dois últimos bytes, "to", deixam uma divisão de 6 + 6 + 4. Preencha esses últimos 4 bits com zeros para completar um grupo de 6 bits e adicione um "=" para completar o bloco de 4 caracteres:

Junte os blocos:

"Logto"  →  TG9ndG8=

Toda linguagem já traz isso embutido. No Node.js:

const text = 'Logto';
const base64 = Buffer.from(text).toString('base64');
console.log(base64); // TG9ndG8=

Três regras surgem desse processo, que vale a pena ter em mente:

  • 3 entram, 4 saem: O comprimento da saída é a entrada arredondada para um múltiplo de 4 caracteres, então os dados codificados sempre ficam cerca de 33% maiores.
  • "=" significa preenchimento: Só aparece quando a entrada não é múltiplo de 3 bytes.
  • O preenchimento conta as sobras: Nenhum "=" significa múltiplo de 3 bytes, um "=" significa 2 bytes restantes, dois "=" significam 1 byte restante.

Quando você deve usar Base64?#

Recorra ao Base64 quando dados binários precisam passar por um canal somente texto:

  • Recursos embutidos: Embuta uma imagem ou fonte pequena em HTML/CSS para economizar uma requisição.
  • Transportes somente texto: Coloque binário dentro de JSON, XML ou um parâmetro de consulta de URL.
  • Caracteres restritos: Mova dados por sistemas que travam com bytes de controle.

O que você ganha em troca:

  • Funciona em todo lugar: Qualquer sistema compatível com ASCII consegue ler, sem negociação de charset.
  • Nada é corrompido: A saída sobrevive a canais que de outra forma danificariam bytes brutos.

Base64 seguro para URL (Base64URL)#

O Base64 padrão depende de três caracteres que entram em conflito com o funcionamento de URLs, query strings e nomes de arquivo: +, / e o preenchimento =. Coloque uma string Base64 normal em um link e ela pode quebrar de formas silenciosas:

  • + vira espaço. Em uma query string, muitos servidores leem + como espaço. Então ?data=ab+cd chega silenciosamente como "ab cd", e os bytes ficam errados.
  • / é separador de caminho. Uma / dentro de um valor pode ser lida como um novo segmento de caminho, e a maioria dos sistemas de arquivos a rejeita num nome de arquivo.
  • = também é reservado. Ele separa chaves de valores numa query string, então o preenchimento = no final é removido ou mal interpretado.

Você pode aplicar percent-encoding (+ vira %2B, / vira %2F, = vira %3D), mas isso aumenta a string e é fácil codificar duas vezes por engano.

O Base64URL (RFC 4648 §5) resolve isso na origem: troca + por -, troca / por _ e remove o preenchimento =. O resultado entra direto numa URL, parâmetro de consulta ou nome de arquivo sem nada a escapar. Você vai vê-lo em URLs, nomes de arquivo e muitas APIs web.

const base64 = 'TG9ndG8=';
const urlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(urlSafe); // TG9ndG8

Limitações (e um grande equívoco)#

O Base64 é uma representação, não um almoço grátis. Tenha três coisas em mente:

  • É ~33% maior: 3 bytes viram 4 caracteres, então os dados codificados incham cerca de um terço.
  • Custa CPU: Codificar e decodificar não são de graça em alto volume ou em grandes volumes de dados.
  • É ilegível: Sequências opacas dificultam logs e depuração.
Base64 não é criptografia. Esse é o erro mais comum. O Base64 não esconde nada. Qualquer um pode decodificá-lo em uma linha. Se os dados forem sensíveis, criptografe-os. O Base64 só muda o formato, nunca quem pode ler.

Perguntas frequentes#

Base64 é criptografia ou é seguro?

Não. É codificação reversível com um alfabeto público, então qualquer um pode decodificá-lo instantaneamente e não adiciona nenhuma confidencialidade. Criptografe dados sensíveis em vez disso.

Por que minha string Base64 é cerca de 33% maior?

O Base64 transforma cada 3 bytes em 4 caracteres, então a forma codificada é sempre cerca de um terço maior que os bytes originais.

O que significam os sinais "=" no final?

São preenchimento que mantém a saída em um múltiplo de 4 caracteres. Um "=" significa que a entrada tinha 2 bytes restantes; dois "=" significam que tinha 1; nenhum "=" significa que o comprimento já era múltiplo de 3 bytes.

Qual é a diferença entre Base64 e Base64URL?

O Base64URL é a mesma codificação com um alfabeto seguro para URL e nomes de arquivo: - e _ substituem + e /, e o preenchimento = costuma ser removido. É comum em URLs, nomes de arquivo e muitas APIs web.

O Base64 pode codificar qualquer arquivo ou só texto?

Qualquer binário: imagens, PDFs, chaves, executáveis. O Base64 trabalha com bytes brutos, então o tipo de conteúdo original não importa.

Esta ferramenta envia meus dados para algum lugar?

Não. A codificação e a decodificação rodam inteiramente no seu navegador. Nada que você cola é enviado ou registrado.

Desbloqueie mais com o Logto Cloud