Codificar em Base64
Texto, uma imagem ou qualquer arquivo — transformado em Base64, do jeito certo. Acentos e emojis são preservados, algo que as implementações de uma linha costumam não conseguir. Nada fica armazenado.
- Nunca armazenado
- Sem fila, sem espera
- Sem cadastro, sem marca d'água
O texto é codificado como UTF-8, então acentos e emojis são preservados.
Base64 aparece aqui.
Como funciona
Cole o texto ou solte um arquivo
O texto é codificado como UTF-8. Um arquivo é codificado byte a byte e nunca fica armazenado.
Escolha a variante
Base64 padrão, Base64URL seguro para URL para tokens e query strings, ou um data URI completo pronto para colar em CSS ou em uma tag <img>.
Copie
Copie o resultado ou baixe-o como arquivo de texto, se for grande.
Por que cresce exatamente um terço
O Base64 pega três bytes por vez e os escreve como quatro caracteres, cada um carregando seis dos vinte e quatro bits. Quatro dividido por três é de onde vêm os famosos 33 por cento — é aritmética, não ineficiência, e nenhum codificador faz melhor sem sair da faixa de caracteres imprimíveis. Quando os dados não se dividem exatamente em grupos de três, o último grupo recebe preenchimento e é marcado com um ou dois sinais de =, e é por isso que o comprimento de qualquer string Base64 é sempre múltiplo de quatro.
Existem dois alfabetos, e escolher o errado é o problema mais comum que traz as pessoas até aqui. O alfabeto padrão termina com + e /, e os dois têm significado em uma URL — o sinal de mais vira espaço em uma query string e a barra parece um separador de caminho. A variante segura para URL usa - e _ no lugar, e é a que JSON Web Tokens, nomes de arquivo e tudo que aparece em um endereço usam. Fora isso, são idênticos, e um valor codificado com um e decodificado com o outro falha de um jeito que parece corrupção de dados.
A quebra de linha é o outro detalhe que depende do contexto. Anexos de e-mail esperam linhas de 76 caracteres, certificados e chaves PEM esperam 64, e um data URI ou um campo JSON não espera quebra nenhuma. Ela vem desativada aqui porque o formato sem quebras é o caso mais comum hoje; ative quando o destino for um cabeçalho de e-mail ou um bloco -----BEGIN-----, que vai rejeitar uma única linha enorme.
Base64 não é criptografia e não oferece proteção nenhuma. É uma troca de alfabeto — qualquer pessoa consegue revertê-la na hora, e qualquer scanner de segurança faz isso automaticamente. A função dele é levar dados binários por canais que só aceitam texto: corpo de e-mail, campos JSON, documentos XML, data URIs em uma folha de estilos. Usá-lo para esconder uma senha em uma configuração não esconde nada de quem olhar.
Quando você precisa de outra coisa
Na linha de comando, base64 -w 0 file.bin codifica sem quebra no Linux e o simples base64 faz o mesmo no macOS, enquanto openssl base64 -A funciona igual em qualquer lugar. Para o alfabeto seguro para URL, basenc --base64url é o que acerta sem precisar de uma etapa de substituição.
Para arquivos grandes, tudo aqui é a abordagem errada — o arquivo inteiro fica na memória, e a codificação o aumenta em um terço antes de qualquer outra coisa. As ferramentas de linha de comando processam em fluxo, e em código toda linguagem tem um codificador incremental. Também vale perguntar se o Base64 é mesmo necessário: enviar binário como multipart/form-data ou como corpo bruto evita tanto o uso de memória quanto os 33 por cento.
Perguntas frequentes
Meu texto ou arquivo fica armazenado em algum lugar?
Não. Nada fica armazenado, nada é registrado e nenhum servidor vê o conteúdo — e tudo continua funcionando com a rede desconectada. Nessas ferramentas, em especial, isso não é um detalhe. O que as pessoas colam em codificadores e decodificadores online costuma estar valendo: tokens de sessão, chaves de API, cabeçalhos Authorization, dados de clientes. Colar um desses em uma página que o envia para algum lugar é expô-lo, não importa o que o site prometa sobre exclusão.
Por que acentos e emojis funcionam aqui?
Porque o texto é convertido em bytes UTF-8 antes de ser codificado, que é a ordem correta e o passo que a maioria das implementações rápidas pula. O próprio `btoa` do navegador não aceita texto de verdade — ele aceita um byte por caractere, então `btoa("café")` simplesmente gera um erro. A gambiarra mais difundida, `btoa(unescape(encodeURIComponent(s)))`, funciona por acaso e falha com emojis e outros caracteres fora da faixa básica. Esta página codifica UTF-8 corretamente, uma única vez, então 日本語 e 🎉 passam e voltam idênticos na decodificação.
O que é Base64URL e quando eu preciso dele?
É Base64 com dois caracteres trocados: + vira -, / vira _, e o preenchimento = do final é removido. Ele existe porque +, / e = têm significado em uma URL, então o Base64 comum fica corrompido quando passa por uma query string ou um caminho. JWTs, tokens OAuth e tudo o que vai em uma URL usam Base64URL. Se você vai colocar o resultado em um link, escolha essa opção.
O Base64 criptografa ou protege alguma coisa?
Não, e vale ser direto sobre isso. Base64 é uma codificação, não criptografia — não há chave nem segredo. Qualquer pessoa que veja a string consegue decodificá-la em um passo, inclusive neste site. Ele existe para levar dados binários com segurança por canais que só aceitam texto, como anexos de e-mail e data URIs. Se algo precisa ficar em segredo, precisa de criptografia; o Base64 não oferece proteção nenhuma.
Por que o Base64 é maior que o meu arquivo?
Cerca de 33% maior, sempre. O Base64 representa cada 3 bytes como 4 caracteres de texto, então o tamanho cresce um terço por definição, mais um pouco de preenchimento. Esse é o preço de transformar binário em texto, e é por isso que incorporar uma imagem grande como data URI no seu CSS costuma ser uma troca ruim.
Posso codificar uma imagem como data URI?
Sim — solte a imagem e escolha Data URI. Você recebe a string `data:image/png;base64,…` completa, com o tipo de mídia certo já preenchido, pronta para colar em uma folha de estilos, em uma tag <img> ou em um modelo de e-mail.
Existe limite de tamanho?
A memória disponível, e não um limite fixo de tamanho, e ela é generosa — arquivos de muitos megabytes são codificados sem problema. A codificação é feita em partes justamente para lidar com arquivos grandes; a implementação óbvia trava por volta de 125 KB com “Maximum call stack size exceeded”, um bug presente em muitos codificadores online.
Bom saber: Base64 deixa os dados cerca de 33% maiores — isso é do formato, não um defeito. Os arquivos são lidos inteiros na memória, então um arquivo muito grande pode esgotar a aba de um celular antes de terminar. A quebra de linha vem desativada por padrão; os formatos de e-mail e PEM esperam que ela esteja ativada.
Coloque esta ferramenta no seu site
Grátis para qualquer blog, página de turma ou artigo de ajuda. Cole um único trecho de código e seus visitantes podem usá-la direto na sua página.
Mais Ferramentas para desenvolvedores
Decodificar Base64
Transforme Base64 de volta em texto ou arquivo
Codificar URL
Deixe o texto seguro para colocar em uma URL
Gerador de hash
MD5, SHA-1, SHA-256, SHA-384 e SHA-512
Decodificador JWT
Veja o que há dentro de um token, com privacidade
Gerador de UUID
v4 para segredos, v7 para chaves de banco de dados
Formatador JSON
Deixe JSON ilegível fácil de ler