search

Found

info Visão geral

Converte SVG em uma data URI com codificação percentual mínima (~30% menor que base64), com trecho CSS url() pronto e sobrescrição de cor fill.

📘 Como usar

  1. Cole o markup SVG na área de texto ou solte um arquivo .svg na zona de arrastar
  2. Se quiser, sobrescreva a cor fill para gerar variantes do mesmo ícone
  3. Escolha a aspa externa (dupla ou simples) que combina com seu contexto CSS
  4. Copie a data URI ou o trecho CSS url() pronto para colar

Codificador de Data URI para SVG

Cole ou solte um SVG para codificar.

Substitui cada atributo fill do SVG antes de codificar. Deixe vazio para manter as cores.

Copiado!
Copiado!
SVG original
0 B
Data URI
0 B
Variante base64
0 B

Insira o SVG para ver a diferença de tamanho.

Renderizado como background-image a partir da data URI.
Article

Codificador de Data URI para SVG | Data URIs CSS ~30% menores que base64

A ferramenta converte um SVG em uma data:image/svg+xml URI usando codificação percentual mínima — só escapa os caracteres que quebrariam url(...) — e devolve um trecho background-image: url(...) pronto para colar. Como o base64 sempre infla a carga em ~33%, o percent-encoding costuma economizar entre 20% e 35% em ícones típicos.

💡 Sobre esta ferramenta

O caso clássico é embutir um único ícone SVG no CSS sem ter que instalar um loader de SVG no Webpack ou Vite. Você corta uma requisição HTTP, elimina o piscar de ícone que ainda não carregou, e trocar o ícone no :hover vira uma regra CSS isolada.

Base64 também resolve, mas matematicamente engorda o payload em 33% (cada três bytes viram quatro caracteres). Já o SVG é texto, e a maioria do conteúdo é seguro dentro de uma URL. Os únicos caracteres que de fato precisam de escape são <, >, #, % e a aspa (" ou ') que colide com a envoltura externa do url(...). Essa é a estratégia popularizada pelo url-encoder do Yoksel na época em que SVGs estavam substituindo icon fonts.

A sobrescrita de fill ajuda quando você mantém um ícone monocromático (<svg ... fill="currentColor">) e quer variantes pré-coloridas — por exemplo, um estado :hover rosa e um :active mint — sem duplicar o SVG três vezes.

🧐 Perguntas frequentes

Devo escolher url("...") ou url('...')? A aspa simples é mais segura se a URI vai entrar em PostCSS, Sass ou em um template JS que já usa aspas duplas. Para CSS puro, a versão com aspa dupla exige um escape a menos e fica ligeiramente mais compacta.

A sobrescrita de fill também altera fill="currentColor"? Sim. Ela substitui qualquer atributo fill= que encontrar. Se quiser preservar o comportamento de currentColor, deixe o campo vazio.

O base64 chega a ser mais leve em algum caso? Eventualmente. SVGs muito aninhados (muitos <), com " em estilos inline, ou exportados por ferramentas como Sketch com declaração XML e comentários, podem ultrapassar os 33% de overhead do base64 depois do percent-encoding. Por isso a ferramenta mostra os três tamanhos lado a lado: dá para decidir com o número real, não com a regra geral.

O atributo xmlns é obrigatório? Para consumo via background-image: url(...), sim. O navegador processa a URI pelo decodificador de imagem, que exige um namespace declarado. A ferramenta não insere o atributo automaticamente; ela codifica exatamente o que você colar.

E ícones acima de 256 KB? O seletor de arquivos limita em 256 KB, mas na prática qualquer SVG acima de ~10 KB tende a render melhor servido como arquivo separado: o stylesheet fica enxuto e o cache do navegador volta a ajudar.

📚 Curiosidades

O atalho de "percent-encoding mínimo, só nos caracteres que quebram url()" se espalhou a partir do url-encoder do Yoksel em 2015-2016, quando os SVGs começaram a tomar o lugar das icon fonts. A sintaxe arbitrária de background do Tailwind (bg-[url('data:image/svg+xml,…')]) é a herdeira direta: mesma codificação, mesma filosofia de arquivo único, apenas embrulhada em utility classes.