Semantisches HTML · Grundlagen & Struktur
Was ist semantisches HTML?
Semantisches HTML bedeutet, Inhalte mit den Elementen auszuzeichnen, die ihre Bedeutung beschreiben, und nicht ihr Aussehen: Eine Navigation wird zur <nav>, ein eigenständiger Beitrag zum <article>, ein Bedienelement zum <button>. Der praktische Effekt ist, dass der Browser daraus einen zweiten Baum ableitet – den Accessibility Tree –, aus dem Screenreader, Sprachsteuerung, Suchmaschinen und KI-Systeme ihre Bedienung und ihr Verständnis der Seite aufbauen.
Das Wichtigste in Kürze
- Semantik heißt Bedeutungslehre. Auf HTML übertragen: Jedes Element trägt eine maschinenlesbare Bedeutung, die unabhängig von CSS existiert.
- Das Element sagt, was ein Inhalt ist. Wie er aussieht, regelt ausschließlich CSS. Beide Varianten können identisch gestaltet sein.
- Aus dem Markup baut der Browser den Accessibility Tree mit Rolle, Name und Zustand je Knoten. Assistive Technologien lesen nur diesen Baum, nie dein CSS.
<div>und<span>tragen die Rollegeneric– sie sind für Software durchsichtig. Das ist ihre Aufgabe, nicht ihr Mangel.- Semantik zahlt auf vier Ziele gleichzeitig ein: Barrierefreiheit, Auffindbarkeit, Wartbarkeit und robustes Standardverhalten. Der Aufwand ist dabei null – ein
<button>zu schreiben kostet nicht mehr als ein<div>. - Stand Februar 2026: Auf 53,1 % von einer Million untersuchten Startseiten fehlte mindestens ein Alternativtext, auf 46,3 % gab es leere Links (WebAIM Million). Die häufigsten Fehler im Web sind Semantikfehler.
- Die erste Regel von ARIA lautet, natives HTML zu bevorzugen. ARIA ergänzt Semantik, es ersetzt sie nicht.
- WCAG-Bezug: 1.3.1 Info und Beziehungen (Stufe A) verlangt, dass visuell erkennbare Strukturen programmatisch bestimmbar sind. Das ist die Kurzfassung von allem, was auf dieser Seite steht.
Abgrenzung – hier steht der Begriff. Was semantisches HTML bedeutet und was im Accessibility Tree daraus entsteht. Die einzelnen Elemente sortiert nach Aufgabe listet der Themenbereich Semantisches HTML; die Überschriftenebenen behandelt Überschriftenstruktur h1–h6; was Suchmaschinen davon auswerten, steht unter SEO & HTML.
Bedeutung statt Aussehen
Technisch lässt sich fast jede Oberfläche allein mit <div> und <span> nachbauen. Mit etwas CSS sieht so eine Seite genauso aus wie eine sauber ausgezeichnete – für das Auge. Der Unterschied zeigt sich überall dort, wo Software den Inhalt interpretieren muss: bei der Tastaturbedienung, beim Vorlesen durch einen Screenreader, beim Einordnen durch eine Suchmaschine.
Der Begriff „Semantik“ stammt aus der Sprachwissenschaft und bedeutet Bedeutungslehre. Auf HTML übertragen heißt das: Jedes Element trägt eine maschinenlesbare Bedeutung. <div> und <span> sind bewusst bedeutungsfreie Container. Sie eignen sich zum Gruppieren und für reine Layoutzwecke, treffen aber keine Aussage über den Inhalt. Semantische Elemente tun genau das – und deshalb greife ich zu ihnen, wann immer eines passt.
Das ist keine Stilfrage, sondern steht so im Standard. Der HTML-Standard formuliert es als Pflicht: Elemente und Attribute dürfen nicht für andere Zwecke als ihre vorgesehene Bedeutung verwendet werden, weil Software die Seite sonst nicht korrekt verarbeiten kann. Ein <div class="titel"> ist damit nicht bloß unschön, sondern nicht konform.
Ich arbeite seit vielen Jahren mit HTML, und wenn ich eine Sache aus dieser Zeit mitgenommen habe, dann diese: Markup, das seine eigene Bedeutung kennt, spart an fast jeder späteren Stelle Arbeit.
Der Accessibility Tree: was wirklich passiert
Hier lohnt es sich, einen Schritt tiefer zu gehen, weil dieser Punkt in den meisten Einführungen fehlt. Ein Browser baut aus deinem HTML nicht einen Baum, sondern zwei: das DOM für Darstellung und Skripte, und daneben den Accessibility Tree. In diesem zweiten Baum hat jeder Knoten drei Eigenschaften:
- Rolle – was ist das?
button,heading,list,navigation,generic - Name – wie heißt es? Der Text im Element, ein
<label>, einalt, einaria-label - Zustand – wie steht es gerade?
aufgeklappt,deaktiviert,ausgewählt,Ebene 2
Screenreader, Sprachsteuerung, Braillezeilen und Prüfwerkzeuge lesen ausschließlich diesen Baum. Sie sehen dein CSS nicht. Und genau das erklärt, warum zwei optisch identische Seiten völlig unterschiedlich bedienbar sein können:
Nachsehen kannst du das jederzeit selbst: In den Chrome-Entwicklerwerkzeugen gibt es im Reiter Elements rechts den Tab Accessibility, in Firefox das eigene Panel Zugänglichkeit. Beide zeigen für jeden Knoten Rolle, Name und Zustand. Ich würd das einmal an einer eigenen Seite ausprobieren – es ist die schnellste Möglichkeit, den Unterschied nicht nur zu lesen, sondern zu sehen.
Gleiche Optik, unterschiedliche Bedeutung
Die folgende Variante ist rein präsentationsorientiert. Sie funktioniert visuell, transportiert aber keine Struktur:
<div class="header">
<div class="logo">Meine Seite</div>
<div class="menu">
<div class="item"><a href="/index.html">Start</a></div>
<div class="item"><a href="/wcag-und-bfsg.html">WCAG</a></div>
</div>
</div>
<div class="content">
<div class="title">Mein erster Beitrag</div>
<div class="text">…</div>
</div>
Dieselbe Seite, semantisch ausgezeichnet, beschreibt ihre eigene Struktur:
<header>
<a class="logo" href="/index.html">Meine Seite</a>
<nav aria-label="Hauptnavigation">
<ul>
<li><a href="/index.html">Start</a></li>
<li><a href="/wcag-und-bfsg.html">WCAG</a></li>
</ul>
</nav>
</header>
<main id="inhalt">
<article>
<h1>Mein erster Beitrag</h1>
<p>…</p>
</article>
</main>
Beide Varianten lassen sich identisch gestalten. Nur die zweite teilt einem Screenreader mit, wo die Navigation beginnt, wie viele Einträge sie hat, was der Hauptinhalt ist und welche Überschrift den Beitrag benennt – ganz ohne zusätzliche Attribute. Diesen zweiten Stil halte ich für den Normalfall, nicht für die Kür.
Warum semantisches HTML wichtig ist
Semantik ist kein Selbstzweck. Sie zahlt auf vier konkrete Ziele gleichzeitig ein – und das ist das eigentliche Argument: Es ist eine Entscheidung mit vier Gewinnen.
Barrierefreiheit
Assistive Technologien bauen ihre Bedienung auf der Semantik des Dokuments auf. Aus <header>, <nav>, <main> und <footer> entstehen Landmarks, die per Tastenkürzel ansteuerbar sind. Überschriften bilden ein Inhaltsverzeichnis zum Springen. Ein korrekt ausgezeichneter Button ist mit Tastatur, Sprachsteuerung und Schaltersteuerung bedienbar – ein nachgebauter <div>-Button nicht. Wie sich das im Alltag anfühlt, beschreibt Wie Screenreader-Nutzer surfen.
Suchmaschinen und KI
Suchmaschinen und generative KI-Systeme extrahieren Struktur, um Inhalte einzuordnen und passende Ausschnitte auszuspielen. Eine klare Hierarchie aus sinnvollen Überschriften, Listen und Absätzen ist leichter auszuwerten als eine verschachtelte Container-Wüste. Für KI-Systeme kommt hinzu, dass ein sauber abgegrenzter <main>-Bereich die Frage beantwortet, welcher Teil der Seite zitierfähig ist und welcher Beiwerk – nachzulesen unter Semantik & SEO.
Wartbarkeit und Zusammenarbeit
Semantischer Code erklärt sich selbst. <nav> ist unmissverständlich – eine <div class="nav-wrapper-outer"> lädt zu Interpretationsspielraum ein. Das senkt die Einarbeitungszeit im Team und reduziert Fehler bei Änderungen. Wenn ich nach Monaten in ein Projekt zurückkomme, bin ich für jedes klar gesetzte <main> und <aside> dankbar.
Robustheit und Performance
Semantische Elemente bringen sinnvolles Standardverhalten mit: Ein <button> ist fokussierbar und reagiert auf Enter und Leertaste, ein <a href> kennt Kontextmenü und Mittelklick, ein <details> klappt ohne Skript auf. Wer dieses Verhalten mit <div>, Skripten und ARIA nachbaut, schreibt mehr Code, der mehr ausfallen kann – und der Umbau fällt in der Praxis meist umfangreicher aus als die semantische Lösung.
Die wichtigsten semantischen Elemente
Die folgende Auswahl deckt ab, was im Alltag am häufigsten gebraucht wird – mit der Rolle, die im Accessibility Tree daraus entsteht:
| Element | Rolle | Einsatz |
|---|---|---|
<header> |
banner* |
Einleitender Bereich der Seite (Logo, Navigation) |
<nav> |
navigation |
Block mit wesentlichen Navigationslinks |
<main> |
main |
Der zentrale Inhalt – genau einmal pro Dokument |
<article> |
article |
In sich abgeschlossener, eigenständig sinnvoller Inhalt |
<section> |
region** |
Thematischer Abschnitt mit eigener Überschrift |
<aside> |
complementary |
Ergänzender Inhalt mit losem Bezug |
<footer> |
contentinfo* |
Abschließender Bereich |
<search> |
search |
Container für Such- und Filterfunktionen |
<h1>–<h6> |
heading |
Gliederung mit Ebene |
<ul> / <ol> |
list |
Aufzählung – die Anzahl wird angesagt |
<button> |
button |
Bedienelement, das etwas auslöst |
<a href> |
link |
Verweis auf eine andere Stelle oder Seite |
<table> |
table |
Tabellarische Daten mit Kopfzellen |
<figure> |
figure |
Abbildung mit Beschriftung |
<time> |
– | Datums- oder Zeitangabe, maschinenlesbar |
* nur außerhalb von article, aside, main, nav und section – sonst generic. ** nur mit zugänglichem Namen, sonst generic.
Die Struktur-Elemente behandelt
Struktur-Elemente: header, nav, main & footer
ausführlich, die Abgrenzung von <article> und <section> steht unter article vs. section.
Randnotiz – Semantik ist älter als HTML5. Die Idee stammt nicht von den Elementen aus dem Jahr 2014. Schon
<h1>,<ul>,<table>und<label>sind semantische Elemente und seit den 1990er Jahren dabei. Was HTML5 hinzugefügt hat, sind vor allem Elemente für die Seitenstruktur – vorher wurde sie mit<div id="header">und ARIA-Rollen behelfsmäßig markiert. Wer also glaubt, semantisches HTML sei ein Trend, verwechselt es mit dem Zeitpunkt, an dem es einen Namen bekam.
Semantik steckt auch im Detail
Semantik endet nicht bei der Seitenstruktur. Auch auf Textebene gibt es bedeutungstragende Elemente, die häufig mit rein optischen verwechselt werden:
<!-- Bedeutung: inhaltliche Wichtigkeit bzw. Betonung -->
<p><strong>Frist:</strong> Der Antrag muss <em>vor</em> dem Termin eingehen.</p>
<!-- Nur Optik: fett bzw. kursiv, ohne zusätzliche Bedeutung -->
<p><b>Produktname</b> in <i>lateinischer</i> Schreibweise</p>
<!-- Maschinenlesbares Datum -->
<p>Zuletzt geprüft am <time datetime="2026-07-30">30. Juli 2026</time></p>
<!-- Sprachwechsel für die richtige Aussprache -->
<p>Der Fachbegriff ist <span lang="en">progressive enhancement</span>.</p>
Die Unterscheidung ist keine Haarspalterei: <strong> und <em> werden von manchen Screenreadern hörbar anders vorgelesen, <time> wird von Suchmaschinen als Datum ausgewertet, und lang schaltet die Sprachausgabe um. <b> und <i> tun nichts von dem – sie sind für Fälle gedacht, in denen es tatsächlich nur um die Schrift geht. Die vollständige Übersicht steht unter Textauszeichnung.
Häufige Missverständnisse
„<div> und <span> sind schlecht.“ Nein. Sie sind die richtige Wahl, wenn es keine passende Semantik gibt – etwa für Layout-Container. Der HTML-Standard nennt <div>
ausdrücklich ein „element of last resort“, also die letzte Wahl, nicht das falsche Element. Problematisch ist erst der Verzicht auf vorhandene Semantik, die
„Div-Soup“.
„Mehr ARIA macht eine Seite barrierefreier.“ Eher umgekehrt. Die erste Regel von ARIA lautet, natives HTML zu bevorzugen und ARIA nur dort einzusetzen, wo kein Element passt. Ein falsches role überschreibt die native Semantik und macht die Seite schlechter bedienbar als ohne – siehe Die erste Regel von ARIA.
„<section> ist ein besseres <div>.“ Ein <section> steht für einen thematischen Abschnitt und braucht eine Überschrift. Ohne zugänglichen Namen bleibt seine Rolle sogar generic – es ist dann buchstäblich ein <div> mit mehr Buchstaben.
„Semantik ist etwas für Barrierefreiheits-Projekte.“ Sie ist die Grundlage jeder Seite. Der Punkt ist nicht, dass sie zusätzlich Barrierefreiheit bringt, sondern dass ihre Abwesenheit alles andere teurer macht: Tastaturbedienung, Auffindbarkeit, Wartung.
„Mit einem Overlay-Tool erledigt sich das.“ Nein. Overlays legen eine Schicht über die Seite, während Rollen, Reihenfolgen und Linktexte im Markup falsch bleiben. Was ein Prüfwerkzeug leisten kann und was nicht, steht unter Tools.
Woran du gutes semantisches HTML erkennst
Fünf Prüfungen, die zusammen keine zehn Minuten dauern:
- CSS abschalten. Bleibt eine erkennbare Folge aus Kopfbereich, Überschriften, Listen und Fußbereich? Dann sitzt die Semantik.
- Landmarks zählen. Genau ein
banner, einmain, eincontentinfo, dazu benannte Navigationsbereiche. - Überschriftenliste prüfen. Genau eine
<h1>, danach lückenlose Ebenen ohne Sprung – siehe Überschriften-Hierarchie. - Einmal durchtabben. Erreicht der Fokus jedes Element, das man anklicken kann? Was übersprungen wird, ist ein nachgebautes Bedienelement.
- Validieren. Der W3C-Validator findet doppelte
id, ein zweites<main>und falsche Verschachtelung.
Häufiger Fehler in der Praxis
Der Fehler, dem ich am häufigsten begegne, ist nicht Unwissen – es ist die Überschrift, die nach Schriftgröße gewählt wird. Der Designentwurf sieht für den Kartentitel 18 Pixel vor, eine <h3> wäre im Standard-CSS größer, also wird ein <span class="card-title"> daraus. Optisch stimmt es, in der Überschriftenliste fehlt die Karte, und auf einer Übersichtsseite mit dreißig Karten ist das der Unterschied zwischen dreißig Sprungzielen und einmal alles durchhören.
Die Lösung ist banal: die <h3> nehmen und im CSS auf 18 Pixel setzen. Überschriftenebene und Schriftgröße sind zwei verschiedene Dinge, und nur eines davon steht im Accessibility Tree.
Der zweite Dauerbrenner sitzt eine Ebene höher: Semantik, die im Framework verloren geht. Eine Komponente rendert ihre Wurzel als <div>, weil das der sichere Standard ist. Fünf Komponenten später besteht die halbe Seite aus Containern, die niemand geplant hat. Das Gegenmittel sind Fragmente und ein konfigurierbares Wurzelelement (<Card as="article">) – Näheres unter „Div-Soup“ vermeiden.
Häufige Fragen
Ist semantisches HTML ein Rankingfaktor?
Nicht als isolierter Faktor. Google hat nie bestätigt, dass <article> oder <nav> direkt in das Ranking einfließen. Semantik verbessert aber Verständlichkeit, Struktur und Zugänglichkeit – und diese Eigenschaften wirken sich auf Auffindbarkeit, Verweildauer und die Chance aus, in KI-Antworten zitiert zu werden.
Brauche ich ARIA, wenn ich semantisch arbeite?
Meist nicht. Viele Anforderungen, für die ARIA gedacht ist, erfüllt natives HTML von sich aus. ARIA ergänzt dort, wo Standard-Elemente nicht ausreichen – bei Tabs, Comboboxen, Live-Regionen. Ein role="navigation" am <nav> ist dagegen reine Dopplung.
Sieht eine semantische Seite anders aus?
Nein. Semantik betrifft die Struktur, nicht die Gestaltung. Browser bringen für semantische Elemente ein paar Standardstile mit – Abstände bei <figure>, Größen bei Überschriften –, die sich vollständig mit CSS überschreiben lassen.
Wo fange ich an, wenn eine bestehende Seite kaum Semantik hat?
Mit den vier Struktur-Elementen und den klickbaren <div>. Diese beiden Schritte bringen den größten Teil des Gewinns und lassen sich in Stunden erledigen, nicht in Wochen. Die vollständige Reihenfolge nach Wirkung steht unter „Div-Soup“ vermeiden.
Ist semantisches HTML in React oder Vue anders?
Nein, das Ergebnis im Browser ist dasselbe HTML. Was sich unterscheidet, ist die Gefahr: Jede Komponente bringt gern ihr eigenes <div> mit, und Landmarks landen versehentlich mehrfach auf der Seite. Fragmente statt Wurzel-Container und Landmarks nur im Layout, nicht in einzelnen Bausteinen.
Verwandte Themen
- Struktur-Elemente – das Grundgerüst in vier Elementen
- div vs. span – wann generische Container richtig sind
- Landmarks & Dokument-Outline – wie die Sprungliste entsteht
- 1.3.1 Info und Beziehungen – das Kriterium hinter allem
- Die erste Regel von ARIA – wo Semantik endet und ARIA anfängt
- Semantik, Barrierefreiheit, SEO und Performance – eine Entscheidung, vier Gewinne
Fazit
Semantisches HTML bedeutet, Inhalte mit den Elementen auszuzeichnen, die ihre Bedeutung beschreiben. Der Aufwand ist null – ein <button> zu schreiben kostet exakt so viel wie ein <div>. Der Nutzen reicht weit: Aus derselben Entscheidung entstehen Sprungziele für Screenreader, eine auswertbare Struktur für Suchmaschinen und KI-Systeme, lesbarer Code fürs Team und Standardverhalten, das nicht ausfällt.
In rund zwei Jahrzehnten Webentwicklung hat sich an Werkzeugen, Trends und Frameworks vieles geändert. Dass sich sauberes, semantisches Markup auszahlt, gehört nicht dazu – das ist über all die Jahre gleich geblieben.
Quellen
- 3.2.1 Semantics (WHATWG HTML Standard – „Authors must not use elements, attributes, or attribute values for purposes other than their appropriate intended semantic purpose“)
- ARIA in HTML (W3C – die normative Zuordnung von HTML-Element zu ARIA-Rolle)
- Accessibility Principles (W3C Web Accessibility Initiative – warum Struktur programmatisch bestimmbar sein muss)
- The WebAIM Million (WebAIM, Februar 2026 – 53,1 % fehlende Alternativtexte, 46,3 % leere Links auf einer Million Startseiten)