Codificar uma imagem em Base64 / Data URI

converte as suas imagens em ficheiros base64, ideal para integrar imagens diretamente em código HTML ou CSS
Formato de ficheiro

Podes carregar um número ilimitado de imagens com um peso máximo de 20M.

Segurança

Os teus dados não são armazenados nos nossos servidores.

Navegadores suportados

Todos os navegadores recentes são suportados. Se ainda assim encontrares um bug, avisa-nos para que possamos corrigi-lo.

O que é uma Data URI?

Uma Data URI é um URL que contém diretamente os dados de um recurso em vez de apontar para um ficheiro remoto. A sua forma geral é data:[<mediatype>][;base64],<data>. Para uma imagem, tem-se tipicamente data:image/png;base64,iVBORw0KGgo…. O recurso é incorporado no HTML, CSS ou JSON e carregado sem qualquer pedido HTTP adicional.

Porquê codificar uma imagem em Base64?

As motivações comuns:

  • Reduzir os pedidos HTTP: integrar um ícone diretamente no CSS em vez de o carregar à parte do documento
  • Assinatura de e-mail com imagem inline: sem risco de a imagem ser bloqueada como conteúdo remoto
  • Web Components / Web Workers: onde carregar um recurso externo coloca frequentemente um problema de scope ou de CORS
  • Storage local (LocalStorage, IndexedDB, base de dados): serializar uma miniatura de avatar como string
  • Self-contained snippets: um ficheiro HTML autossuficiente, sem dependência externa

Casos de uso típicos

Alguns contextos concretos em que a codificação Base64 de imagem se justifica:

  • Ícones SVG inline em CSS (background-image: url("data:image/svg+xml;base64,…"))
  • Assinaturas de e-mail personalizadas com logótipo
  • Prototipagem rápida de uma página autónoma partilhada por e-mail
  • Web components autónomos (um único ficheiro implantável)
  • Geração de PDF no lado do navegador (jsPDF) com miniaturas incorporadas
  • Dados de teste (mocks) que contêm imagens

Como utilizar

Três etapas:

  1. Carregue a sua imagem (PNG, JPG, SVG, WebP, GIF) através da zona de drop
  2. Clique em "Codificar"
  3. Copie a Data URI resultante com o botão dedicado e cole-a no seu HTML, CSS ou JSON

Limites e boas práticas

O Base64 não é uma solução milagrosa. Algumas precauções:

  • O Base64 aumenta o tamanho em cerca de 33 %: 4 caracteres ASCII por cada 3 bytes binários
  • As imagens codificadas não são guardadas em cache separadamente pelo navegador; são recarregadas com o HTML/CSS que as contém
  • A privilegiar para imagens com menos de 10 KB; acima disso, um ficheiro externo costuma ser mais eficiente
  • Para SVG, prefira a codificação URL (via encodeURIComponent) em vez de Base64: o resultado é mais curto e continua analisável como texto
  • Ferramentas de build modernas (Webpack, Vite) automatizam a escolha Base64 vs. ficheiro externo através de um limiar de tamanho configurável

Exemplos concretos

HTML:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgYAAAAAMAAS+rJYwAAAAASUVORK5CYII=" alt="pixel">

CSS:

.icon {
  background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0i…") no-repeat;
  width: 16px;
  height: 16px;
}

JSON (mock data):

{
  "user": {
    "name": "Adrien",
    "avatar": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA…"
  }
}

FAQ

Qual a diferença entre Base64 e binário?

O binário representa os octetos brutos de um ficheiro. O Base64 é uma codificação que transforma esses octetos em 64 caracteres ASCII imprimíveis (A-Z, a-z, 0-9, +, /). Os contextos de texto (HTML, JSON, e-mail) não conseguem transportar binário; o Base64 resolve este problema ao preço de um sobrecusto de tamanho de 33 %.

Porque é que a minha Data URI é tão longa?

