ToolActToolAct

Ferramenta de Conversão de Imagem Base64

Converta entre imagens e codificação Base64, suporta arrastar e soltar e visualização em tempo real

Upload de Imagem

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

  1. Arraste ou clique para enviar a imagem; o tipo e as dimensões são detectados automaticamente
  2. Escolha o formato de saída: Data URL (pronto para uso em código) ou Base64 puro
  3. Clique no botão de copiar para colar o resultado codificado onde precisar
  4. 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

Codificar uma imagem como data URL ou Base64 puroCarregue uma imagem no navegador e escolha entre copiar a data:image URL completa ou apenas o payload Base64, verificando tipo de arquivo, dimensões e tamanho original. Calcule uma sobrecarga de cerca de 33% por kilobyte de dados binários, e lembre-se de que uma data URL inline dentro de img-src será bloqueada por regras CSP restritivas que não listam data:.
Decodificar uma string Base64 de volta para uma imagem visualizávelCole uma data URL ou string Base64 bruta, converta de volta para imagem e inspecione dimensões, comprimento Base64 e tamanho decodificado estimado antes de incorporar ou compartilhar. Os bytes decodificados são gravados via Blob URL, então o resultado é um recurso HTTP normal, e não uma string que poderia contaminar o cache de um CDN.
Estimar tamanho antes de incorporar em HTML ou CSSConsulte o tamanho estimado em bytes decodificado mais as dimensões, para decidir se o recurso incorporado é pequeno o suficiente para CSS inline ou se deve ser enviado como um arquivo real. Base64 inline também impede o navegador de fazer cache da imagem separadamente, o que pode prejudicar o desempenho em visitas repetidas para fotos hero e ícones grandes.
Recuperar uma imagem salva apenas como string Base64Cole um blob Base64 bruto copiado de um background CSS, configuração JSON ou campo de banco de dados e baixe um PNG para inspecionar a imagem real quando nenhum arquivo original está disponível. Também é útil para restaurar um logotipo corporativo de uma assinatura de e-mail legada antes de reexportá-lo como um recurso comum.
Testar se uma data URL é válida antes de incorporá-laCole uma string copiada de uma folha de estilos antiga no decodificador para confirmar que o prefixo MIME, a vírgula e o payload Base64 estão intactos, pois uma quebra de linha solta pode quebrar a análise em alguns navegadores. A pré-visualização decodificada também facilita identificar corrupção de pixels causada por uma string Base64 com preenchimento incorreto.

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.