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.
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 — Google behandler disse links anderledes end redaktionelle links.
<header> og <footer> afgrænser sidens/artiklens header og footer — Google forstår at indhold her er sekundært i forhold til <main>.
<main> markerer sidens primære indhold — det Google prioriterer højest ved indeksering.
<aside> er supplerende indhold — sidebar, relaterede artikler. Typisk lavere vægtet end <main>-indholdet.
Heading-hierarki (<h1> til <h6>) er semantisk struktur — <h1> er sidens primære emne, <h2> er underemner. 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)
Semantisk forskel:
- Skærmlæsere annoncerer
<button>som “knap” og<a>som “link” — brugeren ved hvad der vil ske <button>kan aktiveres med Enter og Space;<a>kun med Enter- Søgemaskiner følger
<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.
Andre artikler i samme emne
- Frontend — Hvad er frontend-kode og hvad betyder det for 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
- Semantisk HTML — Hvad er semantisk markup og hvorfor det betyder noget
- Web Accessibility — Tilgængelighed og SEO
Placering i ordbogen
- Frontend — Hvad er frontend-kode og hvad betyder det for 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
- Semantisk HTML — Hvad er semantisk markup og hvorfor det betyder noget
- Web Accessibility — Tilgængelighed og SEO