PK Systems
Codificadores e decodificadores

Codificador/Decodificador de Imagem em Base64

Converta imagens para data URL em base64 e vice-versa. Solte um arquivo ou cole uma data URL — nada sai do seu navegador.

Codificador/Decodificador de Imagem em Base64

Arraste e solte uma imagem, ou clique para escolher Aceita PNG, JPG, WebP, GIF e SVG.

tools.base64-image.result.label

O que é uma data URL em base64?

Uma data URL embute um arquivo pequeno direto numa string no formato data:<mime>;base64,<payload>. O navegador trata como qualquer URL — dá para colocar em <img src>, num background-image de CSS ou numa assinatura de e-mail. O base64 aumenta o tamanho original em ~33%, então só compensa para assets bem pequenos (ícones, sprites, avatares). Para qualquer coisa maior, melhor servir o arquivo normal por trás de uma CDN.

Como usar a ferramenta

No modo Codificar, solte ou escolha uma imagem e copie o formato que precisar: data URL completa, base64 puro (sem prefixo) ou uma tag <img> pronta. No modo Decodificar, cole qualquer data URL ou string base64 e a imagem volta a aparecer na pré-visualização — útil quando você acha uma no CSS de outra pessoa ou num e-mail HTML exportado e quer saber o que é. Use o chip no topo para alternar.

Quando (e quando não) embutir imagens

Casos bons: logos pequenos e ícones que viajam no mesmo HTML/CSS, gráficos de assinatura em e-mails transacionais, embutir um asset numa demo HTML de um arquivo só. Casos ruins: imagem hero, galerias, qualquer coisa reaproveitada em várias páginas — o base64 quebra o cache HTTP daquele asset, impede o download paralelo, infla o HTML/CSS e prejudica a métrica Largest Contentful Paint. Regra prática: até ~2 KB codificado costuma ser tranquilo; acima disso, prefira o arquivo normal.

Tipos MIME comuns

O tipo MIME após data: diz ao navegador como decodificar o conteúdo — errar (mandar um JPG como image/png, por exemplo) quebra a imagem silenciosamente em alguns navegadores.

Formato Tipo MIME Observações
PNGimage/pngLossless, supports transparency. Best for icons and UI.
JPG / JPEGimage/jpegLossy. Best for photos. No transparency.
WebPimage/webpSmaller than PNG/JPG; supported by all modern browsers.
GIFimage/gifAnimated, 256-colour. Heavier than WebP/MP4 for video.
SVGimage/svg+xmlVector. Prefer URL-encoded over base64 in CSS.

Perguntas frequentes

A imagem sai do meu navegador?
Não. O arquivo é lido com FileReader direto para uma string de data URL em JavaScript. Não há upload, nem chamada para servidor, nem analytics levando a imagem. Dá para arrastar uma imagem com a internet desligada que continua funcionando.
Por que o base64 fica tão maior que o arquivo?
O base64 representa cada 3 bytes binários como 4 caracteres ASCII, então a string codificada fica cerca de 33% maior que o arquivo original. A data URL ainda soma alguns bytes a mais com o prefixo data:<mime>;base64,.
Dá para embutir um SVG sem base64?
Dá — e na maioria das vezes é o melhor. SVGs funcionam como texto puro dentro de uma data URL só com URL-encoding (data:image/svg+xml;utf8,<svg…>) e ficam bem menores que a versão em base64. A ferramenta entrega a versão base64 por compatibilidade; em CSS de produção, prefira a versão URL-encoded.
Imagem embutida fica em cache no navegador?
Só junto com o documento/CSS em que está. Ela não pode ser cacheada individualmente como um arquivo de imagem comum. Se o mesmo ícone for embutido em dez páginas, cada página vai baixá-lo de novo. Por isso, embutir só compensa para assets muito pequenos usados uma ou duas vezes.
Posso decodificar uma string base64 qualquer?
Sim — cole na caixa do modo Decodificar. Se não tiver o prefixo data:, a ferramenta tenta detectar o tipo da imagem pelos bytes mágicos (PNG, JPG, GIF, WebP, SVG). Se a detecção falhar, aparece o erro de "inválido" e você pode adicionar manualmente um prefixo data:image/png;base64,.
Por que minha data URL tem quebras de linha?
Alguns codificadores quebram o base64 na coluna 76 (padrão MIME para e-mail). Os navegadores aceitam isso em <img src>, mas alguns sistemas não. Esta ferramenta sempre gera o base64 numa linha só; se você colar uma string com quebras no modo decodificar, removemos os espaços em branco antes de decodificar.