🔡
Ferramentas para Desenvolvedores
May 21, 20267 min readBy BrowseryTools Team

O que é a codificação Base64? Um guia completo com exemplos

Aprenda o que é a codificação Base64, por que ela existe, onde é usada e como codificar e decodificar strings Base64 instantaneamente no seu navegador — sem ferramentas para instalar.

base64codificaçãodesenvolvedorbinárioformatos de dados

Abra qualquer aplicação web moderna, inspecione uma requisição HTTP, dê uma olhada em um manifesto do Kubernetes ou espie dentro de um token JWT — o Base64 está em toda parte. É um daqueles esquemas de codificação fundamentais que os desenvolvedores encontram constantemente, mas raramente param para entender por completo. Este guia explica o que é o Base64, como ele funciona no nível dos bytes, onde é usado em sistemas do mundo real e quando você deve (e não deve) recorrer a ele.

Você pode codificar e decodificar qualquer string Base64 instantaneamente usando o Codificador/Decodificador Base64 do BrowseryTools — gratuito, sem cadastro e sem que nada jamais saia do seu navegador.

Por que o Base64 existe?

Para entender o Base64, você precisa entender o problema que ele resolve. Nos primórdios da internet, muitos protocolos de comunicação — particularmente o e-mail — foram projetados em torno de texto ASCII de 7 bits. O ASCII define 128 caracteres usando 7 bits por caractere. Dados binários (imagens, documentos, executáveis) usam todos os 8 bits por byte, produzindo valores de byte que não tinham representação em ASCII e que os sistemas mais antigos descartavam, corrompiam ou interpretavam como comandos de controle.

O padrão MIME (Multipurpose Internet Mail Extensions), introduzido em 1991 para permitir que o e-mail transportasse anexos, precisava de uma maneira de transmitir dados binários arbitrários por esses canais limpos de 7 bits. A solução foi recodificar os dados binários usando apenas um subconjunto seguro de caracteres ASCII imprimíveis — um que todo sistema reconhecesse e transmitisse fielmente. O Base64 tornou-se a codificação padrão para esse propósito, e o nome descreve a abordagem: usar um conjunto de 64 caracteres seguros para representar quaisquer dados binários.

O alfabeto de 64 caracteres

O Base64 usa exatamente 64 caracteres, e é por isso que 6 bits de entrada podem sempre ser representados por um caractere Base64 (26 = 64). O alfabeto padrão definido na RFC 4648 é:

  • Letras maiúsculas de A a Z — valores de 0 a 25
  • Letras minúsculas de a a z — valores de 26 a 51
  • Dígitos de 0 a 9 — valores de 52 a 61
  • + — valor 62
  • / — valor 63

Um 65º caractere — o sinal de igual = — é usado como preenchimento (padding), mas não representa dados. O preenchimento garante que o comprimento da saída codificada seja sempre um múltiplo de 4 caracteres, o que simplifica a decodificação.

Como funciona a codificação Base64: 3 bytes → 4 caracteres

O Base64 funciona pegando 3 bytes de entrada (24 bits) e dividindo-os em quatro grupos de 6 bits. Cada grupo de 6 bits é mapeado para um caractere do alfabeto Base64. Como 3 bytes se tornam 4 caracteres, a codificação Base64 aumenta o tamanho dos dados em exatamente um terço (33%).

Vamos percorrer um exemplo concreto: codificar a string ASCII "Man".

Passo 1 — Converta cada caractere para seu valor de byte ASCII e, então, para binário:

  • M = ASCII 77 = 01001101
  • a = ASCII 97 = 01100001
  • n = ASCII 110 = 01101110

Passo 2 — Concatene os 24 bits em um único fluxo:

01001101 01100001 01101110
↓ (concatenate all 24 bits)
010011 010110 000101 101110

Passo 3 — Mapeie cada grupo de 6 bits para o alfabeto Base64:

Grupo de 6 bitsValor decimalCaractere Base64
01001119T
01011022W
0001015F
10111046u

A codificação Base64 de "Man" é TWFu. Você pode verificar isso usando a ferramenta Base64 do BrowseryTools. Quando o comprimento da entrada não é um múltiplo de 3, caracteres de preenchimento (= ou ==) são acrescentados para levar a saída a um múltiplo de 4 caracteres. Por exemplo, "Ma" codifica para TWE= e "M" codifica para TQ==.