Uma imagem de 30 KB em binário torna-se aproximadamente 40 KB em Base64. E cada caractere é um byte ASCII, portanto sim, a cadeia é longa. É inerente à codificação. Para imagens grandes, mantenha um ficheiro externo.

Todos os navegadores suportam Data URIs?

Sim, sem exceção entre os navegadores modernos (Chrome, Firefox, Safari, Edge, mesmo desde o IE8). Limites históricos: o IE8 fixava-se em 32 KB. Já não há motivo de preocupação na web atual.

Como descodificar uma Data URI?

O nosso descodificador de imagem Base64 faz a operação inversa: cole a sua Data URI, recupere o ficheiro de imagem (PNG, JPG, SVG, WebP) pronto a carregar ou a guardar.

Base64 vs. URL encoding para SVG?

Para SVG, o URL encoding (com encodeURIComponent) produz uma cadeia mais curta do que Base64 e continua legível como texto. É a opção recomendada em CSS quando se integra um SVG inline. Para os formatos binários (PNG, JPG), o Base64 continua obrigatório.

A codificação Base64 afeta a qualidade da imagem?

Não. A codificação é lossless: é uma bijeção octeto binário <-> cadeia Base64. Os píxeis originais são estritamente preservados. Só o tamanho do ficheiro transportado aumenta em 33 %.

Perguntas frequentes

Quando é melhor evitar a Data URI?

Assim que uma imagem ultrapassa uma dezena de kilobytes e é suscetível de ser reutilizada em várias páginas, um ficheiro externo é preferível. O navegador pode então colocá-la em cache separadamente do HTML que a referencia. Uma Data URI aumenta o documento principal e obriga a voltar a descarregar a imagem a cada carregamento de página.

A minha imagem é enviada para um servidor?

A imagem passa pelo nosso servidor durante o tempo da codificação e não é conservada após o retorno do resultado. Nenhum serviço de terceiros é solicitado. Para um ficheiro estritamente confidencial, o equivalente local é base64 -w 0 minha-imagem.png em Linux ou certutil -encode em Windows.

Porquê privilegiar o URL encoding em vez de base64 para um SVG?

Um SVG é texto XML. Codificado em base64, torna-se ilegível e cerca de 33 % mais volumoso. Em URL encoding via encodeURIComponent, o resultado mantém-se legível e mais curto. Em CSS, escrever url("data:image/svg+xml;utf8,<svg…>") com os caracteres especiais escapados dá um ficheiro final mais pequeno do que uma versão base64.

Qual o tamanho máximo que posso codificar?

O tamanho de ficheiro aceite pelo formulário está limitado a alguns megabytes, suficiente para a grande maioria dos ícones, miniaturas e avatares. Acima disso, sai do caso de uso razoável de uma Data URI: um ficheiro estático servido pela sua CDN será muito mais eficiente para o navegador e para as suas métricas Core Web Vitals.

Porque é que o navegador não guarda em cache uma Data URI?

A cache HTTP funciona por URL. Uma Data URI faz parte do documento que a contém, portanto é recarregada com ele. Um ícone externo em icon.png, ao contrário, é guardado em cache uma vez por todas e reutilizado em todas as páginas que o referenciam. É a principal razão pela qual a Data URI continua a ser uma ferramenta de nicho, e não um substituto geral.

Exemplo de pedido

curl -X POST https://cdrn.fr/api/v1/tools/base64-image-encoder/execute \
  -F "file=@/path/to/file"

Esquema de entrada

Campo Tipo Obrigatório Predefinição
file file

esta ferramenta espera um ficheiro - utilize Content-Type multipart/form-data em vez de application/json

Pontos de acesso

  • GET https://cdrn.fr/api/v1/tools - lista todas as ferramentas disponíveis
  • GET https://cdrn.fr/api/v1/tools/base64-image-encoder - obtém o esquema desta ferramenta
  • POST https://cdrn.fr/api/v1/tools/base64-image-encoder/execute - executa esta ferramenta com um payload JSON