Base64 explicado: por que aumenta os dados e como decodificar
Base64 escreve dados binários como texto simples, usando 64 caracteres: de A a Z, de a a z, de 0 a 9, além de + e /. Cada três bytes viram quatro caracteres, então o texto fica cerca de um terço mais longo que os dados que carrega. As pessoas usam o Base64 quando um formato aceita apenas texto, como uma data URL em uma página web, um campo JSON ou um anexo de e-mail.
Por que formatos de texto precisam dele
Muitos formatos foram criados apenas para texto. Um corpo de e-mail, um arquivo JSON e um arquivo CSS podem conter letras e símbolos com segurança, mas uma imagem bruta ou um arquivo ZIP contém valores de bytes que alguns sistemas alterariam, cortariam ou leriam como códigos de controle. O Base64 usa apenas caracteres que todo sistema de texto transmite sem alteração, então os dados chegam íntegros. Ele é definido na RFC 4648.
O Base64 é uma codificação, não um segredo. Qualquer pessoa pode decodificá-lo sem chave, por isso nunca deve ser usado para esconder uma senha ou dados pessoais.
Como três bytes viram quatro caracteres
Pegue a palavra Man, que tem três bytes: 77, 97 e 110 em decimal. Juntos, esses três bytes formam 24 bits. Divida os 24 bits em quatro grupos de seis bits, e cada grupo é um número de 0 a 63, que aponta para um caractere do alfabeto. Man vira TWFu.
Seis bits só podem representar 64 valores, então quatro caracteres carregam três bytes. A saída fica, portanto, cerca de um terço maior que a entrada, antes de qualquer quebra de linha ser adicionada.
Quando os dados não se dividem em grupos de três bytes, o codificador completa o final com sinais de =. Ma, que tem dois bytes, vira TWE=, e M, que tem um byte, vira TQ==. O preenchimento informa ao decodificador quantos bytes o último grupo contém.
O texto precisa ser codificado em UTF-8 primeiro
O Base64 trabalha com bytes, e texto é feito de caracteres. Um caractere como é ou ✓ é armazenado como mais de um byte em UTF-8, a codificação usada na web. A função btoa() do navegador recebe uma string e trata cada caractere como um byte, então falha com caracteres acima do latim básico. Chamá-la com uma marca de verificação gera um InvalidCharacterError.
A correção é transformar o texto em bytes UTF-8 primeiro e depois codificar esses bytes. A frase héllo ✓ tem 10 bytes em UTF-8, e seu Base64 é aMOpbGxvIOKckw==. A ferramenta Base64 faz essa etapa por você. Ao decodificar, ela lê os bytes de volta como UTF-8. Se os bytes não forem um texto UTF-8 válido, a ferramenta os trata como um arquivo e oferece um download.
Base64 seguro para URL
O alfabeto padrão contém + e /. Em uma URL, + pode representar um espaço, e / separa as partes de um caminho, então uma string Base64 pode quebrar um link. A forma segura para URL (RFC 4648, seção 5) usa - e _ no lugar, e normalmente omite o preenchimento =. Use-a quando a string for para uma URL, um nome de arquivo ou um token. O decodificador aceita as duas formas, com ou sem preenchimento.
Se o Base64 veio de um link, decodifique a URL primeiro. Um valor que foi codificado por porcentagem em um link precisa ser decodificado antes que seu Base64 possa ser lido. O guia de codificação por porcentagem explica as regras para links.
Um token de login é o caso mais comum: um JSON Web Token são três partes em Base64url unidas por pontos, um cabeçalho, os dados e uma assinatura. O decodificador JWT separa uma dessas partes e mostra o cabeçalho e os dados como JSON legível.
Data URLs e imagens
Uma data URL coloca o arquivo dentro do próprio link. Sua forma é data:, depois o tipo de mídia, depois ;base64, e então uma vírgula e os dados. Uma imagem pequena vira data:image/png;base64, seguido pelos bytes codificados. Páginas web e folhas de estilo aceitam essa forma, o que evita uma requisição para um ícone pequeno.
O custo é o tamanho. Os dados ficam cerca de um terço maiores e viajam dentro da página ou da folha de estilo, em vez de como um arquivo separado que o navegador pode armazenar em cache. Use data URLs para imagens pequenas, não para fotos grandes. Compacte a foto antes de codificar se ela for grande.
Ao decodificar Base64 na ferramenta, ela observa os primeiros bytes dos dados. Arquivos PNG, JPEG, GIF e WebP começam cada um com uma assinatura conhecida, então a ferramenta mostra uma prévia e oferece um download. Uma data URL com tipo de imagem também é exibida como imagem.
Como fazer no fixmint
- Escolha Codificar ou Decodificar acima de Texto ou Base64, depois cole seu texto ou Base64.
- Marque Alfabeto seguro para URL, sem preenchimento = para tokens, nomes de arquivo e links. O decodificador aceita as duas formas de qualquer maneira.
- Para criar uma data URL a partir de um arquivo, solte o arquivo na área para soltar e marque Para arquivos: gerar uma URL data:.
- Copie o resultado. Se os bytes decodificados forem um arquivo e não texto, use o download que a ferramenta oferece.
Erros comuns na decodificação
- Um caractere não é permitido. A entrada contém um caractere fora dos 64, como aspas de uma frase copiada. Verifique de onde o texto veio. Um espaço de largura zero em texto copiado causa o mesmo erro, então remova os caracteres ocultos e tente de novo. O guia de caracteres ocultos explica de onde eles vêm.
- O tamanho está errado. Falta ou sobra um caractere, o que geralmente significa que a cópia foi cortada.
- Quebras de linha e espaços. E-mail (MIME) quebra o Base64 a cada 76 caracteres. O decodificador remove espaços e quebras de linha, então você pode colar o texto quebrado como está.
- Preenchimento ausente. Alguns sistemas omitem os sinais =. O decodificador os adiciona de volta.
Casos extremos
- O resultado decodificado parece sem sentido. Pode ser um arquivo, e não texto. Um arquivo ZIP, um PDF ou um programa decodificam para bytes que não são lidos como texto. A ferramenta oferece esses casos como download.
- Entradas muito grandes. O arquivo inteiro fica na memória do navegador enquanto é codificado ou decodificado, então um arquivo muito grande pode ser lento e, em um celular, pode falhar.
Respostas rápidas
O Base64 é a mesma coisa que criptografia?
Não. É uma codificação reversível sem chave, então qualquer pessoa pode decodificá-lo.
Por que meu Base64 é maior que o arquivo?
Cada conjunto de três bytes vira quatro caracteres, então o texto fica cerca de um terço maior.
Por que uma string Base64 copiada não decodifica?
Geralmente um caractere foi perdido ou acrescentado na cópia, como uma quebra de linha no lugar errado ou um caractere final ausente. Copie de novo a partir da origem.
Traduzido do Original em inglês com auxílio de IA.
Comentários
Ainda não há comentários. Seja o primeiro.