Equívoco comum: O Base64 é codificação, não criptografia. O processo é completamente reversível por qualquer pessoa, sem nenhuma chave ou senha. Ver dados codificados em Base64 em uma URL, cabeçalho ou arquivo não significa que esses dados estejam protegidos de forma alguma — é simplesmente uma representação diferente dos mesmos bytes. Qualquer pessoa que consiga copiar a string pode decodificá-la instantaneamente.

Casos de uso comuns

Incorporar imagens em HTML e CSS

Em vez de fazer uma requisição HTTP separada para uma imagem ou ícone pequeno, você pode incorporá-lo diretamente no seu HTML ou CSS como uma data URI. O navegador decodifica a string Base64 e renderiza a imagem sem uma ida e volta à rede. Isso é útil para assets pequenos como favicons, indicadores de carregamento ou ícones embutidos em modelos de e-mail, onde o carregamento de URLs externas pode estar bloqueado.

/* CSS example — embedding a small PNG icon */
.icon {
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...');
}

Dados binários em APIs JSON

O JSON é um formato de texto. Se uma API precisa transmitir dados binários — um arquivo, uma chave criptográfica, uma assinatura, uma imagem — dentro de um payload JSON, ela não pode incluir bytes brutos. Codificar os dados binários em Base64 os transforma em uma string simples que o JSON pode carregar sem problemas. Muitas APIs que retornam conteúdo de arquivos, amostras de áudio ou imagens em respostas JSON usam essa abordagem.

Autenticação HTTP Basic

O esquema HTTP Basic Auth envia as credenciais no cabeçalho Authorization como uma codificação Base64 de username:password. Por exemplo, as credenciais admin:secret tornam-se a string YWRtaW46c2VjcmV0, e o cabeçalho completo fica assim:

Authorization: Basic YWRtaW46c2VjcmV0

Isso não é criptografado — é apenas codificado. O Basic Auth deve sempre ser usado sobre HTTPS, nunca sobre HTTP simples, porque as credenciais podem ser decodificadas trivialmente por qualquer pessoa que intercepte a requisição.

Payloads de JWT

Os JSON Web Tokens codificam seu cabeçalho e payload usando Base64URL (uma variante segura para URLs descrita abaixo). As claims do token — ID do usuário, tempo de expiração, papéis — são armazenadas no payload como um objeto JSON codificado em Base64URL. Novamente, isso não é criptografia: o payload é totalmente legível por qualquer pessoa que tenha o token.

Secrets do Kubernetes

O Kubernetes armazena os valores de Secret como strings codificadas em Base64 em manifestos YAML. Aqui está um exemplo real de um Secret do Kubernetes:

apiVersion: v1
kind: Secret
metadata:
  name: db-credentials
type: Opaque
data:
  username: YWRtaW4=
  password: cGFzc3dvcmQxMjM=

Para descobrir o que esses valores realmente são, cole YWRtaW4= no Decodificador Base64 do BrowseryTools. O resultado é admin. Cole cGFzc3dvcmQxMjM= e você obtém password123. O Kubernetes codifica em Base64 os valores de secret para uma formatação YAML segura, não por segurança — a segurança de fato vem do RBAC do Kubernetes e da criptografia em repouso, não da codificação em si.

A variante Base64URL

O Base64 padrão usa dois caracteres que são especiais em URLs: + (que significa espaço na codificação de formulários) e / (que é um separador de caminho). Quando dados codificados em Base64 precisam aparecer em uma URL, parâmetro de consulta ou nome de arquivo, esses caracteres causam problemas.

O Base64URL resolve isso substituindo:

  • + é substituído por - (hífen)
  • / é substituído por _ (sublinhado)
  • O preenchimento = ao final é frequentemente omitido

O Base64URL é usado em JWTs, tokens OAuth e em qualquer contexto em que a string codificada deva sobreviver à transmissão por URL sem percent-encoding. A ferramenta Base64 do BrowseryTools suporta tanto a variante padrão quanto a segura para URLs.

Quando NÃO usar o Base64

