Conversor base64: codifique e decodifique texto UTF-8

Entrada

Sobre o conversor base64

Base64 representa dados binarios usando 64 caracteres ASCII imprimiveis (A-Z, a-z, 0-9, mais "+" e "/"). E usado quando o transporte exige texto puro: e-mail, JSON Web Token, data URI em CSS, basic authentication em HTTP.

Cada 3 bytes de entrada viram 4 caracteres de saida, ampliando o tamanho em cerca de 33 porcento. Toda conversao acontece no proprio navegador via TextEncoder e TextDecoder nativos.

Info

Resumo rapido: base64 nao e criptografia. E apenas um esquema de codificacao para transportar binario em canal que aceita so texto. Qualquer pessoa decodifica em segundos. Nao use base64 para esconder senha ou token sensivel.

Conversor base64: para que serve e quando voce realmente precisa

Base64 e uma das codificacoes mais antigas e mais incompreendidas da internet. Aparece em e-mail, em token de autenticacao, em imagem embutida em CSS, em chave PEM de certificado. Muita gente acha que e criptografia: nao e. Base64 apenas representa qualquer sequencia de bytes usando 64 caracteres seguros para texto.

O motivo dessa codificacao existir e historico. Protocolos antigos como SMTP foram projetados para texto ASCII de 7 bits. Anexar arquivo binario direto quebrava o transporte. Base64 resolve isso transformando os bytes em caracteres seguros, ao custo de ampliar o tamanho em cerca de 33 porcento.

Onde base64 aparece no dia a dia

Tokens JWT sao tres pedacos separados por ponto, cada pedaco em base64URL. Voce pode colar o token nesta ferramenta (com pequeno ajuste manual de "-" e "_") e ler o conteudo do payload, que costuma trazer claims como user_id, exp e iat.

Imagens embutidas em CSS usam data URI: background: url(data:image/png;base64,iVBORw0KGgo...). Util para icone pequeno que nao vale uma requisicao HTTP separada.

HTTP Basic Authentication envia usuario e senha como Authorization: Basic dXNlcjpzZW5oYQ==. Esse "dXNlcjpzZW5oYQ==" e simplesmente "user:senha" em base64. Por isso Basic Auth so e seguro sobre HTTPS.

Certificados PEM envolvem base64 entre as linhas -----BEGIN CERTIFICATE----- e -----END CERTIFICATE-----. O conteudo interno e um blob binario X.509 codificado.

Variantes do base64

Diferencas entre as variantes mais comuns
VarianteCaracteres extrasPaddingOnde se usa
Base64 padrao (RFC 4648)+ e /Sim (=)E-mail, MIME, PEM
Base64URL- e _OpcionalJWT, URL params
Base64 MIME+ e /SimQuebra em linhas de 76 caracteres

Acentuacao e UTF-8

O btoa() nativo do JavaScript quebra com caractere acima de ASCII (qualquer letra com acento). Por isso, codificar "configuração" direto com btoa('configuração') gera erro. A solucao e converter para UTF-8 antes: primeiro o texto vira sequencia de bytes UTF-8, depois esses bytes viram base64.

Esta ferramenta ja faz isso automaticamente via TextEncoder. Voce pode digitar acento, emoji e caractere chines sem se preocupar com o passo intermediario.

Atencao

Base64 nao esconde nada

Codificar uma senha em base64 nao a torna segura. O algoritmo e publico e reversivel. Para esconder de verdade, use criptografia simetrica ou hash com salt, dependendo do caso.

Como funciona a matematica do base64

O esquema usa 64 caracteres seguros: as 26 letras maiusculas, as 26 minusculas, os 10 digitos, mais "+" e "/". Total: 64 simbolos. Por que 64? Porque 2^6 = 64, ou seja, cada caractere representa exatamente 6 bits. A conta fundamental do base64 e converter blocos de 24 bits da entrada (3 bytes) em 4 simbolos de 6 bits cada na saida.

Quando a entrada nao e multipla de 3 bytes, o esquema completa com bits zero e marca o resto com o caractere "=" (padding). Por isso, voce ve "==" no final de algumas strings base64 (2 bytes de entrada faltando completar o bloco) ou "=" sozinho (1 byte faltando). Esse padding facilita reconstruir o tamanho original durante a decodificacao.

