Artikel

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:

  1. HTML-parsingen pauses
  2. Scriptet hentes fra serveren
  3. Scriptet eksekveres
  4. 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:

AttributHentes paralleltEksekveresRækkefølge
IngenNejStraks — blokererBevares
asyncJaStraks ved downloadIkke garanteret
deferJaEfter HTML-parsingBevares
type="module"JaDefer-adfærd som defaultBevares
<!-- 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:

  1. Crawl-fasen — Googlebot henter HTML og identificerer links
  2. 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

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