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.
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 uIsso 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
| Variante | Caracteres 63 e 64 | Preenchimento | Onde você encontra |
|---|---|---|---|
| Padrão | + / | Sim | Data URIs, autenticação HTTP Basic, chaves PEM |
| URL-safe (Base64URL) | - _ | Geralmente nenhum | JSON Web Tokens, links, nomes de arquivo |
| MIME | + / | Sim | Anexos 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.