KeroTools

Codificador e Decodificador Base64

Codifique qualquer texto em Base64 ou decodifique-o na hora no seu navegador — ferramenta grátis para devs.

Entrada
0 caracteres
Saída

Seu texto fica no seu aparelho

Nada para apagar depois

Feito para decodificar credenciais

Funciona em todo navegador moderno

Como funciona

  1. 1

    Cole seu texto

    Texto puro para codificar, ou uma string Base64 para decodificar.

  2. 2

    Escolha o sentido e o alfabeto

    Codificar ou decodificar, padrão ou seguro para URL, conforme o destino do resultado.

  3. 3

    Copie o resultado

    Leve para um cabeçalho, um data URI, um valor de configuração ou uma requisição.

Por que usar esta ferramenta

Os dois alfabetos

Base64 padrão e a variante segura para URL, para que um token que precisa atravessar uma query string sobreviva.

Preenchimento resolvido nos dois sentidos

Entrada com ou sem `=` no fim decodifica, e você escolhe o que a saída carrega.

UTF-8 feito direito

Árabe, turco e emoji vão e voltam intactos em vez de decodificar em caracteres de substituição.

Instantâneo nos dois sentidos

Codificar e decodificar no mesmo lugar, sem trocar de ferramenta no meio de uma sessão de depuração.

Nada é enviado

A conversão acontece no seu navegador — um token que você cola nunca chega a um servidor.

Grátis e sem conta

Sem cadastro, sem marca d’água e sem limite de quanto você converte.

Base64 não é criptografia, e tratar como se fosse é uma vulnerabilidade real

Esta é a coisa mais importante a entender sobre o formato, e é constantemente mal compreendida. Base64 não tem chave, não tem segredo e não tem propriedade de segurança nenhuma. É um mapeamento público e reversível que qualquer um desfaz num passo — exatamente o que esta página faz. Ainda assim Base64 aparece com regularidade como substituto de proteção: senhas guardadas codificadas em Base64 num banco de dados, chaves de API “ofuscadas” num arquivo de configuração, dados pessoais codificados num cookie para “não parecer nada”. Nada disso está escondido. Está apenas escrito em outro alfabeto, e qualquer pessoa ou scanner que o encontre lê na hora. Se o objetivo é que alguém não consiga ler um valor, é preciso criptografia ou hash, e Base64 não é nenhum dos dois.

Para que serve de verdade: passar bytes por canais só de texto

Base64 resolve um problema específico e nada glamouroso. Muitos sistemas só aceitam texto imprimível: corpos de e-mail, campos de string em JSON, cabeçalhos HTTP, documentos XML, URLs. Entregue a qualquer um deles binário cru — uma imagem, um arquivo compactado, uma chave de criptografia — e algo no caminho vai estragar, porque bytes que por acaso parecem caracteres de controle ou fins de linha são reescritos em trânsito. Base64 contorna isso reexpressando bytes arbitrários com 64 caracteres que todo sistema concorda em deixar em paz. É por isso que um anexo de e-mail vai em Base64 dentro da mensagem, por isso que uma imagem embutida no CSS é um `data:` URI, e por isso que um certificado binário é entregue como bloco PEM. O formato é um invólucro de transporte, não um formato de armazenamento nem uma medida de segurança.

Custa um terço a mais de bytes, e às vezes isso importa

A aritmética é fixa: cada três bytes de entrada viram quatro caracteres de saída, então o dado codificado fica cerca de 33 por cento maior do que entrou, antes do preenchimento. Na maior parte do tempo isso é irrelevante. Deixa de ser irrelevante quando se embute imagem como `data:` URI em CSS ou HTML para economizar uma requisição HTTP. Uma imagem de 90 KB vira 120 KB de caracteres e, ao contrário de um arquivo de imagem de verdade, não dá para cachear separadamente, não dá para carregar de forma preguiçosa e ela bloqueia a folha de estilo que a contém. Para um ícone pequeno é uma troca justa. Para uma fotografia costuma ser um erro que aparece depois como uma primeira pintura lenta. Se você está codificando algo para embutir, veja o que o tamanho faz antes de se comprometer.

O alfabeto seguro para URL existe porque três caracteres quebram URLs

Base64 padrão usa `+`, `/` e `=`, e os três significam outra coisa numa URL. O sinal de mais é lido como espaço em query strings, a barra é separador de caminho e o igual separa um parâmetro do seu valor. Mande um token codificado no padrão por uma URL e ele chega corrompido, muitas vezes de um jeito que só aparece com algumas entradas — daí “funciona no meu cliente de API mas quebra no navegador” ser um relato tão comum. A variante segura para URL corrige isso trocando `+` por `-` e `/` por `_`, e geralmente descartando o preenchimento por completo. Os JWT usam, assim como a maioria dos formatos modernos de token. Os dois alfabetos não são intercambiáveis: decodificar uma string segura para URL com um decodificador padrão rígido falha, então case a variante com o lugar por onde o valor viajou.

