Como o Base64 funciona por dentro
O Base64 pega os bytes originais e os reagrupa em blocos de 6 bits. Como 6 bits produzem 64 combinações possíveis, cada bloco vira um caractere de um alfabeto fixo: A-Z, a-z, 0-9, + e /. Na prática, cada 3 bytes de entrada viram 4 caracteres de saída — daí o crescimento de aproximadamente 33% no tamanho.
| Texto | Bytes (UTF-8) | Base64 |
|---|---|---|
a | 1 | YQ== |
ab | 2 | YWI= |
abc | 3 | YWJj |
Olá | 4 (o á ocupa 2) | T2zDoQ== |
ação | 6 | YcOnw6Nv |
São Paulo | 10 | U8OjbyBQYXVsbw== |
Base64, Base64URL e hexadecimal
| Codificação | Alfabeto | Aumento de tamanho | Uso típico |
|---|---|---|---|
| Base64 padrão | A-Z a-z 0-9 + / = | +33% | E-mail, data URI, PEM, campos JSON |
| Base64URL | A-Z a-z 0-9 - _ | +33% | JWT e valores dentro de URLs, onde + e / atrapalham |
| Hexadecimal | 0-9 a-f | +100% | Hashes, cores, dumps de memória — mais legível, mas o dobro do tamanho |
| URL encode | texto + %XX | variável | Parâmetros de URL e formulários |
URL encode: quando e por quê
Use sempre que um valor com espaço, acento ou símbolo entra numa URL: busca interna, UTMs com nome de campanha composto, links de WhatsApp com mensagem pronta. O que acontece é a substituição do caractere pelo seu byte em hexadecimal, precedido de %.
| Caractere | Codificado | Por que precisa |
|---|---|---|
| espaço | %20 | Encerra a URL em muitos parsers e clientes de e-mail |
& | %26 | Separa parâmetros — sem escape, o valor é cortado ali |
# | %23 | Inicia o fragmento; tudo depois dele nem chega ao servidor |
+ | %2B | Em formulários, + significa espaço — comum quebrar telefone +55 |
ç | %C3%A7 | Dois bytes em UTF-8, logo dois grupos percentuais |
/ | %2F | Separador de caminho; sem escape vira uma rota diferente |
Perguntas frequentes
O que é Base64?
É uma forma de representar qualquer dado binário usando apenas 64 caracteres seguros para texto (A-Z, a-z, 0-9, + e /). Usado em anexos de e-mail, imagens embutidas em HTML/CSS e tokens de API.
Base64 é criptografia?
Não! Base64 é só codificação — qualquer pessoa decodifica em um clique. Nunca use Base64 para 'esconder' senhas ou dados sensíveis.
Por que meu Base64 com acentos vira caracteres estranhos?
Ferramentas antigas usam btoa direto, que quebra com caracteres fora do ASCII. Esta página codifica em UTF-8 primeiro, então ção, á e emoji funcionam corretamente.
Para que serve o sinal de igual no final do Base64?
É o padding. O Base64 trabalha em blocos de 3 bytes que viram 4 caracteres; quando o último bloco fica incompleto, entram um ou dois sinais de igual para fechar o grupo. Por isso todo Base64 padrão tem tamanho múltiplo de 4.
Qual a diferença entre Base64 e Base64URL?
O Base64URL troca os caracteres + e / por - e _, e normalmente remove o padding, porque + e / têm significado especial dentro de uma URL. É a variante usada em tokens JWT e em parâmetros de link.
Base64 aumenta o tamanho do arquivo?
Sim, em cerca de 33%: cada 3 bytes viram 4 caracteres. Uma imagem de 300 KB embutida como data URI ocupa aproximadamente 400 KB no HTML ou CSS. Por isso só vale a pena embutir arquivos pequenos, abaixo de uns 5 KB.
Posso decodificar um token JWT aqui?
Sim, mas parte por parte: separe o token nos trechos delimitados por ponto e cole cada um. O primeiro é o cabeçalho e o segundo é o payload, ambos em Base64URL. O terceiro é a assinatura binária e não vira texto legível.
Quando devo usar URL encode em vez de Base64?
Use URL encode quando o valor vai dentro de um endereço — parâmetros de busca, UTMs, links de WhatsApp com mensagem pronta. Use Base64 quando precisa transportar dados binários ou com quebras de linha por um canal que só aceita texto simples.