O overhead de 33 porcento sai dessa conta: 3 bytes de entrada produzem 4 bytes de saida. (4 dividido por 3 menos 1 = 33,3 porcento). Mais quebras de linha, mais padding, e o overhead real fica entre 33 e 37 porcento dependendo do uso.

Casos de uso reais no dia a dia

  • E-mail (MIME): anexo de PDF, foto, planilha viaja em base64 dentro do corpo do e-mail. SMTP nasceu para texto 7 bits, e base64 e a ponte para binario.
  • Data URIs: data:image/png;base64,iVBORw0KGgo... embute uma imagem inteira em CSS ou HTML, sem requisicao HTTP adicional. Util para icone pequeno ou logo critico para LCP.
  • JWT tokens: tres pedacos separados por ponto, cada pedaco em base64URL. O payload entre os dois pontos contem claims legiveis (decodificadas, nao descriptografadas).
  • HTTP Basic Auth: Authorization: Basic dXNlcjpzZW5oYQ== envia usuario e senha como base64 simples. Por isso Basic Auth so e seguro sobre HTTPS, pois TCP em texto puro expoe o credencial diretamente.
  • Certificados PEM: o conteudo entre -----BEGIN CERTIFICATE----- e -----END CERTIFICATE----- e binario X.509 codificado em base64.
  • DNS TXT records: chaves DKIM, registros SPF longos e tokens de verificacao costumam carregar base64 dentro do conteudo do TXT, ja que DNS exige texto imprimivel.

Quando NAO usar base64

Base64 nao oferece confidencialidade. Qualquer pessoa com acesso a string consegue decodificar em milissegundos com ferramenta como esta. Para confidencialidade real, use:

  • TLS para protecao em transito (HTTPS, SMTPS, IMAPS).
  • AES-256-GCM ou ChaCha20-Poly1305 para cifra simetrica de dado em repouso.
  • libsodium ou age para envelopes de criptografia modernos com chaves publicas.

Base64 dentro desses contextos serve apenas para empacotar o ciphertext em texto seguro para o canal. A protecao vem da cifra, nao da codificacao.

Variante URL-safe (RFC 4648 secao 5)

O base64 padrao usa "+" e "/" como caracteres 62 e 63. Esses caracteres tem significado especial em URLs ("+" vira espaco, "/" separa segmentos de caminho) e em campos de formulario. Para uso seguro em URL, a RFC 4648 define a variante base64URL que substitui:

  • + por - (hifen)
  • / por _ (underline)
  • = de padding por nada (omissao) ou mantido conforme implementacao

JWT, OAuth state, parametros de query e tokens de reset de senha sempre usam base64URL. A ferramenta acima aceita as duas variantes automaticamente na decodificacao (converte "-" e "_" de volta para "+" e "/" antes de processar).

Exemplo de codificacao da expressao "saber meu IP"

Codificando "saber meu IP" (12 caracteres ASCII, 12 bytes em UTF-8) em base64 padrao, o resultado e c2FiZXIgbWV1IElQ. Sao 16 caracteres de saida para 12 de entrada, exatamente o overhead esperado de 33 porcento. Decodificando esse mesmo "c2FiZXIgbWV1IElQ", voce recupera "saber meu IP" sem perda nenhuma. Base64 e operacao perfeitamente reversivel.

Para entender como esses formatos sao especificados oficialmente, leia o que sao RFCs e padroes de internet. A propria definicao do base64 esta na RFC 4648. Quando voce ve chave DKIM ou registro SPF em TXT de DNS, frequentemente esta lendo base64 (saiba mais em o que e DNS).

Base64: Perguntas Frequentes

Base64 representa dados binários usando apenas 64 caracteres ASCII, útil para enviar conteúdo binário por canais que só aceitam texto.

Não. Base64 é apenas codificação reversível sem chave. Qualquer pessoa com o resultado pode decodificar e ler o conteúdo original.

Em emails MIME, imagens embutidas em HTML via data URI, tokens JWT, certificados PEM e payloads de API que carregam binário em JSON.

Sim. O conversor trata o texto em UTF-8 antes de codificar, garantindo que ç, ã, é e demais caracteres voltem corretos na decodificação.

Os caracteres = são preenchimento (padding) para deixar a saída em blocos de 4. Eles fazem parte do padrão e devem ser mantidos.

Base64URL substitui + e / por - e _, evitando conflito em URLs. JWT e tokens web costumam usar essa variante.