Semantisk kode — Kode med betydning og kontekst
Semantisk kode bruger elementer der beskriver mening — article i stedet for div, button i stedet for a-styled-as-button.
Semantisk kode er kode der beskriver hvad noget er — ikke kun hvordan det ser ud. I HTML-kontekst betyder det at bruge elementer der kommunikerer indholdets rolle: <article> frem for <div class="artikel">, <button> frem for <a> stylet som knap. For SEO er semantisk kode relevant fordi Googlebot bruger HTML-semantik til at forstå sidestruktur, indholdshierarki og navigationsrelationer — og bedre forståelse kan forbedre relevansmatching i søgeresultater.
Hvad er semantisk kode?
Semantisk kode er kode der beskriver hvad noget er — ikke bare hvordan det ser ud. Et semantisk HTML-element kommunikerer sin rolle og sit formål til browsere, søgemaskiner og hjælpemidler som skærmlæsere.
Kontrasten er ikke-semantisk kode der bruger generiske elementer (<div>, <span>) til alt, og styler dem til at se korrekt ud — men uden at koden selv fortæller noget om indholdet.
Div-soup — problemet
“Div-soup” er betegnelsen for markup der bruger <div> til næsten alt:
<!-- Div-soup — ingen semantisk information -->
<div class="header">
<div class="nav">
<div class="nav-item"><a href="/">Hjem</a></div>
<div class="nav-item"><a href="/om/">Om</a></div>
</div>
</div>
<div class="main">
<div class="article">
<div class="article-title">Min artikel</div>
<div class="article-body">Indhold her...</div>
</div>
</div>
Fra et visuelt perspektiv kan dette se korrekt ud. Men koden fortæller intet om at dette er navigation, en artikel, eller en overskrift.
Semantisk HTML — løsningen
<!-- Semantisk markup — klar betydning -->
<header>
<nav>
<ul>
<li><a href="/">Hjem</a></li>
<li><a href="/om/">Om</a></li>
</ul>
</nav>
</header>
<main>
<article>
<h1>Min artikel</h1>
<p>Indhold her...</p>
</article>
</main>
Koden her kommunikerer eksplicit at dette er et site-header, en navigation, en artikel og en primær overskrift.
Semantik og Googles forståelse
Google bruger semantisk markup til at forstå sidestruktur og indholdshierarkiet.
<article> signalerer selvstændigt indhold — en blogpost, nyhedsartikel, produktbeskrivelse. <nav> indikerer navigationslinks, og Google behandler disse links anderledes end redaktionelle links. <header> og <footer> afgrænser sidens eller artiklens ramme, og Google forstår at indhold her er sekundært i forhold til <main>.
<main> markerer sidens primære indhold og er det Google prioriterer højest ved indeksering. <aside> er supplerende indhold — sidebar, relaterede artikler — og vægtes typisk lavere end <main>-indholdet. Heading-hierarkiet fra <h1> til <h6> er ligeledes semantisk struktur: <h1> er sidens primære emne, <h2> er underemner, og korrekt heading-hierarki er et direkte SEO-signal.
Semantik og accessibility
Skærmlæsere navigerer sider via semantisk markup. Brugere med synshandicap kan:
- Hoppe direkte til
<main>(Spring navigation over) - Navigere via overskrift-liste (
<h1>,<h2>…) - Forstå om de er i
<nav>,<article>eller<aside>
Ikke-semantisk kode gør disse navigationsstrategier umulige. Semantisk kode er tilgængelighed.
button vs a — den semantiske forskel
En af de hyppigste semantiske fejl:
<!-- Forkert — anchor-tag styled som knap -->
<a href="#" class="btn btn-primary" onclick="submitForm()">Send formular</a>
<!-- Korrekt — button til handlinger -->
<button type="submit">Send formular</button>
<a>er til navigation — det linker til en URL (side, dokument, anker)<button>er til handlinger — det udfører noget (submit, toggle, åbn modal)
Den semantiske forskel har konkrete konsekvenser: skærmlæsere annoncerer <button> som “knap” og <a> som “link”, så brugeren ved hvad der vil ske. <button> kan aktiveres med både Enter og Space, mens <a> kun aktiveres med Enter. Søgemaskiner følger desuden <a href>-links — de følger ikke button-klik.
CSS klasse-navngivning og BEM
BEM (Block Element Modifier) er en CSS-navngivningsmethodologi der bringer semantisk klarhed til CSS-klasser:
<!-- BEM-navngivning -->
<nav class="nav">
<ul class="nav__liste">
<li class="nav__punkt nav__punkt--aktiv">
<a class="nav__link" href="/">Hjem</a>
</li>
</ul>
</nav>
Konventionen: blok__element--modifier. Klasse-navnene beskriver komponentstrukturen, ikke det visuelle udseende.
BEM ændrer ikke direkte SEO, men systematisk navngivning reducerer sandsynligheden for at udvikle ikke-semantisk, forvirrende markup.
Semantik i JavaScript-frameworks
React, Vue og Angular genererer HTML via JavaScript. Semantisk kode gælder her fuldt ud — det er stadig HTML der renderes i DOM’en:
// Ikke-semantisk React
<div onClick={handleClick} className="button">Send</div>
// Semantisk React
<button type="button" onClick={handleClick}>Send</button>
Frameworket ændrer ikke semantikkens vigtighed — det ændrer bare hvor koden skrives.
Er semantisk kode det samme som structured data?
Nej. Semantisk HTML bruger korrekte HTML-elementer med iboende betydning. Structured data er eksplicitte, maskinlæsbare annotations (JSON-LD, Microdata) der fortæller søgemaskiner præcis information om indholdet. Begge er vigtige og supplerer hinanden.
Påvirker div-soup SEO direkte?
Direkte rangering baseret udelukkende på div-soup er ikke dokumenteret. Men ikke-semantisk kode gør det sværere for Google at forstå sidestruktur, forringer tilgængelighed og øger risikoen for parsing-fejl.
Hvad er ARIA og er det det samme som semantisk HTML?
ARIA (Accessible Rich Internet Applications) er attributter der tilføjer semantik til elementer der mangler det — typisk til JavaScript-widgets. Korrekt semantisk HTML er foretrukket frem for ARIA: brug native semantiske elementer når de eksisterer.
Sidst opdateret: marts 2026. Denne artikel er en del af Stegger.dk’s SEO-ordbog. → Denne artikel er en del af HTML-struktur — Tags, elementer og semantik.
Andre artikler i samme emne
- Broken HTML og SEO — Hvordan markup-fejl skader rangering
- Frontend — Hvad er frontend-kode og hvad betyder det for SEO?
- Grundlæggende webkode — HTML, CSS og JavaScript
- Headings — H1-H6 hierarki og SEO
- HTML — Grundlæggende guide til HyperText Markup Language
- HTML body — Indholdssektionen og semantisk struktur
- HTML head — Hvad indeholder head-sektionen?
- HTML-attributter — Alt, href, id, class og SEO-relevante attributter
- HTML-elementer — Struktur og semantik
- HTML-tags — De vigtigste tags for SEO
- HTML-validering — W3C validator og kode-fejl
- Kildekode — Hvad er kildekode og hvad ser Googlebot?
- Kodekvalitet og validering — Semantik, accessibility og ren kode
- Markup-sprog — HTML, XML og semantisk markup
- Responsivt design — Mobile-first og SEO
- Semantisk HTML — Hvad er semantisk markup og hvorfor det betyder noget
- Web Accessibility — Tilgængelighed og SEO
Ofte stillede spørgsmål
- Hvad er semantisk kode?
- Semantisk kode er kode der beskriver hvad noget er — ikke blot hvordan det ser ud. Et semantisk HTML-element kommunikerer sin rolle og sit formål til browsere, søgemaskiner og hjælpemidler. <article> fortæller at dette er et selvstændigt indholdsafsnit. <nav> fortæller at dette er et navigationsområde. <button> fortæller at dette er en handling. Det er kontrasten til ikke-semantisk kode, der bruger <div> og <span> til alt og overlader al fortolkning til CSS-klassenavne.
- Hvad er forskellen på semantisk kode og structured data?
- Semantisk HTML bruger korrekte HTML-elementer med iboende semantisk betydning — <article>, <nav>, <h1> — til at kommunikere indholdets rolle. Structured data (JSON-LD, Microdata) er eksplicitte, maskinlæsbare annotations der fortæller søgemaskiner præcise fakta om indholdet: at dette er et produkt med en bestemt pris, en opskrift med en bestemt tilberedningstid. Begge er vigtige og supplerer hinanden — semantisk HTML er fundamentet, structured data er det ekstra lag.
- Hvad er div-soup og hvorfor er det et problem?
- Div-soup er betegnelsen for HTML-markup der bruger <div>-elementer til næsten alt, stylet via CSS-klasser som class=header, class=nav, class=artikel. Fra et visuelt perspektiv kan dette se korrekt ud, men koden kommunikerer intet om hvad elementerne repræsenterer. Googlebot og skærmlæsere modtager ingen semantiske signaler om navigationsstruktur, artikelgrænser eller indholdshierarkiet. Semantisk HTML løser dette ved at erstatte disse divs med <header>, <nav>, <article> og <h1>.
- Er semantisk kode det samme som structured data?
- Nej — det er to lag der supplerer hinanden. Semantisk HTML bruger korrekte HTML-elementer med iboende betydning: <article>, <nav>, <h1>. Structured data (JSON-LD) er eksplicitte maskinlæsbare annotations der fortæller søgemaskiner præcise fakta om indholdet: pris, anmeldelsesscore, opskriftstid. Semantisk HTML er fundamentet for kodestruktur; structured data er det ekstra informationslag der aktiverer rich results.
- Hvad er konsekvensen af at bruge <h1> til styling frem for struktur?
- At bruge <h1>-<h6> til styling frem for indholdshierarki sender forkerte signaler til Googlebot og skærmlæsere. Googlebot bruger overskriftshierarkiet som et indholdskort — <h1> er sidens primære emne, <h2> er underemner. Hvis <h1> bruges til store skrift-størrelser uanset indhold, mister Googlebot et præcist signal om hvad siden handler om. Brug CSS til styling, semantiske overskrifter til struktur.
Placering i ordbogen
- Broken HTML og SEO — Hvordan markup-fejl skader rangering
- Frontend — Hvad er frontend-kode og hvad betyder det for SEO?
- Grundlæggende webkode — HTML, CSS og JavaScript
- Headings — H1-H6 hierarki og SEO
- HTML — Grundlæggende guide til HyperText Markup Language
- HTML body — Indholdssektionen og semantisk struktur
- HTML head — Hvad indeholder head-sektionen?
- HTML-attributter — Alt, href, id, class og SEO-relevante attributter
- HTML-elementer — Struktur og semantik
- HTML-tags — De vigtigste tags for SEO
- HTML-validering — W3C validator og kode-fejl
- Kildekode — Hvad er kildekode og hvad ser Googlebot?
- Kodekvalitet og validering — Semantik, accessibility og ren kode
- Markup-sprog — HTML, XML og semantisk markup
- Responsivt design — Mobile-first og SEO
- Semantisk HTML — Hvad er semantisk markup og hvorfor det betyder noget
- Web Accessibility — Tilgængelighed og SEO