Codificador de Imagem Base64

Codifica imagens para data URIs Base64 para uso em HTML e CSS

Solte uma imagem aqui ou clique para fazer upload

Suporta PNG, JPG, SVG, WebP, GIF, AVIF

O que é a codificação de imagem em Base64?

A codificação de imagem em Base64 converte dados binários de uma imagem em uma string ASCII que pode ser incorporada diretamente em HTML, CSS ou JSON sem referenciar um arquivo externo. O resultado é um data URI — uma string autocontida que começa com data:image/png;base64, seguida pelos bytes codificados em Base64 da imagem. Os navegadores tratam data URIs exatamente como URLs de imagens externas: decodificam o payload Base64 e renderizam a imagem inline.

A técnica é definida pela RFC 2397 (esquema data URI) e pela RFC 4648 (codificação Base64). Quando uma imagem é codificada em Base64, cada 3 bytes de dados binários de pixel se transformam em 4 caracteres ASCII, aumentando o tamanho do payload em aproximadamente 33%. Apesar desse overhead, imagens inline eliminam uma requisição HTTP por recurso — uma otimização relevante quando as imagens são pequenas (ícones, logos, pixels de rastreamento 1x1) e a latência de ida e volta de uma requisição separada superaria o custo dos bytes extras.

Data URIs são suportados em todos os navegadores modernos, clientes de email (com ressalvas) e em qualquer contexto que aceite sintaxe URI padrão. São amplamente usados em single-page applications, templates de email HTML, sprites SVG e declarações CSS background-image, onde reduzir o número total de requisições de rede melhora o tempo de carregamento percebido.

Por que usar este Codificador de Imagem Base64?

Esta ferramenta converte qualquer imagem em um data URI pronto para uso diretamente no seu navegador — sem upload, sem servidor, sem cadastro.

Conversão instantânea
Arraste e solte uma imagem ou selecione um arquivo, e o data URI completo aparece imediatamente. Sem esperar por processamento no servidor — a API FileReader cuida de tudo localmente.
🔒
Processamento com privacidade em primeiro lugar
Suas imagens nunca saem do seu dispositivo. A codificação é executada inteiramente no navegador usando o método nativo FileReader.readAsDataURL(). Nenhum dado é transmitido para qualquer servidor.
🌐
Todos os formatos principais suportados
Aceita PNG, JPEG, SVG, WebP, GIF, ICO, BMP e qualquer outro formato de imagem suportado pelo seu navegador. O tipo MIME é detectado automaticamente a partir do arquivo.
📦
Saída pronta para copiar
A saída é uma string data URI completa — cole diretamente em um atributo img src de HTML, em uma declaração CSS url(), ou em um payload JSON sem nenhuma formatação manual.

Casos de uso da codificação de imagem em Base64

Desenvolvimento frontend
Incorpore ícones pequenos e recursos de UI diretamente em HTML ou CSS para eliminar requisições HTTP. Isso reduz a latência em cascata para imagens críticas acima da dobra, melhorando as pontuações de Largest Contentful Paint (LCP).
Templates de email HTML
Muitos clientes de email bloqueiam imagens externas por padrão. Imagens Base64 inline são renderizadas imediatamente sem exigir que o destinatário clique em "carregar imagens", melhorando as taxas de abertura e a consistência visual.
Single-Page Applications
Agrupe recursos pequenos como data URIs em seu JavaScript ou CSS para reduzir o número total de requisições de rede. Webpack e Vite suportam inlining automático em Base64 para recursos abaixo de um limite de tamanho configurável.
Payloads de API e JSON
Codifique avatares, assinaturas ou miniaturas de usuários como strings Base64 para incluí-los diretamente em respostas de API JSON. Isso evita a necessidade de um endpoint separado de hospedagem de arquivos para imagens pequenas.
Documentação e Markdown
Incorpore diagramas ou capturas de tela como data URIs em arquivos Markdown ou documentos README. As imagens acompanham o documento e são exibidas corretamente sem hospedagem externa.
Testes e prototipagem
Use data URIs Base64 como imagens de placeholder em fixtures de testes, stories do Storybook ou arquivos HTML de protótipo. Sem necessidade de configurar um servidor de arquivos estáticos ou gerenciar recursos de imagem durante o desenvolvimento inicial.

Estrutura do data URI

Um data URI codifica o formato da imagem e o conteúdo binário em uma única string. Entender sua estrutura ajuda na construção ou análise de data URIs de forma programática:

ComponenteDescrição
data:URI scheme identifier
image/pngMIME type of the image
;base64,Encoding declaration
iVBORw0KGgo...Base64-encoded binary data

Comparação de formatos de imagem para codificação Base64

A escolha do formato de imagem afeta o tamanho da saída Base64, o suporte do navegador e as características de renderização. Use o formato que melhor se adequa ao tipo de conteúdo:

FormatoTipo MIMETransparênciaMelhor para
PNGimage/pngYesScreenshots, icons, UI elements
JPEGimage/jpegNoPhotos, gradients, large images
SVGimage/svg+xmlYesLogos, icons, scalable graphics
WebPimage/webpYesModern web images, smaller files
GIFimage/gifYes (1-bit)Simple animations, small icons
ICOimage/x-iconYesFavicons

Exemplos de código

Como converter imagens para data URIs Base64 nas linguagens e ambientes mais populares:

