TextSorter

Arraste e solte uma imagem aqui

ou clique para procurar um arquivo (PNG, JPG, SVG, WebP, GIF)

Prévia da imagem carregada

Resultado em Base64

Como Converter uma Imagem para Base64 Online

Uma URI de dados em Base64 pega uma imagem que normalmente viveria no próprio arquivo e a dobra dentro de uma string de texto, pequena o suficiente para caber em um atributo HTML, uma declaração CSS ou um campo JSON. Em vez de o seu navegador fazer uma viagem separada até o servidor para buscar logo.png, a imagem viaja embutida dentro do próprio documento que precisa dela. Esse conversor monta essa string inteiramente no seu próprio dispositivo, então você sai de um arquivo de imagem para um código pronto para colar no tempo de um arrastar e soltar.

O fluxo é propositalmente curto. Solte um arquivo PNG, JPG, SVG, WebP ou GIF na área de soltar acima, ou clique nela para abrir o seletor de arquivos comum. Assim que o navegador termina de ler o arquivo, uma prévia aparece e o campo de resultado Base64 se preenche automaticamente, sem nenhum botão de "converter" para clicar e sem recarregar a página.

  1. Escolha sua imagem. Arraste um arquivo do seu desktop ou gerenciador de arquivos até a área de soltar, ou clique nela para procurar um. Qualquer coisa que seu navegador consiga exibir como imagem, ele consegue codificar.
  2. Deixe a decodificação automática rolar. A ferramenta lê os bytes puros do seu arquivo usando a API FileReader nativa do navegador e os codifica em uma string Base64 no instante em que o arquivo carrega.
  3. Escolha um formato de saída. Use o menu suspenso Formato de Saída para alternar entre uma string de URI de dados pura, uma declaração CSS background-image já pronta, ou uma tag HTML img completa.
  4. Copie ou baixe o resultado. Clique em Copiar Código para levar o texto exato para a área de transferência, ou em Baixar Texto se a string for longa e você preferir salvá-la como arquivo para usar depois.

Como todo o processo roda como JavaScript dentro da sua própria aba do navegador, não existe etapa de envio, não existe fila de espera em servidor, e o único limite é a memória do seu próprio computador.

Entendendo a Sintaxe da URI de Dados

Toda string Base64 gerada por essa ferramenta segue o mesmo padrão definido pelo esquema de URI de dados: data:[tipo-mime];base64,[dados-codificados]. O prefixo data: avisa o navegador que isso não é uma URL comum apontando para outro lugar, é o próprio conteúdo, chegando embutido. O tipo MIME logo depois, algo como image/png, image/jpeg, image/svg+xml ou image/webp, diz exatamente ao navegador como interpretar os bytes que vêm a seguir, para que ele renderize um PNG como PNG e um SVG como SVG em vez de tentar adivinhar por uma extensão de arquivo que nem existe mais.

A marca ;base64 indica a codificação usada no conteúdo, e tudo depois da vírgula é a imagem em si, traduzida do binário puro para o alfabeto de 64 caracteres formado por letras maiúsculas, minúsculas, números, mais e barra. Um favicon minúsculo de 16 por 16 pode gerar uma string de apenas algumas centenas de caracteres, enquanto uma fotografia detalhada pode se estender por centenas de milhares de caracteres, tudo em uma única linha ininterrupta.

ContextoSintaxe de Exemplo
Fundo CSSbackground-image: url(data:image/png;base64,iVBOR...);
Tag HTML img<img src="data:image/jpeg;base64,/9j/4AA...">
URI de dados SVG inlinedata:image/svg+xml;base64,PHN2ZyB4b...
Propriedade customizada CSS--icone-fechar: url(data:image/svg+xml;base64,...);

Essa ferramenta detecta o tipo MIME e faz a codificação automaticamente com base no arquivo que você solta, então você nunca precisa escrever esse prefixo à mão, mas reconhecer o padrão ajuda na hora de descobrir por que uma string colada no contexto errado se recusa a renderizar.

Os 33% de Sobrepeso: Por Que o Base64 Pesa Mais que o Arquivo Original

