RFC 4648 & RFC 3986

Codificação Base64 e URL Encoding (RFC 4648 & RFC 3986)

Como converter fluxos binários para representações textuais seguras na Web sem perder acentuação ou dados especiais.

O que é o Base64 e Como Ele Funciona?

O Base64 é um método de codificação que divide sequências binárias de 8 bits em blocos de 6 bits. Como 26 = 64, cada bloco é mapeado para um conjunto de 64 caracteres imprimíveis da tabela ASCII (A-Z, a-z, 0-9, + e /, com = como preenchimento).

Atenção: Base64 não é criptografia! Trata-se de uma codificação de transporte, usada para enviar anexos em e-mails (MIME), tokens JWT e embutir imagens em CSS ou HTML sem requisições adicionais.

URL Encoding (Percent-Encoding)

Certos caracteres em URLs têm significados reservados pelo protocolo HTTP (como ?, &, =, / e espaços).

O URL Encoding converte esses caracteres em seu código hexadecimal precedido de % (por exemplo, um espaço vira %20 ou +). Essa conversão garante que parâmetros de busca (query strings) cheguem intactos ao servidor backend.

Comparativo: Base64 Padrão vs Base64URL vs URL-Encoding

PadrãoRFC OficialCaracteres CaracterísticosAplicação Principal
Base64 PadrãoRFC 4648 §4Usa +, / e padding =E-mails MIME, XML, certificados PEM e imagens embutidas.
Base64URLRFC 4648 §5Substitui + por - e / por _ (sem =)JSON Web Tokens (JWT), OAuth2 tokens e parâmetros REST em URLs.
Percent-EncodingRFC 3986Prefixo % seguido por 2 dígitos hexadecimaisQuery strings de formulários HTTP, parâmetros GET e URLs amigáveis.

Perguntas Frequentes sobre Base64 (FAQ)

Por que o Base64 aumenta o tamanho original do arquivo em ~33%?

Como cada grupo de 3 bytes (24 bits) é redividido em 4 caracteres de 6 bits na saída, são necessários 4 bytes para representar o que antes ocupava 3. Isso gera um overhead matemático fixo de 33% no tamanho da carga de dados.

O que significam os sinais de igual (=) no final de uma string Base64?

Os caracteres = atuam como caracteres de preenchimento (padding) quando a quantidade total de bytes de entrada não é múltipla exata de 3, garantindo que o comprimento total seja sempre divisível por 4.