O que é codificação Base64? Um guia em inglês simples (e por que não é criptografia)

11 de julho de 2026 · 8 min de leitura
Experimentar a ferramentaCodificador/Decodificador Base64 →

Você já viu: uma longa sequência de letras e números, talvez terminando em um ou dois sinais de igual, em um JWT, uma fonte de e-mail ou uma tag de imagem. Essa é a Base64, uma das codificações mais comuns na computação e que um número surpreendente de desenvolvedores usa todos os dias sem saber o que realmente faz, ou pior, acreditando que faz algo que não faz. Este guia explica o Base64 em inglês simples: o que é, por que existe, onde você o encontrará e o equívoco perigoso que causa incidentes de segurança reais.

O que Base64 realmente é

Base64 é uma forma de representar dados binários, quaisquer bytes, usando apenas 64 caracteres de texto imprimíveis: as 26 letras maiúsculas, as 26 letras minúsculas, os 10 dígitos e dois símbolos, mais (+) e barra (/). O sinal de igual (=) é usado como preenchimento no final. Esse é todo o alfabeto e é daí que vem o nome. Cada caractere na saída Base64 é um caractere seguro e imprimível, sem códigos de controle ou espaços em branco ambíguos, que é exatamente o ponto.

A razão pela qual existe é histórica e ainda relevante. Os principais protocolos da Internet, e-mail sobre SMTP, cabeçalhos HTTP e outros, foram projetados para texto simples. Alimente-os com dados binários brutos, como uma imagem ou um blob criptografado, e certos valores de bytes serão mal interpretados como caracteres de controle e corromperão os dados. Base64 resolve isso convertendo binário em um subconjunto de texto que sobrevive intacto a qualquer canal baseado em texto. É um tradutor entre o mundo binário e o mundo do texto.

Como funciona, brevemente

O algoritmo recebe sua entrada três bytes por vez. Três bytes equivalem a 24 bits, que são divididos em quatro grupos de 6 bits cada, e cada grupo de 6 bits é mapeado para um dos 64 caracteres. Portanto, cada 3 bytes de entrada tornam-se exatamente 4 caracteres de saída. Quando sua entrada não é um múltiplo limpo de 3 bytes, Base64 preenche a saída com sinais de igual, um = se o último grupo tiver 2 bytes, dois == se tiver apenas 1 byte, então o resultado é sempre um múltiplo de 4 caracteres. É isso que significam os sinais de igual à direita: eles informam ao decodificador quantos bytes reais havia no grupo final.

Essa proporção de 3 para 4 tem uma consequência direta: a saída Base64 é cerca de 33% maior que os dados originais. Uma imagem de 1 MB torna-se aproximadamente 1,37 MB codificada. Essa sobrecarga de tamanho é o preço que você paga pela segurança do texto, e é por isso que o Base64 é ótimo para coisas pequenas e uma escolha ruim para coisas grandes.

Onde você encontrará Base64

Base64 está em toda parte quando você sabe como olhar. URLs de dados incorporam um arquivo diretamente em HTML ou CSS, o data:image/png;base64,... que você às vezes vê em uma tag de imagem ou estilo de plano de fundo, permitindo que um pequeno ícone seja carregado com a página em vez de como uma solicitação separada. Os anexos de email são codificados em Base64 para que os arquivos binários sobrevivam ao transporte de email baseado em texto; todos os anexos que você já enviou viajaram dessa maneira, e é por isso que um arquivo de e-mail bruto é maior do que o arquivo que ele carrega.

JSON Web Tokens (JWTs) codificam seu cabeçalho e carga útil em uma variante segura de URL de Base64. A autenticação básica HTTP envia seu nome de usuário e senha como Base64 em um cabeçalho. APIs que aceitam uploads de arquivos dentro de um corpo JSON codificam o arquivo em Base64, porque JSON é texto e não pode conter bytes brutos. E arquivos PEM, certificados SSL e chaves SSH são binários codificados em Base64 agrupados entre as linhas de cabeçalho BEGIN e END. A mesma codificação simples está subjacente a tudo isso.

O mito perigoso: Base64 não é criptografia

Esta é a coisa mais importante a entender, porque errar causa verdadeiras violações de segurança. Base64 oferece segurança zero. Não é criptografia. Qualquer pessoa com a string codificada pode decodificá-la instantaneamente, sem chave, em uma linha em qualquer console do navegador. A string c2VjcmV0 é decodificada como "secreta" em cerca de um segundo.

O perigo vem da aparência do Base64. Uma string Base64 parece embaralhada e aleatória, visualmente semelhante a dados criptografados, o que engana as pessoas fazendo-as pensar que estão protegidas. Isso leva a incidentes genuínos: um desenvolvedor envia um arquivo de configuração com credenciais de banco de dados codificadas em Base64 para o controle de versão, acreditando que a codificação as oculta, mas isso não acontece. Uma API registra o cabeçalho de autorização e um revisor "não consegue ler" a senha Base64, portanto ela fica nos logs como texto simples até que alguém a decodifique em cinco segundos. Armazenar uma chave de API como Base64 em um banco de dados parece opaco, mas não protege nada.

Se a confidencialidade for importante, use criptografia real (como AES por meio da API Web Crypto) e, para senhas, use um hash lento, como bcrypt ou Argon2. Base64 serve para representação e transporte, nunca para ocultar dados.

Base64 seguro para URL (Base64url)

O Base64 padrão usa + e /, mas ambos têm um significado especial em URLs, + pode significar um espaço em uma string de consulta e / delimita segmentos de caminho. Portanto, uma variante segura para URL chamada Base64url substitui + por - (menos) e / por _ (sublinhado) e geralmente descarta o preenchimento =, que de outra forma precisaria de codificação percentual em uma URL. Esta é a variante usada por JWTs, tokens OAuth e cookies seguros para URL. Se você alimentar um segmento JWT em um decodificador Base64 padrão estrito e receber um erro ou lixo, geralmente é o motivo: você precisa converter os caracteres seguros para URL de volta e restaurar o preenchimento primeiro.

A pegadinha do Unicode

Um bug sutil atinge os desenvolvedores que codificam textos em idiomas diferentes do inglês em Base64. A função clássica do navegador btoa() assume que cada caractere é um único byte, que quebra em letras acentuadas, emoji ou qualquer script não latino. A correção é codificar o texto como UTF-8 primeiro e, em seguida, codificar em Base64 os bytes resultantes, caso contrário, "café" ou "こんにちは" sai corrompido. Um bom codificador lida com essa etapa UTF-8 para você, para que o texto acentuado e o emoji sejam ida e volta de forma limpa.

A ferramenta TextCaret Base64 codifica através de UTF-8 para que letras acentuadas e emojis permaneçam intactos, seja executado inteiramente em seu navegador e nunca envie seus dados para um servidor, o que é importante quando você está inspecionando um token ou credencial.

Quando usar, quando evitá-lo

Use Base64 quando precisar mover pequenos dados binários por meio de um canal somente texto: um pequeno ícone embutido, um token, um pequeno arquivo dentro de uma carga JSON, uma credencial que você está depurando. Evite isso para arquivos binários grandes em caminhos sensíveis ao desempenho, a penalidade de tamanho de 33% e a perda de cache separado tornam um arquivo real ou um upload multiparte a melhor escolha. E nunca use isso como camada de segurança. Mantenha-o em sua faixa, representação e transporte, e o Base64 será uma ferramenta confiável e universal.

Experimentar a ferramentaCodificador/Decodificador Base64 →