Lazy loading voor video's implementeren | Ralfvanveen.com
4,9 ★★★★★ 97 reviews
Techniek · Performance · Video

Lazy loading voor video's implementeren.

Lazy loading voor video's: vervang directe iframe-embeds door thumbnail + Intersection Observer. Volledig HTML/CSS/JS voorbeeld, performance-impact en CMS-plugin alternatieven.

Door Ralf van VeenUpdate: 4 augustus 2025Leestijd: 6 min

01 — waaromWaarom lazy loading voor video? De voor/na vergelijking

Een standaard YouTube- of Vimeo-embed laadt automatisch meerdere externe scripts, thumbnails en iframe-resources bij elke paginabezoek. Op pagina's met video's onderaan = nodeloos zware initial-load. De oplossing: thumbnail tonen, iframe pas laden bij scroll-in-view. Hieronder de performance-impact in cijfers. Voor breder context op image-versie zie lazy loading voor afbeeldingen.

Performance-impact · voor vs naYouTube embed
Voor — directe embed
Initial requests~12 calls
JS-payload~580 KB
LCP (mobile)3.4s
PageSpeed mobile62/100
YouTube cookiesDirect geset
Na — lazy loading
Initial requests~2 calls
JS-payload~15 KB
LCP (mobile)1.8s
PageSpeed mobile91/100
YouTube cookiesPas bij klik
thumbnail · hqdefault.jpg
data-video-id="dQw4w9WgXcQ" · niet geladen tot scroll

Bonus: omdat de YouTube iframe pas wordt geladen na een user-interactie of scroll, worden ook YouTube/Google cookies pas dan geplaatst. Dat is een privacy-verbetering die meteen ook GDPR-compliance vereenvoudigt.

02 — codeVolledige HTML/CSS/JS implementatie (YouTube)

Hieronder een werkende, dependency-vrije implementatie. Werkt met de native Intersection Observer API (alle moderne browsers). Voor Vimeo: vervang YouTube-URL door player.vimeo.com/video/....

3 code-blokken · HTML + CSS + JScopy-paste klaar

HTML — placeholder met thumbnail:

<div class="video-wrapper" data-video-id="dQw4w9WgXcQ">
  <img src="https://img.youtube.com/vi/dQw4w9WgXcQ/hqdefault.jpg"
       alt="Video preview" loading="lazy">
  <button class="play-button" aria-label="Video afspelen"></button>
</div>

CSS — 16:9 wrapper met centered play-button:

.video-wrapper {
  position: relative;
  aspect-ratio: 16/9;
  background: #000;
  cursor: pointer;
}
.play-button {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  background: #ff0000;
}

JavaScript — Intersection Observer, vervangt placeholder bij scroll:

const wrappers = document.querySelectorAll('.video-wrapper');

const observer = new IntersectionObserver((entries) => {
  entries.forEach((entry) => {
    if (entry.isIntersecting) {
      const id = entry.target.getAttribute('data-video-id');
      entry.target.innerHTML = `<iframe src="https://www.youtube.com/embed/${id}"></iframe>`;
      observer.unobserve(entry.target);
    }
  });
});

wrappers.forEach((w) => observer.observe(w));

03 — pluginsCMS-plugin alternatieven (zonder code)

Voor WordPress, Shopify of andere CMS-systemen zijn er kant-en-klare plugins die hetzelfde resultaat opleveren zonder custom code. Hieronder mijn voorkeuren per platform.

3 CMS-plugin opties · no-code lazy loadingper platform
WordPress: WP Rocket of Perfmatters
Beide ondersteunen lazy loading voor YouTube/Vimeo out of the box. Perfmatters ($24.95/jaar) heeft een dedicated "YouTube preview thumbnail" optie. WP Rocket ($59/jaar) heeft het in zijn lazy-load module. Activeren + klaar.
Shopify: Lazy Vimeo & Youtube of theme-customizer
Diverse apps in Shopify App Store. Of binnen je theme's customizer kun je vaak een "deferred video"-toggle aanzetten. Native code is alternatieve route met dezelfde performance-winst.
Webflow / Wix / Squarespace: native of custom code
Geen native lazy-loading voor video. Embed custom HTML block met de code uit sectie 02. Of vermijd directe YouTube embeds — link in plaats daarvan naar YouTube met geoptimaliseerde thumbnail.

04 — faqVeelgestelde vragen

FAQ · 3 vragenklik om te openen
Wat is de SEO-impact van lazy loading voor video's?
Lazy loading voor video's heeft een sterk positief SEO-effect via meerdere routes. Vijf concrete effecten. (1) Core Web Vitals verbeteren. LCP daalt vaak met 1-2 seconden bij pages met embedded videos. INP en CLS ook beter zonder zware iframe-render. Direct Page Experience ranking-signaal. (2) PageSpeed-scores 20-30 punten omhoog. Vooral mobile-impact groot. Google rewards snelle sites met betere rankings. (3) Crawl-budget efficiëntie. Snellere page-loads = Googlebot kan meer pages crawlen per dag. Indirect maar significant voor grote sites. (4) Bounce-rate verlaagt. Snellere site = users blijven langer. Behavioral signal naar Google. (5) Geen negatieve impact op video-indexering. Google indexeert video's via VideoObject schema of YouTube's eigen sitemap — niet via initial DOM-presence. Lazy loading verandert dit niet. Voor breder context zie lazy loading voor afbeeldingen.
Werkt lazy loading ook voor Vimeo of zelf-gehoste video's?
Ja — principe is identiek, syntax wijzigt. Zes implementatie-varianten. (1) Vimeo embeds: vervang YouTube URL door player.vimeo.com/video/[ID]. Vimeo heeft eigen thumbnail-API via vimeo.com/api/v2/video/[ID].json. (2) Zelf-gehoste HTML5 video: gebruik <video preload="none" poster="thumbnail.jpg">. Native browser-feature, geen JS nodig. (3) Wistia/Brightcove voor business-video: hebben eigen lazy-load options in dashboard. Vaak default aan. (4) Twitch/Vimeo Live: complexer door real-time aspect. Lazy-load thumbnail + load player bij click best approach. (5) Vimeo background-video voor hero sections: niet lazy-loaden — is visueel essential. Wel: WebM-format voor kleinere file-size. (6) Multiple videos op één page: één Intersection Observer voor alle wrappers werkt fine. Performance scales good. Voor breder context zie afbeeldingen comprimeren.
Welke alternatieven zijn er als ik geen lazy loading wil implementeren?
Zes andere methodes om video-impact te beperken. (1) Verwijder embedded video onder-the-fold. Vervang door link naar YouTube-pagina. Eenvoudigste fix. (2) Use video als achtergrond met preload="metadata" of preload="none". Browser laadt minimum tot user interactie. (3) Reduce auto-loading thumbnails. Plaatsen alleen video op pages die het echt nodig hebben — niet op elke blog-page. (4) Video op subdomain hosten. Cookies en scripts geïsoleerd van main domain. Voor Privacy-compliance + main domain-speed. (5) Convert naar GIF voor hero sections. Klein dan video, geen scripts. Voor korte loops. (6) Video sitemaps + VideoObject schema. Voor SEO-voordeel ook zonder embed: video's discoverable via Video Search ondanks geen embed in HTML. Voor breder context zie sessieduur verbeteren.

Video-performance audit voor jouw site?

Volledige audit van embedded media impact, implementatie van lazy loading voor video én images, plus YouTube/Vimeo embed-strategie review. Inclusief Core Web Vitals-monitoring vóór en na deployment.

Plan een gesprek met Ralf →