JavaScript (browser)
// Convert a File object to a Base64 data URI
function fileToDataUri(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader()
    reader.onload = () => resolve(reader.result)
    reader.onerror = reject
    reader.readAsDataURL(file)
    // reader.result → "data:image/png;base64,iVBORw0KGgo..."
  })
}

// Convert a canvas element to a data URI
const dataUri = canvas.toDataURL('image/png')
// → "data:image/png;base64,iVBORw0KGgo..."

// Convert with quality parameter (JPEG/WebP only)
const jpegUri = canvas.toDataURL('image/jpeg', 0.8)
// → "data:image/jpeg;base64,/9j/4AAQ..."
Python
import base64

# Read an image file and encode it to a data URI
with open('logo.png', 'rb') as f:
    encoded = base64.b64encode(f.read()).decode('ascii')

data_uri = f'data:image/png;base64,{encoded}'
# → "data:image/png;base64,iVBORw0KGgo..."

# Detect MIME type automatically
import mimetypes
mime, _ = mimetypes.guess_type('photo.jpg')
# mime → "image/jpeg"

with open('photo.jpg', 'rb') as f:
    b64 = base64.b64encode(f.read()).decode('ascii')

data_uri = f'data:{mime};base64,{b64}'
Node.js
import { readFileSync } from 'fs'
import { lookup } from 'mime-types'

// Read file and encode to data URI
const buffer = readFileSync('icon.png')
const base64 = buffer.toString('base64')
const mime = lookup('icon.png') // → "image/png"

const dataUri = `data:${mime};base64,${base64}`
// → "data:image/png;base64,iVBORw0KGgo..."

// From a Buffer received via HTTP/API
function bufferToDataUri(buf, mimeType) {
  return `data:${mimeType};base64,${buf.toString('base64')}`
}
CLI (bash)
# Encode an image to Base64 (macOS)
base64 -i logo.png | tr -d '\n'

# Encode an image to a full data URI (Linux)
echo -n "data:image/png;base64,$(base64 -w 0 logo.png)"

# Encode and copy to clipboard (macOS)
echo -n "data:image/png;base64,$(base64 -i logo.png | tr -d '\n')" | pbcopy

# Detect MIME type and encode (Linux, requires file command)
MIME=$(file -b --mime-type image.webp)
echo -n "data:$MIME;base64,$(base64 -w 0 image.webp)"

Perguntas frequentes

Qual é o tamanho máximo de imagem para codificação Base64?
Não há limite rígido na própria especificação Base64. O suporte a data URIs nos navegadores varia: a maioria dos navegadores modernos lida com data URIs de até vários megabytes. No entanto, a codificação Base64 aumenta o tamanho em 33%, então uma imagem de 1 MB se torna aproximadamente 1,33 MB de texto. Para imagens maiores que 10-20 KB, servir como arquivos separados com cache adequado é mais eficiente.
A codificação Base64 reduz a qualidade da imagem?
Não. Base64 é uma codificação sem perdas — converte dados binários em texto sem alterar o conteúdo. Os dados decodificados são byte a byte idênticos ao arquivo original. Qualquer perda de qualidade viria do próprio formato de imagem (por exemplo, compressão JPEG), não da codificação Base64.
Por que a saída codificada em Base64 é maior do que a imagem original?
Base64 representa 3 bytes de dados binários usando 4 caracteres ASCII, resultando em um aumento de tamanho de 33%. Um data URI também adiciona um prefixo (por exemplo, data:image/png;base64,) de aproximadamente 25-30 caracteres. Para imagens pequenas (abaixo de 2-5 KB), esse overhead é compensado pela eliminação de uma requisição HTTP. Para imagens maiores, a penalidade de tamanho torna os arquivos externos mais eficientes.
Posso usar imagens Base64 em CSS background-image?
Sim. Use o data URI como valor da função url(): background-image: url('data:image/png;base64,...'). Isso funciona em todos os navegadores modernos. É mais eficaz para padrões de fundo ou ícones pequenos e usados com frequência, onde evitar uma requisição HTTP vale o CSS ligeiramente maior.
A codificação de imagem em Base64 é segura para imagens sensíveis?
Base64 é uma codificação, não criptografia. Qualquer pessoa que veja o data URI pode decodificá-lo de volta para a imagem original. Não dependa do Base64 para proteger imagens confidenciais. Esta ferramenta processa imagens inteiramente no seu navegador — nenhum dado é enviado para qualquer servidor — mas o data URI resultante é texto simples que pode ser lido por qualquer pessoa com acesso ao código-fonte do seu HTML ou CSS.
Como converter um data URI Base64 de volta para um arquivo de imagem?
Em JavaScript, use fetch() com o data URI e chame blob() na resposta, depois crie um link de download. Em Python, divida a string na vírgula, decodifique a parte Base64 com base64.b64decode() e escreva os bytes em um arquivo. Você também pode usar a ferramenta Decodificador de Imagem Base64 neste site.
Devo codificar em Base64 todas as imagens do meu site?
Não. O inlining em Base64 é benéfico para imagens pequenas (ícones, logos, pixels 1x1) onde o overhead da requisição HTTP supera a penalidade de tamanho de 33%. Para imagens maiores, use arquivos separados com cabeçalhos de cache adequados — o navegador pode fazer cache deles de forma independente e carregá-los em paralelo. Um limite comum é 2-8 KB: imagens abaixo desse tamanho se beneficiam do inlining, enquanto imagens maiores devem ser servidas como arquivos externos.