FreeToGenerate.com

100% grátis · sem cadastro · nada sai do seu navegador

Digite algo para ver o resultado aqui.

Tudo acontece no seu navegador: nada é enviado a servidor nenhum, e nada fica salvo.

Também disponível em: English · Español · Français · العربية

Codificador e Decodificador Base64 Online

Codifique texto em base64 ou decodifique de volta, com suporte completo a UTF-8 — direto no navegador, sem instalar nada.

O que é um codificador e decodificador base64

Base64 é uma forma de representar bytes arbitrários — texto, mas também o conteúdo binário de qualquer arquivo — usando só 64 caracteres que qualquer sistema de texto aceita sem reclamar: letras maiúsculas, minúsculas, dígitos e mais dois símbolos. Surgiu para transportar dados binários por canais que só entendiam texto puro, como anexos de e-mail nos anos 90, e continua vivo hoje em JSON, em variáveis de ambiente, em tokens JWT e em URLs de dados embutidas em CSS ou HTML.

Codificar pega os bytes de entrada e produz essa representação em texto. Decodificar faz o caminho inverso: pega o texto em base64 e devolve os bytes originais. Esta ferramenta faz as duas coisas, com alfabeto padrão ou seguro para URL, e atualiza o resultado a cada tecla digitada.

Como usar

  1. Escolha o modo: clique em Codificar para transformar texto em base64, ou em Decodificar para fazer o caminho inverso.
  2. Cole o conteúdo. Digite ou cole o texto (ou o base64) na caixa de entrada — o alfabeto e a opção de quebra de linha ficam disponíveis conforme o modo escolhido.
  3. Copie o resultado. O resultado aparece na caixa somente leitura enquanto você digita; clique em Copiar para levar para a área de transferência.

Por que o btoa() do navegador está errado

O atalho de uma linha que todo mundo cola do Stack Overflow, btoa(), está quebrado para qualquer coisa fora do ASCII puro — e quebra de duas formas diferentes, dependendo do caractere. Com um acento, ele falha em silêncio, o que é pior do que travar: btoa('café') devolve Y2Fm6Q==, mas o base64 correto em UTF-8 é Y2Fmw6k=. O motivo é que btoa() trata cada caractere como um único byte e codificou o é como o byte solto e9, em vez dos dois bytes que o UTF-8 realmente usa para ele, c3 a9. Passe Y2Fm6Q== para qualquer decodificador que espere UTF-8 — inclusive este aqui — e o resultado é caf seguido do caractere de substituição. Nenhum erro é levantado em ponto nenhum do processo; o dado só sai errado.

Com qualquer caractere acima de U+00FF, btoa() troca a corrupção silenciosa por uma exceção: btoa('👍'), btoa('€') e btoa('日本語') lançam InvalidCharacterError na cara do usuário. Para quem escreve em português isso não é um caso de borda raro, é rotina — acento agudo, til e cedilha caem todos na primeira armadilha, a silenciosa, porque estão na faixa Latin-1; basta um emoji ou um símbolo de moeda diferente do dólar para cair na exceção.

Esta ferramenta faz o que btoa() deveria fazer: converte o texto para bytes UTF-8 primeiro, e só depois codifica esses bytes — então tudo o que entra volta idêntico. café (5 bytes) vira Y2Fmw6k=; 👍 (4 bytes) vira 8J+RjQ==; 日本語 (9 bytes) vira 5pel5pys6Kqe; مرحبا (10 bytes) vira 2YXYsdit2KjYpw==. E como base64 conta bytes, não caracteres, a linha abaixo da saída mostra as duas contagens separadas: café são 4 caracteres mas 5 bytes, e 👍 é 1 caractere — embora o próprio .length do JavaScript diga 2 — e 4 bytes.

A expansão também é previsível: cada 3 bytes de entrada viram 4 caracteres de saída, um fator fixo de 4/3, cerca de 33% a mais, arredondado para cima até o próximo múltiplo de 4 com o preenchimento =. Medido nesta ferramenta: 100 bytes de entrada geram 136 caracteres de base64, e 3.000 bytes geram exatamente 4.000. O alfabeto seguro para URL troca + por - e / por _, e costuma descartar o preenchimento = — é a variante que os JSON Web Tokens usam: os mesmos três bytes que produzem +/++ no alfabeto padrão viram -_-- no alfabeto seguro para URL. E se você marcar a quebra de linha a cada 76 caracteres, está usando a convenção MIME de e-mail, que é literalmente de onde o base64 veio.

Limites honestos

Isto é uma ferramenta de texto, não de arquivos. Ao decodificar, os bytes resultantes passam por um decodificador UTF-8 estrito — cole o base64 de um PNG ou de um .zip aqui e a ferramenta vai dizer que aqueles bytes não formam texto válido, em vez de tentar exibir o arquivo. Não é um bug: é o comportamento certo para quem quer ler texto, não abrir binário na tela.

Base64 é codificação, não criptografia, e vale repetir porque o sinal de igual no fim confunde gente: qualquer um reverte o resultado em um segundo, sem senha nenhuma, com a mesma ferramenta que você está usando agora. Ele não esconde nada — existe só para transportar bytes por canais que aceitam apenas texto. Nunca use base64 para guardar um segredo.

E nada sai da sua máquina. Essa é justamente a razão de preferir uma ferramenta que roda no navegador para qualquer coisa sensível: colar um token de API ou dado de cliente num codificador que processa no servidor é entregar esse conteúdo para aquele servidor. Aqui não existe requisição de rede — o que você cola some ao recarregar a página, porque nada é salvo.

Por que é grátis

Codificar e decodificar base64 é aritmética de bit a bit, o tipo de operação que o motor JavaScript do seu próprio navegador resolve em microssegundos. Não existe custo de servidor para repassar, então não tem razão para cobrar, pedir e-mail ou esconder atrás de um limite de uso: a ferramenta roda inteira no seu navegador, e sobra performance.