A codificação Base64 agrupa os dados binários originais em blocos de 3 bytes e mapeia cada bloco para 4 caracteres de texto imprimíveis. Essa proporção de 3 para 4 é fixada pela matemática da própria codificação, não pelo formato da imagem nem pelas configurações de compressão, e significa que toda string Base64 pesa aproximadamente 33% a mais do que o arquivo de onde ela veio, antes de qualquer compressão adicional como gzip ou Brotli que o servidor possa aplicar em cima.

Na prática, isso significa que um ícone de 60 KB chega perto de 80 KB depois de codificado, e uma foto de 300 KB passa dos 400 KB. Para um único ícone pequeno, essa diferença é invisível para o usuário. Repetido em uma página cheia de miniaturas embutidas, ou incluído em um arquivo CSS enviado a cada visitante em cada carregamento de página, esse sobrepeso se acumula até virar um documento genuinamente mais pesado do que servir essas mesmas imagens como arquivos separados.

Vale lembrar que essa expansão acontece em cima do arquivo, não no lugar dele. Converter um JPEG para Base64 não comprime ele mais, só muda como esses mesmos bytes já comprimidos são representados como texto, então qualquer otimização de imagem, como redimensionar uma foto ou passá-la para um formato como WebP, deve acontecer antes de codificar, nunca depois.

Quando Embutir uma Imagem Ajuda (e Quando Prejudica) a Performance

Toda imagem referenciada por <img src="..."> ou um url(...) de CSS normalmente dispara sua própria requisição HTTP. Em conexões HTTP/1.1 mais antigas, os navegadores só conseguiam abrir um punhado de conexões simultâneas por domínio, então uma página com dezenas de ícones pequenos sofria de verdade com esse peso extra de requisições, e embutir esses ícones como strings Base64 eliminava completamente essas viagens extras. Esse é o argumento original a favor de embutir imagens, e ele continua válido para gráficos pequenos e decorativos que aparecem uma vez só e raramente mudam.

Conexões modernas HTTP/2 e HTTP/3 multiplexam várias requisições em uma única conexão, o que enfraquece bastante o argumento original. Buscar dez arquivos externos pequenos por HTTP/2 já não é nem de longe tão caro quanto era há uma década, enquanto a penalidade de 33% do Base64 continua exatamente igual. Isso volta a inclinar a balança para arquivos linkados na maioria das imagens do dia a dia, reservando o embutimento para casos em que evitar até uma única requisição extra ainda importa, como gráficos principais acima da dobra que precisam aparecer no instante em que o HTML é processado, ou ferramentas de arquivo único que não podem depender de uma segunda requisição de rede.

Uma regra prática útil: embuta o que é realmente pequeno, ícones, indicadores de carregamento, logotipos minúsculos, geralmente abaixo de 5 a 10 KB, e linke o resto. Uma imagem grande embutida também atrasa o momento em que o navegador termina de processar o documento HTML ou CSS ao redor dela, já que ele precisa ler a string codificada inteira antes de seguir em frente, o que pode adiar o momento em que o resto da página se torna visível.

Usando Imagens Base64 em CSS

O destino mais comum de uma imagem Base64 é uma declaração background-image em CSS, que é exatamente o que o formato de saída CSS dessa ferramenta produz. Ao escolher esse formato, sua string codificada fica envolvida em background-image: url('data:image/png;base64,...');, pronta para colar direto em uma folha de estilos, um bloco <style> ou um atributo style inline.

Esse padrão aparece o tempo todo para pequenos detalhes visuais repetidos: uma textura de ruído sutil atrás de um cartão, um ícone personalizado substituindo o marcador padrão de uma lista, o estado marcado de um checkbox ou botão de rádio, ou um divisor decorativo em SVG entre seções. Como a imagem viaja junto com o próprio CSS, não sobra nada extra para o navegador buscar depois que a folha de estilos já carregou, o que importa para elementos que aparecem no instante em que a página renderiza, antes mesmo de qualquer recurso com carregamento adiado ter tido tempo de chegar.

O lado ruim é que um CSS cheio de strings Base64 longas fica bem mais difícil de ler e manter, e essa folha de estilos inflada precisa ser baixada e processada por completo antes de o navegador conseguir aplicar qualquer um dos estilos que vêm depois dela. Limitar as imagens Base64 no CSS a recursos realmente pequenos, e usar uma referência normal url('/imagens/foto.jpg') para qualquer coisa maior, mantém tanto a folha de estilos quanto a própria página rápidas.

Imagens Base64 em HTML e a Realidade dos Templates de E-mail

