DOM — Document Object Model og JavaScript-rendering
DOM er browserens live-version af siden — JavaScript ændrer DOM dynamisk, og det er Googlebots endelige analyse-objekt efter rendering.
DOM — Document Object Model — er browserens live-repræsentation af en webside som et hierarkisk træ af objekter. For SEO er DOM afgørende fordi Googlebot under rendering analyserer det endelige DOM — ikke nødvendigvis den rå HTML-kildekode der ses med Vis Kildekode. Forstår du forskellen på kildekode og DOM, forstår du hvorfor JavaScript-genereret indhold kan mangle fra Googles indeks i dage til uger efter publicering.
Hvad er DOM?
DOM — Document Object Model — er browserens live-repræsentation af en webside som et hierarkisk træ af objekter. Når browseren modtager HTML fra serveren, parser den koden og bygger en DOM-struktur: hvert HTML-element bliver en node i træet med egenskaber, attributter og relationer til andre nodes.
For SEO er DOM afgørende fordi Googlebot under rendering analyserer det endelige DOM — ikke nødvendigvis den rå HTML-kildekode. Det er forskellen der afgør om Googles crawler ser dit JavaScript-genererede indhold.
DOM-strukturen
Et simpelt HTML-dokument:
<!DOCTYPE html>
<html>
<head>
<title>Min side</title>
</head>
<body>
<h1>Velkommen</h1>
<p>Indhold her</p>
</body>
</html>
Bliver til et DOM-træ med document som rod, html som child, og head/body som children af html. Hvert element, tekstnode og attribut er en del af træet.
DOM vs HTML-kildekode
Dette er den kritiske forskel for SEO:
HTML-kildekoden
HTML-kildekoden er den rå tekst serveren sender — hvad du ser med “Vis kildekode” i browseren. Den er statisk og ændrer sig ikke efter at serveren har sendt den.
DOM’en
DOM’en er den levende repræsentation i browseren. JavaScript kan tilføje, fjerne og ændre nodes i DOM’en dynamisk, og det er DOM’en der bestemmer hvad brugeren faktisk ser. En React-applikation sender måske blot <div id="root"></div> som kildekode — efter JavaScript har kørt, kan DOM’en indeholde hundredvis af elementer med alt sidens indhold.
Har du indhold der kun er synligt i DOM’en og ikke i kildekoden, kræver det at Googlebot renderer siden for at se det.
JavaScript og DOM-manipulation
JavaScript kan ændre DOM’en på utallige måder:
document.createElement()— tilføjer nye elementerinnerHTML = '...'— erstatter indhold i et elementclassList.add()/classList.remove()— ændrer CSS-klassersetAttribute()— ændrer attributter
Frameworks som React, Vue og Angular bruger alle DOM-manipulation som fundament. De bygger hele applikationens UI ved at manipulere DOM’en via JavaScript.
Virtual DOM
React og Vue bruger konceptet Virtual DOM — en let in-memory kopi af den faktiske DOM. Når noget ændres, sammenligner frameworket den nye virtual DOM med den forrige (diffing), og opdaterer kun de dele af den rigtige DOM der faktisk ændrede sig.
Virtual DOM er en performance-optimering for JavaScript-frameworks, men ændrer ikke på SEO-problemstillingen: indholdet er stadig JavaScript-genereret og kræver rendering.
Hvad Googlebot ser
Googlebots rendering-proces foregår i to faser:
Fase 1 — Crawl uden rendering
Googlebot henter HTML-kildekoden. Indhold synligt direkte i kildekoden indekseres straks, og crawler fortsætter til næste URL i køen.
Fase 2 — Rendering
Googlebot placerer siden i en rendering-kø, kører JavaScript og analyserer det endelige DOM. JavaScript-genereret indhold indekseres herefter — men rendering kan ske sekunder til dage efter det første crawl. I mellemtiden kan indhold der kun eksisterer i DOM’en, mangle fra Googles indeks.
DOM-størrelse og performance
En for stor DOM er et performance-problem. Google anbefaler:
- Maksimalt 1.500 nodes i alt
- Maksimal dybde på 32 niveauer
- Maksimalt 60 child nodes under ét parent-element
En oppustet DOM (DOM bloat) forlænger renderingstid, øger hukommelsesbrug og forsinker JavaScript-eksekvering — alt sammen negativt for Core Web Vitals.
DOM og SEO — den praktiske konsekvens
Vil du sikre at Googlebot ser dit indhold, er den sikreste løsning at indholdet er synligt i HTML-kildekoden — ikke kun i DOM’en efter JavaScript-rendering. Det opnås ved server-side rendering (SSR) eller static site generation (SSG), hvor HTML genereres på serveren og sendes færdig til browseren.
Kan jeg tjekke hvad Googlebot ser i DOM’en? Google Search Consoles URL Inspection Tool viser “Rendered HTML” — det er HTML-outputtet af Googlebots rendering og svarer til DOM’en efter JavaScript-eksekvering.
Er DOM og HTML det samme? Nej. HTML er kildekoden. DOM er browserens live-repræsentation som kan ændres af JavaScript. På sider med meget JavaScript kan de to være meget forskellige.
Hvad er DOM-manipulation? DOM-manipulation er JavaScript-kode der tilføjer, ændrer eller fjerner elementer i DOM-træet dynamisk — typisk som reaktion på brugerinteraktion eller data fra en API.
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?
- Browser rendering pipeline — Fra HTML til pixels
- Client-side rendering — CSR og SEO-udfordringer
- CSS containment — Isolér rendering og accelerér layout
- 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 bundle-optimering — Code splitting, tree shaking og analyse
- 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
- JavaScript-rendering fejl — Når Googlebot ikke ser dit indhold
- Kritisk renderingsti — Hvad browseren gør før du ser noget
- 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
- Scripts og SEO — render-blocking, async og defer
- Server-side rendering — SSR og fordele for SEO
- Service Workers — Offline caching og PWA performance
- Static site generation — SSG og SEO-fordele ved statiske sider
- Web Components og SEO — Custom elements og søgesynlighed
- Web Workers — Parallel JavaScript uden main thread-blokning
Ofte stillede spørgsmål
- Hvad er DOM?
- DOM — Document Object Model — er browserens live-repræsentation af en webside som et hierarkisk træ af objekter. Når browseren modtager HTML fra serveren, parser den koden og bygger en DOM-struktur: hvert HTML-element bliver en node i træet med egenskaber, attributter og relationer til andre nodes. JavaScript kan manipulere DOM'en dynamisk — tilføje, ændre og fjerne elementer — og det er DOM'en der bestemmer hvad brugeren faktisk ser.
- Hvad er forskellen på HTML-kildekode og DOM?
- HTML-kildekoden er den rå tekst serveren sender — hvad du ser med 'Vis kildekode' i browseren. Den er statisk og ændrer sig ikke. DOM'en er den levende repræsentation i browseren der kan ændres dynamisk af JavaScript. En React-applikation sender måske blot <div id=root></div> som kildekode, men efter JavaScript har kørt kan DOM'en indeholde hundredvis af elementer med alt sidens indhold. Googlebots rendering analyserer det endelige DOM — ikke nødvendigvis kildekoden.
- Hvad anbefaler Google om DOM-størrelse?
- Google anbefaler at DOM'en maksimalt har 1.500 nodes i alt, maksimal dybde på 32 niveauer og maksimalt 60 child nodes under ét parent-element. En for stor DOM forsinker renderingstid, øger hukommelsesbrug og forsinker JavaScript-eksekvering — alt negativt for Core Web Vitals og dermed ranking. Overdreven brug af JavaScript-frameworks der genererer mange DOM-noder kan hurtigt overskride disse grænser.
- Hvad er Virtual DOM og hvad har det med SEO at gøre?
- Virtual DOM er en in-memory kopi af DOM-træet brugt af React og Vue til effektiv opdatering — frameworket sammenligner ny og gammel Virtual DOM (diffing) og opdaterer kun ændrede dele af den rigtige DOM. Virtual DOM er en performance-optimering for JavaScript-applikationer, men løser ikke SEO-problemet: indholdet er stadig JavaScript-genereret og kræver Googlebots rendering-pipeline. SSR og SSG er løsningen, ikke Virtual DOM.
- Hvad viser Rendered HTML i Google Search Console's URL Inspection Tool?
- Rendered HTML er HTML-outputtet af Googlebots rendering — det svarer til det DOM Google faktisk indekserer efter JavaScript-eksekvering. Sammenlign det med sidens kildekode (Ctrl+U): er de ens, er siden statisk og korrekt. Er der store forskelle, afhænger indhold af JavaScript-rendering. Mangler kritiske elementer som title-tag, H1 eller brødtekst i Rendered HTML, indekseres de ikke korrekt.
Placering i ordbogen
- API — Hvad er API og hvad betyder det for SEO?
- Browser rendering pipeline — Fra HTML til pixels
- Client-side rendering — CSR og SEO-udfordringer
- CSS containment — Isolér rendering og accelerér layout
- 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 bundle-optimering — Code splitting, tree shaking og analyse
- 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
- JavaScript-rendering fejl — Når Googlebot ikke ser dit indhold
- Kritisk renderingsti — Hvad browseren gør før du ser noget
- 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
- Scripts og SEO — render-blocking, async og defer
- Server-side rendering — SSR og fordele for SEO
- Service Workers — Offline caching og PWA performance
- Static site generation — SSG og SEO-fordele ved statiske sider
- Web Components og SEO — Custom elements og søgesynlighed
- Web Workers — Parallel JavaScript uden main thread-blokning