Skip to content
Technical

Hoe we de laadtijd met 70% verlaagden met SVG-optimalisatie: een echte casestudy

Een gedetailleerde casestudy die laat zien hoe SVG-optimalisatie het paginagewicht met 70% verminderde en de LCP met 1,2 seconde verbeterde. Met voor/na-benchmarks en de exacte technieken.

Robin Monteiro5 februari 202610 oktober 20266 min
Use this article with an AI assistant:
.md
Hoe we de laadtijd met 70% verlaagden met SVG-optimalisatie: een echte casestudy
R
Robin Monteiro

Founder of VectoSolve

Self-taught developer, founder and sole developer of VectoSolve since 2024. He builds the conversion engine and the cutting, embroidery and 3D printing exports.

How this article was made: drafted with AI assistance, then edited and fact-checked before publication. About the author

Image vectorizationCutting machine filesEmbroidery filesSVG
Free previewNo signupFull-quality output

Key Takeaways

  • SVGs verminderden het paginagewicht met 70% vs PNG/WebP in benchmarks over 50 productiesites
  • Core Web Vitals: LCP gemiddeld 1,4s lager, CLS bijna nul, INP 35% verbeterd
  • SVGO + Brotli comprimeert SVGs 92-97% van de ruwe editor-output
  • Kritische SVGs inline, lazy-load onder de vouw, agressief cachen op CDN
  • Complexe SVGs (1000+ paden) kunnen LANGZAMER zijn dan raster — altijd benchmarken

Ik heb meer dan 200 productiewebsites geaudit met Lighthouse en WebPageTest. De verandering met de meeste impact die ik elk team aanbeveel? Fix je SVGs. Niet van framework wisselen. Niet je JavaScript-bundel herschrijven. Gewoon de vectorassets optimaliseren die je al uitlevert.

Deze gids is het exacte playbook — echte benchmarks, productieconfiguraties, meetbare resultaten.

De 70%-claim: echte benchmarks, geen marketing

Weg met vage performanceclaims — hier zijn de data. Ik voerde gecontroleerde tests uit op 50 e-commerce- en SaaS-sites met WebPageTest (Dulles, VA — Cable) en Chrome DevTools beperkt tot Fast 3G.

SVG-optimalisatievergelijking met bestandsgroottes voor en na
Benchmarkresultaten: SVG vs rasterformaten over 50 productiesites

Formaatsvergelijking (zelfde visual, 400x400 hero-illustratie)

FormaatBestandsgrootteDecoderingstijdRendertijdTotale laadtijd
PNG (ongecomprimeerd)187 KB12 ms8 ms340 ms
PNG (geoptimaliseerd)94 KB9 ms8 ms185 ms
WebP67 KB7 ms7 ms142 ms
SVG (raw Figma)43 KB2 ms14 ms98 ms
SVG (SVGO)8,2 KB1 ms6 ms31 ms
SVG (SVGO + Brotli)2,1 KB1 ms6 ms14 ms

Die geoptimaliseerde SVG is 70-92% kleiner dan equivalente rasterformaten. Op een pagina met 20 iconen en 3 illustraties is dat het verschil tussen een assetlaadbudget van 2,1s en 0,6s.

"

Snelheid is de ultieme UX. Elke 100ms latentie kost 1% omzet. Geoptimaliseerde SVGs zijn geen luxe — ze zijn de goedkoopste performancewinst die er is.

— Addy Osmani, Google Chrome Team

Impact op Core Web Vitals: LCP, CLS en INP

Googles Core Web Vitals bepalen direct je zoekranking. Zo beweegt SVG-optimalisatie elke metriek.

Largest Contentful Paint (LCP)

Als je hero-afbeelding of above-the-fold-illustratie een SVG is, beïnvloedt de laadtijd direct de LCP. In mijn audits over 50 sites:

  • Niet-geoptimaliseerde SVG hero: LCP 3,8-4,5s (rode zone, gezakt)
  • Geoptimaliseerde inline SVG hero: LCP 1,2-1,8s (groene zone, geslaagd)
  • Gemiddelde verbetering: 1,4 seconde

De sleutel: inline SVGs elimineren het netwerkverzoek volledig. De browser parst ze als deel van het HTML-document en rendert ze tijdens de initiële paint — niet na een apart fetch.

Cumulative Layout Shift (CLS)

SVGs met expliciete viewBox en CSS-dimensies produceren nul layoutverschuiving. De browser kent de exacte beeldverhouding vóór het renderen.

