Ferramenta de Conversão de Imagem Base64
Converta entre imagens e codificação Base64, suporta arrastar e soltar e visualização em tempo real
Arraste imagem aqui, ou clique para selecionar arquivo
Suporta JPG, PNG, GIF, WebP, SVG e mais
O que é Codificação de Imagem Base64?
A ferramenta de imagem em Base64 converte arquivos de imagem em texto Base64 ou data URLs, e também decodifica essas strings para exibir a imagem novamente. Ela é útil para ícones pequenos, placeholders, modelos de e-mail, fundos CSS, testes de API e demonstrações em que enviar um arquivo separado seria incômodo. Base64 não é compressão: normalmente aumenta o tamanho dos dados e pode prejudicar o cache em fotos grandes ou recursos repetidos. Use a conversão para inspecionar e depurar antes de escolher entre dados incorporados, CDN ou uma URL de imagem comum.
Como usar
Como usar
- Arraste ou clique para enviar a imagem; o tipo e as dimensões são detectados automaticamente
- Escolha o formato de saída: Data URL (pronto para uso em código) ou Base64 puro
- Clique no botão de copiar para colar o resultado codificado onde precisar
- Para a conversão inversa, cole a string Base64 e clique em converter para baixar a imagem
Base64 para Imagem
- Cole uma data URL ou uma string Base64 bruta na caixa de entrada e converta para visualizar a imagem decodificada antes de baixar.
- Se a decodificação falhar, verifique se o texto Base64 está completo e se o prefixo data:image/... está corretamente formado.
Imagem para Base64
- Escolha Data URL quando o resultado for colado diretamente em HTML ou CSS, e Base64 puro quando outro sistema já armazena o tipo MIME em separado.
- Mantenha as imagens em Base64 pequenas; imagens grandes aumentam o tamanho do texto em cerca de um terço e podem tornar payloads de HTML, CSS ou JSON mais difíceis de manter.
Casos de uso
Princípio técnico
Uma imagem codificada em Base64 é um data URI conforme definido na RFC 2397: o prefixo de esquema data:, o tipo MIME como image/png, o literal ;base64 e depois o payload construído com o alfabeto de 64 caracteres A-Z, a-z, 0-9, +, /, com = como preenchimento terminal. A codificação pega o fluxo binário de três bytes de cada vez e emite quatro caracteres, de modo que o payload cresce por um fator fixo de 4/3 (aproximadamente 33%) mais um ou dois caracteres de preenchimento quando o número de bytes não é múltiplo de três. No navegador, a codificação começa com FileReader.readAsDataURL, que processa o arquivo pelo mesmo pipeline e retorna a URL data: completa, pronta para ser usada em um <img src> ou em um url() de background-image no CSS. As primitivas btoa e atob, que trabalham apenas com strings, operam em payloads já binários (apenas latin-1, portanto bytes binários precisam ser convertidos via Uint8Array). A decodificação de volta para uma imagem visualizável passa por atob para um Uint8Array, depois para um Blob com o tipo MIME original, e o handle URL.createObjectURL se torna um recurso HTTP normal e recuperável. O trade-off prático não é largura de banda, mas cache. Cada ocorrência do payload é duplicada onde quer que o HTML, CSS ou JSON apareça, então o recurso não pode ser cacheado separadamente, não pode ter seu próprio ETag e é rebaixado a cada documento pai. Regras estritas de Content-Security-Policy também bloqueiam data: URIs, a menos que 'data:' esteja explicitamente listado em img-src ou style-src. Desde que a multiplexação HTTP/2 foi implementada, incorporar ícones pequenos raramente supera uma requisição separada, então a regra moderna é incorporar apenas abaixo de ~2 KB e manter imagens principais e sprites reutilizáveis como arquivos cacheáveis.
- Esquema Data URI: formato RFC 2397 data:[<mime>][;base64],<payload>; a vírgula é obrigatória e é a falha de cópia mais comum.
- Sobrecarga de codificação: 3 bytes binários se tornam 4 caracteres ASCII, então o payload cresce por um fator de 4/3 (~33%) mais até 2 caracteres de preenchimento '='.
- APIs do navegador: FileReader.readAsDataURL para arquivos; btoa/atob para payloads já em texto (apenas latin-1, portanto binário precisa de uma ponte Uint8Array).
- Caminho de decodificação: atob → Uint8Array → new Blob([buf], {type}) → URL.createObjectURL fornece uma URL de recurso recuperável normal em vez de uma string congelada.
- Problema com CSP: uma política img-src ou default-src estrita bloqueia data: a menos que a palavra-chave esteja explicitamente listada, o que silenciosamente quebra imagens incorporadas em produção.
- Trade-off de cache: dados incorporados não têm ETag ou entrada de cache independente, então a multiplexação HTTP/2 geralmente supera a incorporação para qualquer coisa acima de ~2 KB.
Exemplos
Uso em HTML
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=" alt="pixel transparente 1x1" width="16" height="16" />Uso em CSS
.icon-search {
width: 16px;
height: 16px;
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTYgMmE0IDQgMCAxIDAgMi4yNCA3LjMzbDMuMjEgMy4yMSAxLjQyLTEuNDItMy4yMS0zLjIxQTQgNCAwIDAgMCA2IDJ6Ii8+PC9zdmc+');
background-size: contain;
}Transmissão em API JSON
POST /api/v1/avatar
Content-Type: application/json
{
"userId": 10086,
"avatar": {
"mimeType": "image/png",
"data": "iVBORw0KGgoAAAANSUhEUgAAAAUA..."
}
}
// Observação: Base64 aumenta o payload em ~33%; para arquivos > 100KB, prefira multipart/form-data.Perguntas frequentes
A imagem é enviada para algum servidor?
Não. A imagem é lida pela API FileReader e codificada em Base64 no seu navegador. Os bytes nunca saem do seu dispositivo. Acompanhe a aba Network durante a conversão para confirmar.
Por que a string Base64 fica cerca de 33% maior que o arquivo?
O Base64 representa 3 bytes de entrada como 4 caracteres ASCII, então o tamanho codificado = ceil(file_size / 3) * 4. Isso dá cerca de 33% de overhead, o custo de representar dados binários como texto imprimível.
Como uso o resultado em HTML ou CSS?
Use uma data URI: <img src="data:image/png;base64,..."> em HTML ou background-image: url(data:image/png;base64,...) em CSS. A página gera a data URI completa para você. Útil para pequenos recursos inline, mas aumenta o tamanho do HTML/CSS e contorna o cache de imagens do navegador.
Qual é o limite de tamanho para inlinear vs. linkar?
Abaixo de cerca de 5 KB, inlinear geralmente vale a pena (economiza uma requisição HTTP). Acima disso, o arquivo deve ser um recurso separado por questões de cache. Acima de cerca de 50 KB, inlinear infla bastante seu HTML. Cada ferramenta de build usa um limite diferente; o webpack usa 8 KB por padrão.
Posso decodificar uma string Base64 de volta para imagem?
Sim. Cole uma data URI ou Base64 puro (com tipo MIME image/*) e a página reconstrói a imagem e oferece download. Útil quando você encontra uma imagem inline em código-fonte e quer o arquivo original.
SVG e GIFs animados são suportados?
Sim. SVG pode ser codificado diretamente ou com texto codificado em URL (que é mais curto que Base64 para SVG-XML). GIFs animados são codificados como uma única string Base64; o resultado continua animando. WebP, AVIF e outros formatos modernos funcionam do mesmo jeito.
Devo codificar fotos grandes em Base64 para enviar por e-mail?
O próprio e-mail já codifica anexos em Base64 via MIME, então você não precisa pré-codificar. Colar uma string Base64 no corpo do e-mail só deixa a mensagem maior e ilegível na maioria dos clientes. Anexe o arquivo normalmente.