Doppelte IDs im HTML: finden, verstehen und beheben
Stand: 3. Oktober 2026 · CAZ Labs
Kurz gesagt
Eine id darf auf jeder Seite nur ein einziges Mal vorkommen. Gibt es sie doppelt, nimmt der Browser bei Verknüpfungen einfach die erste Fundstelle: Labels landen dann beim falschen Feld, und Sprunglinks führen an die falsche Stelle. Finden kannst du doppelte IDs mit einer Zeile in der Browser-Konsole oder mit dem W3C-Validator.
Warum das wichtig ist
Die id ist im HTML so etwas wie eine Hausnummer, und vieles verlässt sich darauf, dass sie eindeutig ist. Ein <label for="email"> gehört zu dem Feld mit id="email", ein Sprunglink auf #inhalt zum Element mit id="inhalt", ein aria-describedby zur passenden Fehlermeldung. Gibt es zwei Elemente mit derselben id, nimmt der Browser das erste und übergeht das zweite.
Ein Fall aus der Praxis: Das Newsletter-Formular steht einmal im Footer und einmal in einem Popup, beide mit id="email". Für sehende Besucher sieht alles gut aus. Ein Screenreader-Nutzer im Popup hört am Eingabefeld aber keine Beschriftung, weil das Label auf das Feld im Footer zeigt. Und ein Klick auf das Wort "E-Mail" setzt den Cursor ins falsche Formular.
In WCAG 2.1 stand das als eigenes Kriterium unter 4.1.1 (Parsing). In WCAG 2.2 wurde es gestrichen, weil Screenreader das HTML heute nicht mehr selbst auswerten und sich auf den Browser verlassen. Die europäische Norm EN 301 549 in der Fassung V3.2.1, auf die sich viele Prüfungen in der EU stützen, verweist allerdings noch auf WCAG 2.1. Und unabhängig davon gilt: Wo doppelte IDs Beschriftungen oder Beziehungen kaputt machen, verstößt die Seite gegen 1.3.1 Info und Beziehungen oder 4.1.2 Name, Rolle, Wert.
So prüfst du es selbst
Im kostenlosen Check von checkfrei suchen wir id-Attribute, die mehrfach vorkommen, und zeigen eine Warnung, wenn wir welche finden. Wir lesen dabei das HTML, das dein Server ausliefert. IDs, die erst später per JavaScript entstehen, sehen wir nicht. Für die Suche von Hand gibt es zwei Wege:
- In der Browser-Konsole: Seite öffnen,
F12drücken, in den Reiter "Konsole" wechseln, die Zeilen unten einfügen und Enter drücken. Du bekommst eine Liste aller IDs, die mehr als einmal vorkommen. Chrome verlangt beim ersten Einfügen eventuell eine Bestätigung. - Mit dem W3C-Validator unter
validator.w3.org/nu: Adresse eingeben, prüfen lassen. Jede doppelte id erscheint dort als "Duplicate ID" mit Zeilennummer.
const ids = [...document.querySelectorAll("[id]")].map((el) => el.id);
console.log([...new Set(ids.filter((id, i) => ids.indexOf(id) !== i))]);Woher doppelte IDs meistens kommen
- Ein Bauteil steht zweimal auf der Seite: das Suchfeld in der Desktop- und in der Mobil-Navigation oder das Formular im Footer und im Popup.
- Im Page-Builder wurde ein Abschnitt kopiert, der eine eigene CSS-ID hatte. Die Kopie hat sie mitgenommen.
- Direkt ins HTML eingebettete SVG-Symbole. Grafikprogramme vergeben IDs wie
a,boderclip0für Verläufe und Masken. Steht das Symbol fünfmal auf der Seite, gibt es jede dieser IDs fünfmal. Wird das erste Exemplar ausgeblendet, verschwinden bei den anderen manchmal sogar die Farbverläufe. - Slider und Karussells, die Folien für die Endlosschleife klonen, samt aller IDs darin.
So behebst du es
Jede Kopie bekommt ihren eigenen Namen, und jede Verknüpfung zeigt auf den richtigen. Wo eine id gar nicht gebraucht wird, darf sie auch einfach weg.
WordPress
In Elementor, Divi und ähnlichen Buildern steht die id meist in den erweiterten Einstellungen eines Abschnitts als "CSS-ID". Nach dem Duplizieren lohnt dort immer ein Blick. Bei Formular-Plugins hilft es, dasselbe Formular nicht zweimal auf eine Seite zu setzen oder in den Feldeinstellungen eigene IDs zu vergeben.
HTML
Das name-Attribut darf gleich bleiben, es muss nicht eindeutig sein. Nur die id und das passende for ändern sich. Bei SVG-Symbolen hilft das Werkzeug SVGO mit dem Plugin prefixIds, das jeder Datei eigene Präfixe gibt.
<!-- vorher zweimal id="email", jetzt eindeutig -->
<label for="email-footer">E-Mail</label>
<input id="email-footer" type="email" name="email">
<label for="email-popup">E-Mail</label>
<input id="email-popup" type="email" name="email">Next.js
In React-Komponenten, die mehrfach auf einer Seite stehen, hat eine fest eingetragene id nichts verloren. Der Hook useId() erzeugt für jede Instanz eine eigene, die auch beim Server-Rendering stabil bleibt.
import { useId } from "react";
export function EmailFeld() {
const id = useId();
return (
<>
<label htmlFor={id}>E-Mail</label>
<input id={id} type="email" name="email" />
</>
);
}So prüft checkfrei
Wir suchen id-Attribute, die mehrfach vorkommen. Gefunden gibt es eine Warnung.
Gewicht 1 von 3 im Bereich Barrierefreiheit.
Häufige Fragen
Sind doppelte IDs schlecht für SEO?
Nach allem, was Google dazu sagt, nicht direkt. Valides HTML ist kein Rankingfaktor. Indirekt kann es schaden, wenn Sprungmarken aus dem Inhaltsverzeichnis an die falsche Stelle führen oder ein Skript nicht läuft.
Darf eine Klasse mehrfach vorkommen?
Ja. Klassen sind für Wiederholung gedacht, IDs für Einzelstücke. Brauchst du etwas nur für die Gestaltung, nimm eine Klasse.
Gilt die Regel pro Seite oder pro Website?
Pro Seite, genauer pro HTML-Dokument. Dieselbe id darf auf jeder Unterseite einmal vorkommen, id="inhalt" auf allen Seiten ist völlig normal.
Jetzt deine Seite prüfen
checkfrei prüft Eindeutige IDs und 68 weitere Punkte in einem Durchgang. Kostenlos und ohne Anmeldung.