Scripts og SEO — render-blocking, async og defer
Render-blocking scripts forsinker sidens indlæsning og påvirker både Core Web Vitals og Googlebots evne til at crawle siden effektivt.
Scripts og dermed JavaScript-håndtering er en primær årsag til dårlig web performance og reduceret crawlbarhed for søgemaskiner. Render-blocking scripts forsinker First Contentful Paint og Largest Contentful Paint — og tunge tredjepartsscripts er en hyppig årsag til dårlige Core Web Vitals-scores. For SEO er det afgørende at kritisk indhold som links, overskrifter og tekst ikke udelukkende afhænger af JavaScript-eksekvering. Standardopførslen for <script>-tags blokerer HTML-parsingen — og det har direkte konsekvenser for både brugere og Googlebot.
Hvad er render-blocking scripts?
Når browseren møder et <script>-tag uden attributter, sker der tre ting:
- HTML-parsingen pauses
- Scriptet hentes fra serveren
- Scriptet eksekveres
- HTML-parsingen genoptages
<!-- Render-blocking — undgå dette i <head> -->
<script src="/scripts/analytics.js"></script>
I perioden fra scripts begynder at hente til de er eksekveret, er siden blank for brugeren. Det forsinker First Contentful Paint (FCP) og Largest Contentful Paint (LCP) — begge Core Web Vitals.
async, defer og module
De tre attributter ændrer hvornår og hvordan scriptet eksekveres:
| Attribut | Hentes parallelt | Eksekveres | Rækkefølge |
|---|---|---|---|
| Ingen | Nej | Straks — blokerer | Bevares |
async | Ja | Straks ved download | Ikke garanteret |
defer | Ja | Efter HTML-parsing | Bevares |
type="module" | Ja | Defer-adfærd som default | Bevares |
<!-- Anbefalet for tredjepartsscripts -->
<script async src="https://www.googletagmanager.com/gtag/js"></script>
<!-- Anbefalet for scripts der afhænger af DOM -->
<script defer src="/scripts/main.js"></script>
<!-- ES-modul — implicit defer -->
<script type="module" src="/scripts/app.js"></script>
Placering: <head> vs. <body>
Den klassiske tommelfingerregel — “placer scripts inden </body>” — er stadig gyldig for render-blocking scripts. Men med defer kan scripts placeres i <head> uden at blokere rendering, fordi eksekveringen udskydes til efter HTML-parsingen er færdig.
<head> med defer er i dag den foretrukne løsning. Det giver bedre LCP end placering i bunden og bevarer korrekt rækkefølge.
Tredjepartsscripts og SEO
Tredjepartsscripts (analytics, chat-widgets, A/B-testplatforme, annonce-tags) er en af de hyppigste årsager til dårlige Core Web Vitals. Problemer inkluderer:
- INP-forøgelse — event handlers fra tredjepartsscripts konkurrerer om main thread
- LCP-forsinkelse — tunge scripts forsinker rendering af hero-indhold
- Layout shifts — scripts der injicerer indhold kan forårsage CLS
Strategien er at loade tredjepartsscripts med async eller defer, udskyde ikke-kritiske scripts til efter interaktion (addEventListener('click', loadChat)) og revurdere om hvert script er nødvendigt.
Hvad Googlebot gør med scripts
Googlebot kører en Chromium-baseret renderer der eksekverer JavaScript. Rendering sker i to faser:
- Crawl-fasen — Googlebot henter HTML og identificerer links
- Rendering-køen — Googlebots server renderer siden med JavaScript (udskudt)
Konsekvensen er at indhold der udelukkende genereres via JavaScript — links, tekst, structured data — kan blive indekseret med forsinkelse eller slet ikke, hvis rendering mislykkes.
Kritisk renderingsti bør altid leveres i HTML — ikke udelukkende via JavaScript. Det gælder links til andre sider, H1-overskrift og primær tekst.
Sidst opdateret: marts 2026. Denne artikel er en del af Stegger.dk’s SEO-ordbog. → Denne artikel er en del af JavaScript og rendering — Scripts, DOM og CSR vs SSR.
Andre artikler i samme emne
- API — Hvad er API og hvad betyder det for SEO?
- Client-side rendering — CSR og SEO-udfordringer
- DOM — Document Object Model og JavaScript-rendering
- Google Tag Manager — Tag-håndtering og SEO-tracking
- Hydration — SSR og client-side JavaScript kombineret
- JavaScript — Hvad er JavaScript og hvad betyder det for SEO?
- JavaScript og crawling — Hvad Googlebot ser og ikke ser
- JavaScript Rendering og SEO — Hvad Googlebot ser
- JavaScript SEO — Hvad Googlebot kan og ikke kan
- JavaScript-debugging til SEO — Find rendering-problemer
- Next.js og SEO — Server-side rendering og SEO
- Prerendering — Forhåndsrenderet HTML til crawlere
- React og SEO — JavaScript-rendering og søgesynlighed
- Rendering — Hvad Googlebot ser efter JavaScript-rendering
- Server-side rendering — SSR og fordele for SEO
- Static site generation — SSG og SEO-fordele ved statiske sider
- Web Components og SEO — Custom elements og søgesynlighed
Ofte stillede spørgsmål
- Hvad er forskellen på async og defer?
- Begge henter scriptet parallelt med HTML-parsing. async eksekverer scriptet så snart det er hentet — og afbryder HTML-parsingen. defer eksekverer scriptet efter hele HTML-dokumentet er parset, men inden DOMContentLoaded. Brug async til uafhængige scripts (analytics, tracking). Brug defer til scripts der afhænger af DOM'en.
- Påvirker tredjepartsscripts crawl budget?
- Indirekte. Tredjepartsscripts forsinker sidens rendering og kan øge crawl-tid per side, men påvirker ikke crawl budget direkte (antal sider Googlebot crawler). Det primære problem er at tunge tredjepartsscripts hæver LCP og INP, hvilket er Core Web Vitals-signaler.
- Kan Googlebot eksekvere JavaScript?
- Ja, men med forsinkelse. Googlebot parser og renderer JavaScript som en moderne browser — men rendering sker i en separat kø og kan blive udskudt i dage eller uger. Kritisk indhold (links, tekst, structured data) bør ikke udelukkende afhænge af JavaScript-rendering.
- Hvad er den anbefalede scriptstrategi for tredjepartsscripts som analytics?
- Brug async på analytics-scripts som Google Analytics og Tag Manager — de er uafhængige og behøver ikke vente på DOM. Overvej at udskyde ikke-kritiske scripts til efter load-event eller ved brugerinteraktion. Scripts der injicerer indhold tidligt i sideindlæsningen bør bruges med defer for at undgå LCP-forsinkelse og layout shifts.
- Hvad er Critical CSS og hvordan er det relateret til render-blocking?
- Critical CSS er de styles der er nødvendige for at rendere above-the-fold indhold. Inline Critical CSS direkte i <head> eliminerer render-blocking CSS-fil-request og forbedrer FCP. Resten af CSS loades non-blocking med <link rel='preload' as='style'>. Det er en af de mest effektive FCP-optimeringer for sider med store CSS-bundler.
Placering i ordbogen
- API — Hvad er API og hvad betyder det for SEO?
- Client-side rendering — CSR og SEO-udfordringer
- DOM — Document Object Model og JavaScript-rendering
- Google Tag Manager — Tag-håndtering og SEO-tracking
- Hydration — SSR og client-side JavaScript kombineret
- JavaScript — Hvad er JavaScript og hvad betyder det for SEO?
- JavaScript og crawling — Hvad Googlebot ser og ikke ser
- JavaScript Rendering og SEO — Hvad Googlebot ser
- JavaScript SEO — Hvad Googlebot kan og ikke kan
- JavaScript-debugging til SEO — Find rendering-problemer
- Next.js og SEO — Server-side rendering og SEO
- Prerendering — Forhåndsrenderet HTML til crawlere
- React og SEO — JavaScript-rendering og søgesynlighed
- Rendering — Hvad Googlebot ser efter JavaScript-rendering
- Server-side rendering — SSR og fordele for SEO
- Static site generation — SSG og SEO-fordele ved statiske sider
- Web Components og SEO — Custom elements og søgesynlighed