O que os sinais de igual no fim estão fazendo

O preenchimento é a parte que todo mundo nota e ninguém tem certeza. Como a codificação trabalha em grupos de três bytes, uma entrada cujo tamanho não seja múltiplo de três deixa um grupo parcial, e os `=` completam a saída até um múltiplo de quatro. Um sinal de igual significa que a entrada terminou com dois bytes sobrando; dois significam que terminou com um. É tudo que eles carregam — são uma pista de tamanho, não dado. Na prática os decodificadores discordam sobre serem obrigatórios: alguns rejeitam de cara entrada sem preenchimento, outros aceitam, e a convenção segura para URL costuma omitir porque `=` é desajeitado numa URL. Se um valor falha ao decodificar em outro lugar e parece certo aqui, expectativas de preenchimento desencontradas merecem checagem antes de qualquer coisa mais exótica.

Por que decodificar localmente importa aqui mais que em quase qualquer outro lugar

Olhe o que as pessoas realmente colam num decodificador Base64. É um cabeçalho `Authorization: Basic`, que contém um usuário e uma senha separados por dois-pontos. É a metade de payload de um JWT, que carrega um identificador de usuário e muitas vezes um e-mail. É uma string de conexão, uma chave de API, um cookie de sessão, um certificado. A razão inteira de alguém recorrer a um decodificador é que está com um valor que não consegue ler, e valores que você não consegue ler são esmagadoramente credenciais. Colar isso num decodificador hospedado entrega um segredo em funcionamento a um terceiro, por um canal que não deixa rastro. Esta ferramenta converte dentro da página e não transmite nada, o que você confere na aba Rede das ferramentas de desenvolvedor — e para este formato em particular, isso não é um mimo.

Erros comuns que vale evitar

  • Usar Base64 para esconder alguma coisa. Não há chave nem segredo — qualquer um decodifica num passo; se um valor não pode ser legível, precisa de criptografia ou hash, não de um alfabeto diferente.
  • Mandar um valor codificado no padrão por uma URL. Os caracteres `+`, `/` e `=` significam outra coisa ali; use o alfabeto seguro para URL ou o valor chega corrompido em algumas entradas e em outras não.
  • Embutir uma imagem grande como `data:` URI. A codificação acrescenta cerca de um terço ao tamanho, e o resultado não pode ser cacheado separadamente nem carregado com preguiça — ok para um ícone, caro para uma fotografia.
  • Supor que o preenchimento é opcional em todo lugar. Alguns decodificadores exigem os `=` finais, outros rejeitam; se um valor decodifica aqui e falha em outro lugar, cheque o preenchimento antes de procurar causas exóticas.
  • Colar um cabeçalho Authorization ou um JWT num decodificador hospedado. Esses valores são credenciais vivas, e a colagem não deixa rastro de que você as enviou; decodifique localmente.

Comparação

ItemEsta ferramentaDecodificadores onlineUma linha de comando
Conteúdo enviado a um servidorNuncaGeralmente simNão
Alfabeto seguro para URLSimVariaPrecisa de uma flag
UTF-8 tratado direitoSimVariaSim
Precisa de configuraçãoNenhumaNenhumaUm terminal
Conta ou cadastroNão precisaFrequentemente exigidoNão precisa
PreçoGrátisGrátis / planos pagosGrátis

Recursos

Codificar e decodificar

Os dois sentidos num lugar só, com entrada e saída lado a lado.

Variante segura para URL

O alfabeto com `-` e `_` usado pelos JWT e por tudo que viaja numa URL.

Preenchimento opcional

Emita ou retire os `=` finais para bater com o que o sistema receptor espera.

Suporte completo a Unicode

O texto é codificado como UTF-8 primeiro, então escritas não latinas sobrevivem à viagem.

Aguenta entradas grandes

Strings longas convertem sem upload nem teto de tamanho.

Entrada inválida sinalizada

Uma string que não é Base64 válido diz isso, em vez de devolver besteira em silêncio.

Nada para instalar

Sem linha de comando, sem runtime, sem dependências — funciona na página web.

Compatível com árabe e RTL

Interface completa em oito idiomas, incluindo árabe da direita para a esquerda.

Seguro por padrão

Servido por HTTPS, sem rastreio de conteúdo e sem envio a terceiros.

Quem usa

Desenvolvedores

Ler um cabeçalho de autenticação ou o payload de um token durante a depuração, sem entregar a terceiros.

Engenheiros de segurança

Inspecionar um valor codificado achado num log, num cookie ou num arquivo de configuração.

Integradores de API

Montar ou conferir um cabeçalho de autenticação básica antes de mandar uma requisição com ele.

Desenvolvedores front-end

Produzir um `data:` URI para um recurso pequeno embutido e ver quanto custa em tamanho.

Perguntas Frequentes

Não. Tudo roda localmente no seu navegador — seu texto nunca é enviado, armazenado ou compartilhado.

Sim — totalmente grátis, sem conta e sem limites.