HTML lang-Attribut: Sprache der Seite richtig angeben
Stand: 3. Oktober 2026 · CAZ Labs
Kurz gesagt
Das lang-Attribut am `<html>`-Element sagt Browsern und Screenreadern, in welcher Sprache deine Seite geschrieben ist. Für deutsche Seiten reicht `<html lang="de">`. Fehlt die Angabe, liest ein Screenreader deutschen Text womöglich mit englischer Aussprache vor, und das versteht niemand.
Warum das wichtig ist
Ein Screenreader wählt Stimme und Ausspracheregeln nach der Sprachangabe der Seite. Steht dort nichts, nimmt er die Standardsprache des Geräts oder rät. Auf einem englisch eingestellten Rechner wird aus "Öffnungszeiten" dann ein Wortbrei. Wer blind ist und deine Seite so vorgelesen bekommt, ist nach drei Sätzen weg.
Die Angabe wirkt auch an Stellen, die man nicht sofort sieht. Browser entscheiden anhand von lang, ob sie eine Übersetzung anbieten. Die automatische Silbentrennung per CSS (hyphens: auto) funktioniert nur, wenn die Sprache stimmt, sonst bleiben lange deutsche Wörter auf dem Handy ungetrennt und sprengen die Zeile.
In den WCAG ist das Erfolgskriterium 3.1.1 Sprache der Seite zuständig, Stufe A. Es gehört damit zu jeder Prüfung nach WCAG 2.1 oder 2.2 auf Stufe AA, auf die sich in der EU die Norm EN 301 549 stützt. Ehrlich gesagt: Fürs Google-Ranking spielt lang kaum eine Rolle, Google erkennt die Sprache am sichtbaren Text. Der Punkt ist trotzdem einer der schnellsten Gewinne im ganzen Check, weil er in einer Zeile erledigt ist.
So prüfst du es selbst
checkfrei sucht das lang-Attribut am <html>-Element und prüft, ob ein gültiger Sprachcode drinsteht. Fehlt es, ist das ein Fehler. Mit dem kostenlosen Check siehst du das sofort. Von Hand dauert es eine Minute:
- Öffne deine Seite im Browser und lass dir mit
Strg+U(Mac:Cmd+Option+U) den Quelltext anzeigen. - Schau in die ersten Zeilen. Dort sollte etwas wie
<html lang="de">oder<html lang="de-DE">stehen. - Alternativ öffnest du mit
F12die Entwicklertools, wechselst in die Konsole und tippstdocument.documentElement.langein. Kommt eine leere Zeichenkette zurück, fehlt die Angabe.
So behebst du es
Gültig sind Sprachcodes nach dem Standard BCP 47. Für Deutsch sind das de oder mit Region de-DE, de-AT und de-CH, für Englisch en oder etwa en-GB.
WordPress
WordPress schreibt die Sprachangabe selbst, sobald das Theme im <html>-Tag die Funktion language_attributes() aufruft. Bei Block-Themes erzeugt WordPress das Tag ohnehin selbst, dort passt es praktisch immer.
- Geh im Dashboard zu Einstellungen > Allgemein und stell die Sprache der Website auf Deutsch.
- Prüf danach den Quelltext. Steht dort weiterhin kein lang, hat dein Theme das
<html>-Tag fest eingebaut. - Dann gehört in die
header.phpdeines Child-Themes<html <?php language_attributes(); ?>>. Ohne Child-Theme ist die Änderung beim nächsten Theme-Update wieder weg.
Shopify
Aktuelle Shopify-Themes setzen die Sprache dynamisch in layout/theme.liquid, meist mit <html lang="{{ request.locale.iso_code }}">. Fehlt das Attribut, öffnest du im Admin den Code-Editor deines Themes, suchst das <html>-Tag und ergänzt es. Leg vorher eine Kopie des Themes an.
HTML
Das Attribut gehört an das öffnende <html>-Tag. Längere Passagen in einer anderen Sprache bekommen ein eigenes lang, damit der Screenreader dort umschaltet (Erfolgskriterium 3.1.2). Eingedeutschte Wörter wie "Download" musst du nicht auszeichnen.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>Bäckerei Sonnenschein</title>
</head>
<body>
<p>Wir backen jeden Morgen ab 5 Uhr.</p>
<p lang="en">We also speak English.</p>
</body>
</html>Next.js
Im App Router setzt du die Sprache im Root-Layout app/layout.tsx direkt am <html>-Element. Im Pages Router passiert das in pages/_document.tsx mit <Html lang="de"> oder über die i18n-Einstellung in der next.config.js.
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="de">
<body>{children}</body>
</html>
);
}Typische Fehler
lang="de_DE"mit Unterstrich. So benennt WordPress intern seine Sprachdateien, im HTML ist das kein gültiger Code. Richtig ist der Bindestrich:de-DE.- Eine englische Angabe auf einer deutschen Seite, meist ein Überbleibsel aus einem gekauften Theme. Das ist schlimmer als gar keine Angabe, weil der Screenreader dann ganz sicher mit englischer Stimme vorliest.
- Mehrsprachige Seiten, deren englische Version trotzdem
lang="de"trägt. Jede Sprachversion braucht ihren eigenen Code, passend zu den hreflang-Angaben. - Ausgeschriebene Namen wie
lang="deutsch"oder ein leereslang="".
So prüft checkfrei
Wir suchen das lang-Attribut am <html>-Element und prüfen, ob es ein gültiger Sprachcode ist. Fehlt es, ist es ein Fehler.
Gewicht 2 von 3 im Bereich Barrierefreiheit.
Häufige Fragen
Reicht lang="de" oder muss es lang="de-DE" sein?
Beides ist gültig, und de reicht für deutsche Seiten völlig aus. Die Regionsangabe lohnt sich nur, wenn du bewusst zwischen Deutschland, Österreich und der Schweiz unterscheidest.
Hilft das lang-Attribut beim Google-Ranking?
Kaum. Google erkennt die Sprache nach eigener Aussage am sichtbaren Inhalt und wertet lang dafür nicht aus. Für mehrsprachige Seiten ist hreflang zuständig. lang setzt du für Menschen mit Screenreader und für den Browser.
Was mache ich, wenn auf einer Seite Deutsch und Englisch gemischt sind?
Die Hauptsprache kommt an das <html>-Element. Absätze oder Zitate in der anderen Sprache bekommen ein eigenes lang-Attribut, etwa <p lang="en">.
Jetzt deine Seite prüfen
checkfrei prüft Sprachangabe und 68 weitere Punkte in einem Durchgang. Kostenlos und ohne Anmeldung.