Feedback

DOM-Größe reduzieren

Von Christian Schreiber · Aktualisiert am

Der Lighthouse-Befund Übermäßige DOM-Größe vermeiden zählt die Elemente einer Seite und warnt, wenn es zu viele sind. Das DOM ist das Modell des HTML im Speicher des Browsers; jedes Element darin muss gestylt, im Layout platziert und aktuell gehalten werden. Eine Seite mit mehreren tausend Elementen kostet mehr Speicher, mehr Zeit bei jeder Neuberechnung von Stilen und Layout und mehr Arbeit bei jeder Interaktion, die die Seite verändert. Das zeigt sich selten als einzelne langsame Anfrage, weshalb es leicht übersehen wird, und es ist eine der häufigsten verborgenen Ursachen für einen schlechten Interaction to Next Paint.

Was der Befund prüft

Lighthouse meldet drei Zahlen: die Gesamtzahl der DOM-Elemente, die maximale Verschachtelungstiefe und die maximale Zahl von Kindern unter einem Elternelement. Es warnt ab 800 Elementen und bewertet ab 1.400 als Fehler. Die Grenzen sind Faustregeln, keine harten Limits: Eine Seite mit 1.000 einfachen Elementen kann problemlos sein, 600 Elemente mit komplexen CSS-Selektoren und häufigen Updates können langsam sein. Die drei Zahlen zusammen zeigen auf die Ursache: Eine sehr hohe Gesamtzahl deutet auf gerendert, aber versteckte Inhalte hin, tiefe Verschachtelung auf Wrapper-Divs aus einem Page Builder oder Komponenten-Framework, ein sehr breites Elternelement auf eine vollständig gerenderte lange Liste.

Warum ein großes DOM langsam ist

So reduzieren Sie die DOM-Größe

1. Herausfinden, woher die Elemente kommen

Das Elements-Panel der Chrome DevTools zeigt den Baum; der Konsolenbefehl document.querySelectorAll('*').length liefert die Zahl. Um die schweren Äste zu finden, zählen Sie die Kinder je Abschnitt:

// Abschnitte der obersten Ebene nach Elementzahl sortiert
[...document.body.children]
  .map(el => [el.tagName + (el.id ? '#' + el.id : ''), el.querySelectorAll('*').length])
  .sort((a, b) => b[1] - a[1]);

Typische Verursacher sind vollständig gerenderte Mega-Menüs, versteckte Mobil- und Desktop-Varianten derselben Komponente, Karussells mit allen Folien im DOM, lange Produktraster, eingebettete Widgets und hundertfach inline eingefügte SVG-Icons.

2. Nicht rendern, was nicht sichtbar ist

Inhalte hinter Tabs, Akkordeons, Mega-Menüs und Modalen müssen erst existieren, wenn sie geöffnet werden. Rendern Sie sie bei Bedarf, oder nutzen Sie das Attribut hidden zusammen mit content-visibility: auto für lange Abschnitte unterhalb des sichtbaren Bereichs. Damit überspringt der Browser das Layout für Inhalte außerhalb des Bildschirms:

.long-section {
  content-visibility: auto;
  contain-intrinsic-size: 1px 800px; /* Platz reservieren, damit nichts springt */
}

3. Lange Listen virtualisieren

Eine Tabelle mit 2.000 Zeilen oder ein Feed mit hunderten Karten sollte nur die Zeilen im und nahe am Viewport rendern. Bibliotheken zur Listen-Virtualisierung gibt es für jedes Framework; für einfache Seiten erledigen Paginierung oder ein Button zum Nachladen dieselbe Aufgabe mit weniger Code.

4. Wrapper-Elemente entfernen

Page Builder und Komponentenbibliotheken packen jeden Block oft in drei bis sechs Divs für Abstände und Ausrichtung. Modernes CSS (Grid, Flexbox, gap, logische Eigenschaften) macht die meisten davon überflüssig. Bei WordPress kann ein Block-Theme statt eines shortcode-lastigen Builders, oder die schlankere Ausgabeoption des Builders, das DOM halbieren.

5. Keine zwei Layouts ausliefern

Wer eine Mobil- und eine Desktop-Version von Header, Navigation oder Produktraster rendert und eine davon per CSS versteckt, verdoppelt das DOM für diese Komponente. Bauen Sie eine responsive Version. Wo zwei Versionen unvermeidlich sind, rendern Sie die zweite erst ab dem Breakpoint, an dem sie gebraucht wird.

6. SVG-Sprites und Icon-Fonts sparsam nutzen

Dasselbe SVG-Icon mit 40 Elementen in 100 Listeneinträgen inline einzufügen ergibt 4.000 Elemente. Referenzieren Sie stattdessen ein Sprite per <use>, oder laden Sie Icons als Bilder, wo keine Interaktivität nötig ist.

7. Einbettungen von Drittanbietern im Blick behalten

Chat-Widgets, Bewertungskarussells, Social Feeds und Cookie-Banner bringen eigene Teilbäume mit, manchmal tausende Elemente in einem iframe oder direkt in der Seite. Der Ratgeber zu Drittanbieter-Code beschreibt, wie Sie sie später laden oder durch leichtere Alternativen ersetzen.

Hinweise je Plattform

Häufige Fragen

Sind 1.400 Elemente eine harte Grenze?

Nein. Ab dort markiert Lighthouse den Befund als Fehler. Seiten mit einfachen Elementen und wenig Interaktion können darüber problemlos sein, komplexe Seiten darunter langsam. Nehmen Sie die Zahl als Anlass, nach gerenderten, aber ungenutzten Inhalten zu suchen.

Beeinflusst die DOM-Größe die Core Web Vitals direkt?

Indirekt, aber stark. Große DOMs verlangsamen Layout- und Stilarbeit, was den INP erhöht, und sie vergrößern das HTML, das der Browser vor dem ersten Paint parsen muss.

Kann ich das DOM verkleinern, ohne das Design zu ändern?

Meistens. Der Überschuss stammt vor allem aus versteckten Inhalten, doppelten Layouts, Wrapper-Elementen und vollständigen Listen, nichts davon sieht der Besucher. Das sichtbare Design kann bleiben.

Wie finde ich die größten Verursacher schnell?

Zählen Sie die Elemente je Abschnitt der obersten Ebene in der DevTools-Konsole und öffnen Sie den größten Abschnitt im Elements-Panel. Das Muster ist meist binnen einer Minute erkennbar.

Grenzwerte und Quellen

Labortest (Lighthouse):

Quellen:

Alle Quellen abgerufen am 09.10.2026. Grenzwerte und Dokumentation ändern sich; maßgeblich ist die verlinkte Seite.

Eigene Werte testen

Ein kostenloser Scan zeigt, wie Ihre Seiten bei diesen Werten abschneiden, mobil und stationär, mit Feld- und Labdaten nebeneinander.

Kostenlosen Test starten

Mit einem kostenlosen Konto speichern Sie Ihre Messungen und sehen, wie sich die Werte von Test zu Test verändern. Tägliches Monitoring mit Felddaten und Benachrichtigung gibt es ab dem Tarif Solo.

Verwandte Themen