Escolher o formato de saída HTML envolve sua string codificada em uma tag pronta para usar, <img src="data:image/png;base64,..." />, que funciona exatamente como uma tag de imagem normal em qualquer lugar onde um navegador renderiza HTML, incluindo relatórios de página única, documentos exportados e ferramentas offline que precisam funcionar como um único arquivo autocontido, sem nenhum recurso externo.

E-mail é o único lugar onde esse padrão merece cautela de verdade. Gmail e Apple Mail geralmente renderizam sem problema imagens Base64 embutidas, mas as versões desktop do Outlook usam o motor de renderização do Word em vez de um motor de navegador moderno, e esse motor costuma remover ou simplesmente se recusar a exibir imagens com URI de dados. Um e-mail de marketing construído em cima de logotipos embutidos pode parecer perfeito em uma caixa pessoal do Gmail e mostrar um ícone de imagem quebrada para boa parte dos usuários corporativos do Outlook. Para qualquer coisa enviada como e-mail em massa, uma imagem hospedada normalmente com um atributo alt bem escrito continua sendo a opção segura por padrão, e Base64 fica melhor reservado para HTML cuja renderização você controla por completo, como uma notificação dentro do seu próprio app, um PDF exportado ou um recibo imprimível.

Fora do e-mail, essa mesma qualidade autocontida é genuinamente útil: um único arquivo HTML que inclui seu próprio logotipo e ícones como strings Base64 pode ser enviado como anexo, aberto direto de um disco local ou arquivado indefinidamente, tudo sem um único link de imagem quebrado, porque não existe arquivo externo algum que uma futura mudança de nome ou de lugar possa quebrar.

SVG e Base64: Quando a Codificação Realmente Ajuda

O SVG ocupa um lugar meio fora do padrão nessa conversa toda porque um arquivo SVG já é texto puro, não dados binários. Isso significa que dá para embuti-lo em um url() de CSS usando codificação de URL normal em vez de Base64, e um SVG codificado como URL costuma pesar menos do que o mesmo arquivo passado por Base64, porque a codificação de URL só escapa um punhado de caracteres especiais em vez de reescrever cada byte em um alfabeto de 4 caracteres.

Mesmo assim, o Base64 ganha seu espaço com SVG em algumas situações específicas. É a opção mais simples sempre que o contexto ao redor não tolera as aspas, cerquilhas e colchetes angulares que o marcador SVG cru ou codificado como URL carrega, como dentro de uma única string JSON, uma coluna de banco de dados ou o valor de uma propriedade customizada de CSS onde escapar caracteres fica complicado. Também funciona bem como atributo <img src="data:image/svg+xml;base64,...">', e essa ferramenta gera exatamente esse formato automaticamente quando você solta um arquivo SVG e escolhe a saída HTML.

O que o Base64 não consegue fazer pelo SVG é preservar sua maior vantagem: a estilização ao vivo. Um SVG colado direto no seu HTML como marcador <svg> inline pode ter a cor de preenchimento trocada com currentColor e CSS, reagir a :hover, e ser manipulado com JavaScript, nada disso é mais possível depois que ele é achatado em uma string Base64 opaca. Se você precisa de um ícone com tema personalizável, mantenha o marcador SVG inline. Se você precisa de uma referência de imagem portátil e opaca, codificá-lo em Base64 é a escolha certa, e essa ferramenta faz essa conversão em um único arrastar e soltar.

Trocas Envolvidas no Cache do Navegador

Um arquivo de imagem normal referenciado por URL ganha sua própria entrada no cache HTTP do navegador, regida pelos cabeçalhos Cache-Control que o servidor envia. Visite dez páginas que referenciam o mesmo /logo.png, e o navegador baixa esse arquivo exatamente uma vez, e reutiliza a cópia em cache em cada página seguinte pelo tempo que o cabeçalho de cache permitir, às vezes por meses.

Uma imagem em Base64 não tem esse privilégio. Como ela vive dentro do próprio documento HTML ou CSS em vez de existir como um recurso próprio, ela é baixada, processada e decodificada de novo toda vez que esse documento pai carrega, mesmo entre páginas que reutilizam exatamente a mesma imagem. Não existe uma entrada de cache separada que o navegador possa reutilizar, porque, do ponto de vista da camada de cache, não existe recurso independente nenhum, só mais bytes dentro de um documento que ele já ia buscar de qualquer jeito.

