Semantic HTML Checker

Was Ihr HTML wirklich aussagt

Überschrift, Liste, Eintrag, Hauptbereich: vier Stellen im Seitengerüst.

Website prüfen
Beispiel im Prüfbericht Markierter Befund
Markierter Befund · Kritisch · WCAG 1.3.1Faserprofil als Absatz

Struktur-Röntgen

Gleiches Bild, völlig andere Navigation

Ein Semantic HTML Checker darf nicht beim Aussehen stehen bleiben. Diese Gegenüberstellung verfolgt dieselbe Seite vom Quelltext bis zur Struktur, die Browser und assistive Technik daraus bilden.

Zwei HTML-Gerüste unter demselben visuellen EntwurfKonzeptdarstellung · Ergebnis dieses Beispiels

Native Elemente tragen Bedeutung

Quelltext<main>  <h1>Stadtbibliothek</h1>  <section aria-labelledby="zeiten">    <h2 id="zeiten">Öffnungszeiten</h2>    <ul><li>Bremen</li>…</ul>  </section></main>
Gerenderte SeiteStadtbibliothekÖffnungszeitenMontag bis Freitag• Bremen
• Kiel
Navigierbare StrukturmainHauptbereichh1Stadtbibliothek · Ebene 1regionÖffnungszeitenh2Öffnungszeiten · Ebene 2list2 Einträge

Gestaltung imitiert nur die Form

Quelltext<div class="main">  <p class="h1">Stadtbibliothek</p>  <div class="bereich">    <p class="h2">Öffnungszeiten</p>    <div>• Bremen<br>• Kiel</div>  </div></div>
Gerenderte SeiteStadtbibliothekÖffnungszeitenMontag bis Freitag• Bremen
• Kiel
Navigierbare Strukturkein LandmarkContainer ohne berechnete RolletextStadtbibliothektextÖffnungszeitentextBremen · KielKeine Überschriften- oder Bereichsnavigation
01

Landmarks im Kontext lesen

Ein header am Dokumentanfang kann ein Banner sein. Derselbe header in einem article ist es nicht. Ein Zähler liefert deshalb Kandidaten, keine fertige Bewertung.

02

Ränge als Pfad prüfen

h1 → h2 → h3 beschreibt eine Unterordnung. Beim Schließen eines Unterabschnitts darf der Pfad wieder von h3 zu h2 zurückspringen.

03

Wiederholungen benennen

Zwei Navigationen sind nicht automatisch ein Fehler. Unterscheiden sich ihre Ziele, brauchen sie unterscheidbare Namen, etwa „Hauptmenü“ und „Servicemenü“.

Lokaler Struktur-Check

Erst Kandidaten sammeln, dann den Accessibility Tree ansehen

Der Befehl arbeitet auf der fertig gerenderten Seite. Er verändert nichts und markiert Überschriftssprünge sowie fehlerhafte direkte Listenkinder.

const all = (selector) =>
  [...document.querySelectorAll(selector)];
const shortText = (element) =>
  element.textContent.trim().replace(/\s+/g, ' ').slice(0, 60);

const headings = all('h1, h2, h3, h4, h5, h6');
console.table(headings.map((element, index) => {
  const level = Number(element.tagName[1]);
  const previous = index ? Number(headings[index - 1].tagName[1]) : level;
  return {
    Element: element.tagName.toLowerCase(),
    Text: shortText(element),
    Hinweis: level > previous + 1 ? `Sprung von h${previous}` : ''
  };
}));

console.table(all('header, nav, main, aside, footer, section').map(
  (element) => ({
    Element: element.tagName.toLowerCase(),
    Attribut: element.getAttribute('aria-label') ||
      element.getAttribute('aria-labelledby') || '—'
  })
));

const wrongListChildren = all('ul, ol').flatMap((list) =>
  [...list.children].filter(
    (child) => !child.matches('li, script, template')
  )
);
const detachedItems = all('li').filter(
  (item) => !item.parentElement?.matches('ul, ol, menu')
);
console.log('Direkte Listenkinder prüfen:', [
  ...wrongListChildren,
  ...detachedItems
]);

Die Grenze des Skripts

Es liest Tags und Attribute, nicht die berechnete Semantik. Prüfen Sie die Treffer anschließend im Accessibility Tree der Browser-Entwicklerwerkzeuge. Dort sehen Sie etwa, ob eine benannte section wirklich als region erscheint.

So prüfen Sie die Struktur in drei Ansichten

  1. DOM: Öffnen Sie die Browser-Konsole, fügen Sie den Befehl ein und lesen Sie jeden Hinweis im Zusammenhang mit dem Inhalt.
  2. Accessibility Tree: Wählen Sie das Element in den Entwicklerwerkzeugen. Prüfen Sie berechnete Rolle, Name und Ebene.
  3. Navigation: Rufen Sie mit einem Vorleseprogramm die Überschriften- und Bereichsliste auf. Reihenfolge und Namen müssen den sichtbaren Aufbau erklären.

Aus dem Prüfbericht

Vier Stellen im eingefügten HTML

Zum Mitnehmen

Das Seitengerüst, korrigiert

Ein Element getauscht, die Liste aufgeräumt, ein main gesetzt.

Korrektur in 3 Schritten ansehen
  1. Aus dem Absatz wird eine Überschrift

    Die Klasse bleibt, das Element wechselt. Erst als h2 taucht die Zeile im Strukturbaum auf.

    KorrekturvergleichSchritt 1 · HTML

    Vorher

    <p class="gross">Öffnungszeiten</p>
    <p>Montag bis Freitag, 9 bis 17 Uhr.</p>

    Nachher

    <h2 class="gross">Öffnungszeiten</h2>
    <p>Montag bis Freitag, 9 bis 17 Uhr.</p>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Springen Sie mit einem Vorleseprogramm von Überschrift zu Überschrift. „Öffnungszeiten“ ist dabei.

  2. Liste und Eintrag zusammenführen

    Der Absatz gehört vor die Liste, der Eintrag hinein. Danach steht in der ul nur noch, was zusammengehört.

    KorrekturvergleichSchritt 2 · HTML

    Vorher

    <ul>
      <p>Unsere Standorte</p>
      <li>Bremen</li>
    </ul>
    <li>Kiel</li>

    Nachher

    <p>Unsere Standorte</p>
    <ul>
      <li>Bremen</li>
      <li>Kiel</li>
    </ul>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Ein Vorleseprogramm kündigt „Liste mit zwei Einträgen“ an.

  3. Den Inhalt als Hauptbereich auszeichnen

    main benennt den Hauptbereich. Vorleseprogramme bieten dafür einen eigenen Sprung, ohne dass sich am Aussehen etwas ändert.

    KorrekturvergleichSchritt 3 · HTML

    Vorher

    <div class="inhalt">
      <h1>Stadtbibliothek</h1>
    </div>

    Nachher

    <main class="inhalt">
      <h1>Stadtbibliothek</h1>
    </main>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Rufen Sie die Bereichsliste eines Vorleseprogramms auf. „Hauptbereich“ steht darin.

Werbung

Kostenloser Website-Barrierefreiheits-Check

Website auf Barrierefreiheit prüfen.

Technische WCAG-Warnsignale erkennen. Kritische Stellen zuerst prüfen.

Der Website-Check ist bereit.

Werbung

Ein letzter Schritt

Prüfen, bevor Sie gehen.

Finden Sie automatisch erkennbare Barrieren auf Ihrer eigenen Website.

Website prüfen

Kostenlos starten · keine Installation

Automatisches Screening. Tastaturbedienung und Screenreader bleiben manuelle Prüfung.