Conversor Base64

Digite um texto para obter o Base64 dele, ou cole Base64 para ver o que tem dentro. Você não precisa dizer em que sentido vai, e se o resultado for uma imagem ou um arquivo, mostramos como tal.

Direção
ou solte um nesta caixa. 10 MB no máximo.
Ao codificar, escrever

O resultado aparece enquanto você digita. Textos e arquivos são convertidos dentro desta página e não são enviados para nós. Base64 é uma forma de escrever bytes como letras, não uma criptografia: qualquer pessoa pode decodificá-lo.

Enviar bytes por canais feitos para texto

O e-mail foi projetado para letras simples do inglês. Os primeiros endereços web também, e o JSON e o XML de hoje também. Uma foto, um PDF ou uma chave criptográfica são feitos de bytes arbitrários, e para um canal desses, muitos desses bytes significam algo especial ou nada. Mande-os do jeito que estão e eles chegam danificados.

O Base64 é a solução. Ele reescreve qualquer sequência de bytes com 64 caracteres inofensivos: A a Z, a a z, 0 a 9, + e /. Todo anexo de e-mail viaja assim. Também as imagens embutidas numa folha de estilo e os tokens que mantêm você conectado.

Três bytes viram quatro caracteres

Um byte tem 8 bits, e um entre 64 caracteres pode representar 6 bits. Então o codificador pega 3 bytes (24 bits) por vez e os corta em quatro grupos de 6 bits. Cada grupo escolhe um caractere do alfabeto.

text     M        a        n
bytes    01001101 01100001 01101110
6 bits   010011 010110 000101 101110
Base64   T      W      F      u

Isso tem dois efeitos colaterais. A saída é um terço maior que a entrada, cerca de 33 %, um pouco mais com quebras de linha. E quando a entrada não é divisível por 3, o último grupo é completado com um ou dois sinais =, o chamado preenchimento (padding). Ma dá TWE= e M dá TQ==. O preenchimento não carrega dados, por isso alguns sistemas o omitem.

Padrão, URL-safe, MIME

VarianteCaracteres 63 e 64PreenchimentoOnde você encontra
Padrão+ /SimData URIs, autenticação HTTP Basic, chaves PEM
URL-safe (Base64URL)- _Geralmente nenhumJSON Web Tokens, links, nomes de arquivo
MIME+ /SimAnexos de e-mail, com uma quebra de linha a cada 76 caracteres

Na decodificação, esta ferramenta aceita todas de uma vez: qualquer um dos alfabetos, com ou sem preenchimento, espaços e quebras de linha em qualquer lugar. Depois ela diz qual variante encontrou. Caracteres fora do alfabeto são listados com a posição e ignorados. Um comprimento que deixa um caractere sobrando é sinalizado. Um único caractere guarda 6 bits e não forma um byte, então algo foi cortado.

Texto é antes de tudo bytes

O Base64 codifica bytes, não letras, então o texto precisa virar bytes antes de qualquer coisa. Esta ferramenta usa UTF-8, a codificação de quase toda a web. Em UTF-8, uma letra latina sem acento ocupa 1 byte, é ocupa 2, a maioria dos caracteres chineses ou japoneses ocupa 3 e um emoji ocupa 4. Por isso é sozinho vira w6k=.

O bug clássico é pular essa etapa. Em JavaScript, btoa("é") devolve 6Q==, o byte Latin-1, e btoa("👍") gera um erro. Na volta, atob() entrega é onde antes havia é. A correção é TextEncoder antes de codificar e TextDecoder depois de decodificar.

Quando os bytes decodificados não são UTF-8 válido, a ferramenta não joga lixo na sua tela. Ela olha os primeiros bytes, que identificam a maioria dos formatos de arquivo (PNG, JPEG, GIF, WebP, PDF, ZIP e gzip são reconhecidos), mostra uma prévia da imagem, oferece o resultado como arquivo e exibe o começo em hexadecimal.

Ele não esconde nada

O Base64 não tem chave nem segredo. Decodificar é a mesma receita lida de trás para frente, e toda linguagem de programação já vem com ela. Uma senha “protegida” com Base64 é uma senha em texto claro com passos extras. Veja o cabeçalho HTTP Authorization: Basic dXNlcjpwYXNz, que qualquer pessoa transforma de volta em user:pass.

Uma URI data: como data:image/png;base64,iVBORw0… coloca um arquivo inteiro dentro de um endereço. Para um ícone minúsculo, isso economiza uma requisição. Para qualquer coisa maior, você paga os 33 % extras e o arquivo não pode mais ser armazenado em cache separadamente.

Perguntas frequentes

Base64 é criptografia?

Não. É uma codificação, uma forma pública e reversível de escrever bytes com 64 caracteres imprimíveis. Não há chave, então qualquer pessoa pode decodificar. Use para transportar dados, nunca para protegê-los.

Por que o Base64 termina com um ou dois sinais de igual?

O codificador trabalha com grupos de 3 bytes. Quando o último grupo tem só 1 ou 2 bytes, a saída é completada com == ou = para que o comprimento continue múltiplo de 4. Os sinais não carregam dados, e o Base64 URL-safe muitas vezes os omite.

Qual a diferença entre Base64 e Base64URL?

Dois caracteres. O Base64 padrão usa + e /, que têm significado em endereços web. O Base64URL troca os dois por - e _ e geralmente dispensa o preenchimento =. Os dados dentro são os mesmos.

Por que acentos ou emoji saem errados depois da decodificação?

O decodificador leu os bytes com a codificação de texto errada, geralmente Latin-1 quando o texto era UTF-8. É aí que aparece é no lugar de é. Decodifique os bytes como UTF-8 (em JavaScript, com TextDecoder) e o texto volta intacto.

Quanto maior fica um arquivo em Base64?

Cerca de 33 %, já que cada 3 bytes viram 4 caracteres. Uma imagem de 300 KB vira uns 400 KB de texto, mais cerca de 2,6 % quando as linhas são quebradas a cada 76 caracteres para e-mail.

Como transformo uma imagem em data URI?

Solte a imagem na ferramenta. Você recebe o Base64 e um endereço data:image/…;base64,… completo para colar num atributo src ou num url() de CSS. Reserve isso para imagens pequenas, de poucos kilobytes.