Esse é o maior argumento contra embutir qualquer coisa que apareça mais de uma vez em um site. Um logotipo compartilhado, um conjunto de ícones repetido ou um padrão de fundo usado no site inteiro é muito melhor servido como arquivo linkado com vida longa de cache, baixado uma vez e reutilizado em todo lugar, do que como uma string Base64 duplicada em cada página e folha de estilos que precisa dele. Reserve o embutimento para imagens realmente únicas de um único documento, onde não existe com quem dividir uma entrada de cache, para começar.

Usos Comuns Deste Conversor de Imagem para Base64

Desenvolvedores que constroem aplicações de página única ou dashboards internos usam Base64 para pequenos gráficos de espaço reservado e ícones de estado de carregamento que precisam renderizar antes mesmo de o pacote principal de JavaScript terminar de baixar, já que uma URI de dados inline aparece na tela instantaneamente com o primeiríssimo byte de HTML, sem esperar por uma segunda requisição.

Qualquer pessoa que gere relatórios offline, PDFs exportados ou entregas em HTML de arquivo único recorre ao Base64 para manter um documento realmente autocontido, com seu logotipo, gráficos ou diagramas embutidos direto no arquivo, para que nada quebre quando esse arquivo for enviado por e-mail, arquivado ou aberto anos depois em uma máquina sem acesso à hospedagem original das imagens.

Designers e desenvolvedores front-end usam o formato de saída CSS o tempo todo para pequenas decorações de interface, estados personalizados de checkbox e botão de rádio, texturas de fundo sutis e substitutos para fontes de ícones, em casos onde o recurso é pequeno o bastante para o sobrepeso de 33% quase não ser percebido, mas a requisição economizada acelera de verdade a primeira renderização da página.

E como toda a conversão acontece localmente, quem precisa converter algo sensível, um contrato assinado e escaneado, uma foto de identificação privada, uma captura de tela de um produto ainda não lançado, usa essa ferramenta justamente porque ela nunca pede para nada sair do próprio dispositivo.

Por Que Esse Conversor Funciona Totalmente no Seu Navegador

Muita ferramenta de "converter imagem para Base64" por aí sobe em silêncio tudo o que você solta nela para um servidor, codifica lá e devolve a string. Essa ida e volta é invisível se você está convertendo um logotipo público, mas vira uma preocupação real no momento em que a imagem é um documento assinado, uma foto privada, uma captura de tela com dados confidenciais, ou qualquer material de design ainda não lançado que você não gostaria de ver, nem que fosse por pouco tempo, no servidor de outra pessoa.

Esse conversor nunca faz essa viagem. Ele lê seu arquivo usando a API FileReader nativa do navegador, codifica os bytes com JavaScript rodando no seu próprio dispositivo, e mostra o resultado, tudo sem que uma única requisição de rede leve sua imagem para lugar nenhum. Abra a aba de rede do seu navegador enquanto usa a ferramenta e você não vai encontrar seu arquivo saindo da página. Isso também significa que não existe limite de tamanho imposto por servidor, não existe fila de processamento para esperar, e não existe dependência de uma API de terceiros continuar no ar; a conversão é exatamente tão rápida e tão disponível quanto o seu próprio computador.

Para times que lidam com material de clientes, uma identidade de marca ainda em desenvolvimento, ou qualquer coisa coberta por um acordo de confidencialidade, uma ferramenta puramente local tira a questão da confiança completamente da equação, em vez de pedir para você ler uma política de privacidade e torcer para que ela se sustente. É o mesmo raciocínio que leva desenvolvedores a rodar um formatador ou um linter localmente em vez de colar código-fonte proprietário em um formulário web qualquer.

Perguntas Frequentes

