Glossary
Base64
Codificação de binário para texto
By Buğra SözeriPublished Updated
Base64 é um esquema de codificação que representa dados binários arbitrários usando 64 caracteres ASCII: as letras maiúsculas A-Z, as letras minúsculas a-z, os dígitos 0-9 e os símbolos + e /. Preenchido com o caractere = para um múltiplo de 4 bytes. Definido na RFC 4648.
Três bytes de entrada são codificados em quatro caracteres Base64, portanto a forma codificada é aproximadamente 33% maior que a fonte. A codificação e a decodificação são determinísticas e exatas — não há perda de qualidade, apenas inflação de tamanho.
Os principais casos de uso:
- Incorporação de dados binários em protocolos somente texto. E-mail (anexos MIME), JSON (onde campos binários não são permitidos nativamente), URIs de dados em HTML/CSS.
- JWT (JSON Web Token). Os payloads JWT são codificados em Base64 (especificamente Base64url, veja abaixo) para caber com segurança em cabeçalhos HTTP e URLs.
- Armazenamento de binários em bancos de dados ou arquivos de configuração quando o tipo de coluna nativo seria inconveniente (ex.: colunas BLOB do SQLite são adequadas, mas requerem tratamento no nível do driver; uma coluna TEXT contendo Base64 é mais portável).
Base64url é uma variante definida no mesmo RFC que substitui + por - e / por _. Essas duas substituições tornam os dados codificados seguros para URL — nem - nem _ precisam de codificação percentual em uma URL. JWT e APIs web modernas usam Base64url em todo lugar.
Codifique ou decodifique no seu navegador com nossa ferramenta Base64, que lida corretamente com texto UTF-8 (os primitivos JavaScript btoa / atob não fazem isso).
Exemplo prático
Codifique a string ASCII de três bytes “Man”. Os bytes são 0x4D 0x61 0x6E, ou em binário 01001101 01100001 01101110. Concatene os 24 bits e divida em quatro grupos de 6 bits: 010011 010110 000101 101110 = 19, 22, 5, 46. O alfabeto Base64 mapeia esses índices para T, W, F, u — produzindo “TWFu”. Não é necessário preenchimento porque o comprimento da entrada (3 bytes) já é múltiplo de 3. Agora codifique “Ma” (2 bytes): os bits são 01001101 01100001, preenchidos com dois bits zero para obter 18 bits, divididos em três grupos de 6 bits 010011 010110 000100 = 19, 22, 4 = T, W, E. Adicione um = para marcar o terceiro caractere ausente do grupo: “TWE=”. A decodificação inverte o processo e descarta o preenchimento. A inflação de tamanho de 33% é exatamente a razão 4/3 — cada 3 bytes de entrada se tornam 4 bytes de saída.
Quando e por que isso importa
Base64 importa sempre que dados binários precisam trafegar por um canal que distorce bytes não imprimíveis — e-mail SMTP (projetado para texto de 7 bits), strings de consulta de URL, valores JSON, seções CDATA de XML, variáveis de ambiente, arquivos de configuração YAML e transferências de área de transferência entre sistemas com codificações incompatíveis. O erro clássico é usar Base64 onde não é necessário: um blob binário armazenado em uma coluna Postgres bytea não precisa de codificação porque o protocolo lida com binário nativamente, mas o mesmo blob inserido via literal de string SQL precisa. O segundo erro clássico é o oposto — incorporar um JPEG como URI de dados em CSS usando Base64 para evitar uma requisição HTTP, depois descobrir que o arquivo inflado é maior do que a economia de rede em conexões multiplexadas HTTP/2. As políticas modernas de incorporação de imagens geralmente estabelecem o limite em torno de 4-8 KB. Referência: RFC 4648 — Codificações de dados Base16, Base32 e Base64.
Preenchimento e os caracteres "=" no final: como Base64 empacota cada 3 bytes de entrada em 4 caracteres de saída, entradas cujo comprimento não é múltiplo de 3 produzem 1 ou 2 caracteres de preenchimento no final. YQ==decodifica para um único byte ("a"); YWI=decodifica para dois bytes ("ab"); YWJjdecodifica para três bytes ("abc") sem preenchimento. Muitos analisadores Base64 aceitam entrada sem preenchimento, mesmo que a conformidade estrita com RFC exija — Base64url em contextos JWT omite deliberadamente o preenchimento. Sempre verifique se o par codificador/decodificador concorda sobre o preenchimento, especialmente ao fazer ponte entre implementações estritas e permissivas.
Por que Base64 não é criptografia: Base64 é um mapeamento determinístico que qualquer pessoa pode reverter sem chave. Colar uma string Base64 em um decodificador online revela o texto simples imediatamente. É uma codificação (uma mudança de representação), não uma criptografia (uma transformação de confidencialidade). Armazenar senhas, chaves de API ou PII como Base64 em qualquer arquivo que possa ser lido por um invasor é funcionalmente equivalente a armazená-los em texto simples. Para confidencialidade, use criptografia adequada (AES-GCM, ChaCha20-Poly1305) com uma estratégia real de gerenciamento de chaves antes de qualquer encapsulamento Base64. Referência: RFC 4648 — Codificações de dados Base16, Base32 e Base64.
Experimente a calculadora
Codifique ou decodifique qualquer string ou arquivo para Base64, incluindo a variante segura para URL.
Abrir a ferramenta Base64 →Frequently asked questions
- O que é Base64?
- Base64 é um esquema de codificação que converte dados binários arbitrários em uma string de 64 caracteres ASCII (A–Z, a–z, 0–9, +, /). Aumenta o tamanho dos dados em 33%, mas torna os dados binários seguros para incorporar em contextos somente texto, como corpos de e-mail, JSON e cabeçalhos HTTP.
- Como o Base64 é usado na prática?
- Tokens JWT são três segmentos codificados em Base64url unidos por pontos. Incorporar uma imagem diretamente em um arquivo CSS como URL de dados usa Base64. SMTP envia anexos como blocos Base64 porque o protocolo historicamente tratava apenas ASCII de 7 bits.
- Qual é a diferença entre Base64 e Base64url?
- Base64url substitui o + padrão por - e / por _ para tornar a saída segura em URLs e nomes de arquivo sem codificação percentual. Tokens JWT e OAuth usam Base64url; anexos de e-mail usam Base64 padrão.
- O Base64 criptografa dados?
- Não — Base64 é uma codificação, não criptografia. Qualquer decodificador pode recuperar imediatamente os bytes originais. É usado para tornar dados binários seguros para texto, não para ocultá-los ou protegê-los.
Related
Published May 14, 2026 · Last reviewed May 31, 2026