O Base64 é a ferramenta certa em situações específicas, mas é frequentemente mal utilizado. Veja quando você deve evitá-lo:

  • Arquivos grandes: O Base64 aumenta o tamanho dos dados em cerca de 33%. Uma imagem de 10 MB torna-se cerca de 13,3 MB quando codificada em Base64. Incorporar arquivos grandes como data URIs ou strings Base64 em JSON deixa a análise mais lenta, aumenta o uso de memória e desperdiça banda. Use transferências diretas de arquivos ou URLs de armazenamento de objetos para qualquer coisa de tamanho não trivial.
  • Segurança: Nunca use o Base64 como uma medida de segurança. Ele oferece zero confidencialidade. Se os dados forem sensíveis, use criptografia de verdade (AES-GCM, RSA, etc.).
  • Armazenamento: Armazenar dados binários como Base64 em uma coluna de banco de dados desperdiça 33% mais espaço em comparação com armazenar os bytes brutos em uma coluna binária. Use tipos binários nativos do banco de dados (BYTEA no PostgreSQL, BLOB no MySQL) ao armazenar dados binários em escala.

Base64 vs codificação Hex: uma comparação

PropriedadeBase64Hex (Base16)
Conjunto de caracteresA–Z, a–z, 0–9, +, / (64 caracteres)0–9, a–f (16 caracteres)
Acréscimo de tamanho~33% maior~100% maior (2 caracteres por byte)
Legibilidade humanaBaixa — não reconhecívelModerada — legível no nível dos bytes
Casos de uso comunsAnexos de e-mail, JWT, data URIs, payloads de APIHashes criptográficos, checksums, códigos de cor, endereços MAC
Seguro para URLs?Apenas com a variante Base64URLSim — todos os caracteres são seguros para URLs
Bits por caractere6 bits4 bits

Use o Base64 quando precisar de uma codificação compacta de binário para texto e a amplitude do conjunto de caracteres não criar problemas. Use hex quando a inspeção humana de valores individuais de byte importar — digests de hash, checksums e saídas criptográficas são tradicionalmente exibidos em hex precisamente porque cada caractere hex mapeia diretamente para 4 bits, tornando os limites entre bytes trivialmente visíveis.

Codificando e decodificando Base64 em código

A maioria das linguagens fornece suporte embutido a Base64. Aqui estão one-liners rápidos para ambientes comuns:

// JavaScript (browser or Node.js)
btoa("Hello, World!")         // → "SGVsbG8sIFdvcmxkIQ=="
atob("SGVsbG8sIFdvcmxkIQ==") // → "Hello, World!"

# Python
import base64
base64.b64encode(b"Hello, World!")         # → b'SGVsbG8sIFdvcmxkIQ=='
base64.b64decode(b"SGVsbG8sIFdvcmxkIQ==") # → b'Hello, World!'

# Bash
echo -n "Hello, World!" | base64
echo "SGVsbG8sIFdvcmxkIQ==" | base64 --decode

Para uma codificação ou decodificação rápida e pontual sem escrever nenhum código, a ferramenta Base64 do BrowseryTools é a opção mais rápida — cole sua string, escolha codificar ou decodificar e o resultado aparece instantaneamente. Nada é enviado a um servidor.

Garantia de privacidade: O codificador e decodificador Base64 do BrowseryTools processa tudo localmente no seu navegador usando JavaScript. Se você estiver codificando dados sensíveis — chaves de API, secrets, configurações privadas — eles nunca tocam um servidor. Seus dados permanecem no seu dispositivo.

Codifique e decodifique Base64 instantaneamente

Seja decodificando um secret do Kubernetes, inspecionando um payload de JWT, criando uma data URI para uma imagem embutida ou apenas curioso sobre o que uma string Base64 contém — o Codificador/Decodificador Base64 do BrowseryTools resolve isso em um único clique. Cole sua entrada, obtenha sua saída. Sem anúncios, sem cadastro, sem que dados saiam do seu dispositivo.

Codificador / Decodificador Base64 gratuito — roda 100% no seu navegador

Abrir ferramenta Base64 →

🛠️

Try the Tools — 100% Free, No Sign-Up

Everything runs in your browser. No uploads. No accounts. No ads.

Explore All Tools →