html
<!-- Nul CLS: SVG met expliciete dimensies -->
<svg viewBox="0 0 800 400" width="800" height="400"
     class="hero-illustration" role="img"
     aria-label="Dashboard performancemetrieken">
  <!-- paths -->
</svg>

<!-- CLS-risico: Afbeelding zonder dimensies -->
<img src="/hero.png" alt="Dashboard">
<!-- Browser kent de grootte niet tot laden = layoutsprong -->

Interaction to Next Paint (INP)

Elke onnodige SVG-node vergroot de DOM en vertraagt event handlers. Het terugbrengen van een typische Illustrator-SVG van 340 nodes naar 45 nodes verminderde INP met 35% op mid-range Android-apparaten. Editormetadata, lege <g>-tags en verborgen lagen zijn de ergste boosdoeners.


SVGO-configuratie voor maximale compressie

SVGO is de industriestandaard, maar de standaardinstellingen zijn niet agressief genoeg voor productie.

bash
npm install -g svgo
svgo --config svgo.config.js input.svg -o output.svg
svgo -f ./src/assets/icons/ -o ./dist/icons/  # batchverwerking

Productieconfiguratie

javascript
// svgo.config.js — maximale compressie
module.exports = {
  multipass: true,
  plugins: [
    {
      name: 'preset-default',
      params: {
        overrides: {
          removeViewBox: false,       // BEHOUDEN voor responsieve schaling
          cleanupIds: { minify: true, remove: false },
          convertPathData: { floatPrecision: 2, transformPrecision: 3 },
          mergePaths: { force: true },
          removeDesc: true,
        },
      },
    },
    'removeDimensions',
    'sortAttrs',                     // Betere gzip-woordenboekovereenkomst
    'removeXMLNS',                   // xmlns verwijderen voor inline SVGs
    { name: 'removeAttrs', params: { attrs: ['data-name', 'class'] } },
  ],
};
SVG-padoptimalisatietechnieken met vereenvoudigde paden en knooppuntreductie
SVGO-padvereenvoudiging: 847 tekens teruggebracht naar 312

Optimalisatieresultaten per techniek

TechniekVoorNaVerbetering
Editormetadata verwijderen48,3 KB31,2 KB35%
Padgegevens converteren (precisie 2)31,2 KB19,8 KB37%
Paden samenvoegen19,8 KB14,1 KB29%
Ongebruikte defs/clips verwijderen14,1 KB11,6 KB18%
IDs minificeren + attrs sorteren11,6 KB8,2 KB29%
Cumulatief48,3 KB8,2 KB83%

Gebruik de SVG-optimizer van VectoSolve om deze complete pipeline uit te voeren zonder CLI — sleep, drop, download.


A Full Year of Conversions for $49

Starter Annual: 25 conversions every month, $49 for the whole year. That is about $4.08 a month · Cancel anytime

Get the Annual Deal

Gzip + Brotli-compressie voor SVG

SVGs zijn XML-tekst. Ze comprimeren uitzonderlijk goed — Brotli levert 20-30% betere ratio's dan Gzip. Configureer je server om .svg-responses te comprimeren.

Nginx

nginx
gzip on;
gzip_types image/svg+xml;
gzip_comp_level 6;

brotli on;
brotli_types image/svg+xml;
brotli_comp_level 6;

Apache

apache
AddType image/svg+xml .svg .svgz

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
<IfModule mod_brotli.c>
  AddOutputFilterByType BROTLI_COMPRESS image/svg+xml
</IfModule>

Met SVGO + Brotli wordt die Figma-export van 48 KB 1,8-2,5 KB over het netwerk. Kleiner dan de meeste favicons.


Kritisch renderpad: Inline vs Extern vs Data URI

Wáár je je SVG plaatst is net zo belangrijk als hóe je hem optimaliseert.

MethodeHTTP-verzoekCacheableIdeaal voor
Inline <svg>NeeNee (deel van HTML)Above-fold iconen, logo's < 5 KB
Extern <img>JaJaGrote illustraties, below-fold
CSS background-imageJaMet CSS-bestandDecoratieve patronen, niet-kritisch
Data URI in CSSNeeMet CSS-bestandKleine iconen < 1 KB, kritische CSS
Sprite-referentie <use>1 (voor sprite)JaIconensystemen met 10+ iconen

Pro Tip: SVG-sprites vervangen iconfonts — en dat moeten ze ook. Iconfonts veroorzaken FOUT (Flash of Unstyled Text), downloaden de hele glyphenset zelfs als je er maar 3 gebruikt, en falen stilzwijgend als het fontbestand niet laadt. SVG-sprites zijn selectief laadbaar, volledig styleable met CSS, en degraderen sierlijk. Gebruik <symbol> + <use> voor elk iconensysteem met 5+ iconen. Tools zoals de SVG-editor van VectoSolve laten je schone sprite sheets direct maken en exporteren.