O que é uma URI de dados em Base64 e como o navegador a lê?
Uma URI de dados empacota um arquivo diretamente em uma string de texto no formato "data:[tipo-mime];base64,[dados-codificados]", então em vez de apontar para um arquivo separado, o navegador decodifica a string na hora. O tipo MIME diz ao navegador o que ele está vendo, como image/png ou image/svg+xml, e tudo depois da vírgula é o conteúdo da imagem traduzido para texto Base64.
Por que a string Base64 fica tão maior que minha imagem original?
A codificação Base64 transforma cada grupo de 3 bytes de dados binários em 4 caracteres de texto, o que aumenta o peso do arquivo em cerca de 33% antes de qualquer compressão adicional. Um PNG de 90 KB costuma gerar uma string Base64 próxima de 120 KB, então a conveniência de embutir a imagem sempre vem com um custo real de tamanho.
Quando vale a pena embutir uma imagem em Base64 em vez de linkar um arquivo?
Base64 funciona bem para gráficos pequenos e reutilizados com frequência, como ícones, logotipos ou pequenos detalhes de interface, quando economizar uma requisição HTTP extra pesa mais do que os 33% de aumento. Para fotos grandes, banners principais ou qualquer imagem acima de uns 5 a 10 KB, um arquivo linkado normal quase sempre é mais rápido, porque o navegador consegue guardá-lo em cache e reutilizá-lo de forma independente.
Posso usar imagens codificadas em Base64 dentro de e-mails em HTML?
Depende bastante do cliente de e-mail. Gmail e Apple Mail geralmente renderizam bem imagens Base64 embutidas, mas o Outlook de desktop usa um motor de renderização baseado no Word que costuma remover ou ignorar imagens com URI de dados. Uma imagem hospedada com um atributo alt bem escrito continua sendo a opção mais segura para uma campanha de e-mail em massa.
Base64 é uma boa escolha especificamente para arquivos SVG?
Às vezes, mas nem sempre. Como um SVG já é texto puro, um SVG codificado como URL no CSS costuma pesar menos do que o mesmo arquivo passado por Base64, e colar o próprio marcador <svg> direto no seu HTML permite estilizá-lo com currentColor e CSS, algo que uma string Base64 não permite. Base64 se torna útil principalmente quando você precisa do SVG dentro de um único atributo de dados opaco ou de uma propriedade customizada de CSS.
O cache do navegador continua funcionando depois que uma imagem vira Base64?
Não, não de forma independente. Um arquivo de imagem linkado ganha sua própria entrada no cache HTTP do navegador e pode ser reutilizado em toda página que o referencia, enquanto uma string Base64 vive dentro do próprio documento HTML ou CSS que a contém, então ela é baixada e decodificada de novo toda vez que esse documento carrega, mesmo que a imagem em si nunca mude.
Existe um limite de tamanho de arquivo nesta ferramenta?
Não há limite imposto pela própria ferramenta, já que tudo roda na memória do seu navegador, mas imagens de origem muito grandes, acima de uns 2 MB, podem gerar uma string Base64 longa o suficiente para deixar a aba visivelmente mais lenta ou tornar o campo de resultado pesado para rolar. Para arquivos desse tamanho, um arquivo linkado ainda é a escolha melhor.
Minha imagem fica privada quando uso esse conversor?
Sim. Toda a conversão acontece localmente usando a API FileReader nativa do navegador, então a imagem que você solta na ferramenta nunca é enviada, transmitida ou armazenada em nenhum servidor. Isso torna seguro converter documentos escaneados, capturas de tela privadas ou materiais de design ainda não divulgados sem que esse conteúdo saia do seu dispositivo.
Qual a diferença entre os formatos de saída Raw, CSS e HTML?
O formato Raw entrega só a string da URI de dados pura, pronta para colar em qualquer lugar que seu projeto espere uma URL. O formato CSS envolve essa mesma string em uma declaração background-image: url(...), e o formato HTML a envolve em uma tag completa <img src="...">, então você copia exatamente a sintaxe que sua folha de estilos ou seu marcador precisa, sem editar nada manualmente.
Quando devo evitar completamente a codificação Base64?
Evite em fotos grandes, imagens de produto ou qualquer coisa que um usuário possa ver repetida em várias páginas, já que um arquivo linkado permite que o navegador guarde esse download em cache e o reutilize em vez de baixar de novo um bloco de texto inflado toda vez. Também vale evitar em páginas onde cada kilobyte do HTML inicial importa para a velocidade percebida de carregamento, porque uma string longa embutida atrasa o momento em que o navegador termina de processar o resto do documento.

Ferramentas de Desenvolvimento Relacionadas

🔒 100% Privado e Local

Cada imagem é decodificada e codificada <strong>totalmente no seu navegador</strong>. Nada é enviado a nenhum servidor. Sua imagem fica no seu dispositivo.