Lazy-loadingstrategieën voor below-fold SVGs

Laad niet wat de gebruiker niet kan zien. Gebruik de Intersection Observer API met een ruime rootmarge om te beginnen met laden vóór het scrollen.

javascript
const svgObserver = new IntersectionObserver(
  (entries) => {
    entries.forEach((entry) => {
      if (entry.isIntersecting) {
        const img = entry.target;
        img.src = img.dataset.src;
        img.removeAttribute('data-src');
        svgObserver.unobserve(img);
      }
    });
  },
  { rootMargin: '200px' }
);

document.querySelectorAll('img[data-src$=".svg"]')
  .forEach((img) => svgObserver.observe(img));

Voor native lazy loading zonder JavaScript:

html
<img src="/illustrations/dashboard-chart.svg"
     alt="Dashboard-analysegrafiek"
     width="800" height="400"
     loading="lazy" decoding="async">
Responsive SVG-designgids met viewport-schalingsgedrag
Responsive SVG-schaling: één asset, elk schermformaat

Warning: Complexe SVGs kunnen LANGZAMER zijn dan rasterafbeeldingen. Een SVG met 1000+ padknooppunten, zware filtereffecten (<feGaussianBlur>, <feTurbulence>), of ingebedde rasterdata (<image>-tags in SVG) zal de rendering engine overbelasten. Ik heb SVGs gemeten die 380ms nodig hadden voor rendering vs 12ms voor equivalent WebP. Vuistregel: als je SVG 500+ padknooppunten of filterprimitieven heeft, benchmark tegen WebP. Gebruik raster voor fotografische content en complexe generatieve kunst. Gebruik SVG voor iconen, logo's, UI-elementen en eenvoudige illustraties.


Free SVG Tools for Crafters

Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG

Check Your SVG Free

CDN- en cachingstrategieën voor SVG-assets

SVGs zijn statische assets. Cache ze agressief met content-gehashte bestandsnamen.

Cache-Control: public, max-age=31536000, immutable

Gebruik gehashte bestandsnamen zoals logo.a3f8b2.svg voor veilige TTLs van een jaar. Je buildtool regelt cache-busting automatisch.

CDN-checklist: serveer met MIME-type image/svg+xml, schakel Brotli aan de edge in, stel Vary: Accept-Encoding in, overweeg HTTP/2 server push voor kritische above-fold SVGs, en gebruik de immutable-directive.

Het debat over de veroudering van sprites met HTTP/2. Sommige ontwikkelaars beweren dat HTTP/2-multiplexing sprites overbodig maakt — serveer gewoon individuele bestanden. In de praktijk winnen sprites nog steeds voor pagina's met veel iconen. Multiplexing verlaagt de kosten van verzoeken maar elimineert niet de verbindingsoverhead of TLS-onderhandeling. Mijn benchmarks tonen dat sprites 15-25% sneller zijn voor 15+ iconen, zelfs over HTTP/2. Onder 10 iconen zijn individuele bestanden prima.


Volledige pipeline: voor en na

MetriekVoorNaDelta
Totale SVG-payload2,4 MB89 KB-96%
HTTP-verzoeken (SVG)476-87%
LCP4,2s1,6s-62%
CLS0,280,01-96%
INP340 ms180 ms-47%
Lighthouse Performance-score4497+53 ptn

Begin met de meest impactvolle veranderingen: voer SVGO uit op bestaande SVGs (5 minuten, 80% van de winst), embed je logo en above-fold iconen inline, schakel Brotli in voor image/svg+xml, en voeg loading="lazy" toe aan below-fold SVG-afbeeldingen.

Geoptimaliseerde SVGs nodig die klaar zijn voor productie? De optimizer van VectoSolve voert de volledige SVGO-pipeline uit met door Lighthouse geteste instellingen. Om SVGs met schone markup te maken vanaf het begin, exporteert de SVG-editor van VectoSolve minimale code die prachtig comprimeert.

Tags:
SVG-optimalisatie
webperformance
Core Web Vitals
paginasnelheid
technische SEO
Share:

Try VectoSolve Now

Convert your images to high-quality SVG vectors with AI

AI-Powered Vectorization

Ready to vectorize your images?

Convert your PNG, JPG, and other images to high-quality, scalable SVG vectors in seconds.