Largest Contentful Paint: Das entscheidende Element identifizieren und optimieren
AI generated
60fps
ms
Performance · Core Web Vitals · LCP
Das LCP-Element identifizieren und optimieren
Das tatsächliche LCP-Element finden und die wirklich langsame Phase gezielt beheben

Largest Contentful Paint gilt als die wichtigste der drei Core Web Vitals für die wahrgenommene Ladegeschwindigkeit einer Seite, wird aber in der Praxis häufig falsch angegangen, indem pauschal versucht wird, die Seite als Ganzes schneller zu machen. Der erste nötige Schritt ist, das tatsächliche LCP-Element einer Seite zu identifizieren, das oft nicht das Element ist, das man intuitiv erwarten würde. Der zweite Schritt ist, die LCP-Zeit in ihre vier Phasen, TTFB, Load Delay, Load Time und Render Delay, zu zerlegen und jede Phase gezielt und einzeln zu optimieren, statt eine diffuse Verbesserung der Gesamtzeit anzustreben.

14 Min. Lesezeit LCP · Core Web Vitals TTFB · Render Delay

1. LCP als wichtigste Ladezeit-Metrik der Core Web Vitals

Largest Contentful Paint misst den Zeitpunkt, an dem das größte, im initial sichtbaren Bereich der Seite gerenderte Element vollständig dargestellt ist, meist ein Hero-Bild, eine große Überschrift oder ein Block-Level-Textelement. Diese Metrik korreliert nachweislich stark mit dem subjektiven Eindruck von Ladegeschwindigkeit, da sie genau den Moment erfasst, in dem der Hauptinhalt einer Seite für den Nutzer sichtbar und damit nutzbar wird, im Gegensatz zu früheren Metriken wie First Paint, die auch durch für den Nutzer irrelevante, kleine Elemente ausgelöst werden konnten.

Google definiert einen LCP-Wert von 2.5 Sekunden oder darunter als gut, wobei dieser Schwellenwert am 75. Perzentil aller Seitenaufrufe gemessen wird, nicht am Median. Diese Wahl bedeutet, dass auch die langsameren, oft mobilen oder unter schlechteren Netzwerkbedingungen stattfindenden Seitenaufrufe explizit berücksichtigt werden müssen, und eine Optimierung, die nur den Durchschnittsfall verbessert, den tatsächlich gemessenen LCP-Wert unter Umständen kaum verändert.

2. Das LCP-Element pro Seite ermitteln

Welches Element auf einer bestimmten Seite tatsächlich als LCP-Element zählt, lässt sich nicht zuverlässig erraten, sondern muss über die PerformanceObserver-API mit dem Eintragstyp largest-contentful-paint direkt aus dem Browser ausgelesen werden. Dieser Observer feuert bei jedem Kandidaten, der zum bisher größten sichtbaren Element wird, und liefert eine Referenz auf das konkrete DOM-Element über die element-Eigenschaft, sodass sich der tatsächliche LCP-Kandidat programmatisch bestimmen lässt, statt ihn anhand einer visuellen Einschätzung zu vermuten.

In der Produktion ist es sinnvoll, diesen Wert nicht nur einmalig im Labor zu prüfen, sondern kontinuierlich per Real User Monitoring zu erfassen, da sich das LCP-Element je nach Viewport-Größe, geladenen A/B-Test-Varianten oder personalisiertem Content von Aufruf zu Aufruf unterscheiden kann. Das folgende Beispiel zeigt einen minimalen Observer, der bei jedem neuen LCP-Kandidaten das Element und den bisherigen Zeitwert protokolliert.


// LCP-Element und Zeitwert per PerformanceObserver ermitteln
const observer = new PerformanceObserver((entryList) => {
  const entries = entryList.getEntries();
  const letzterEintrag = entries[entries.length - 1];

  console.log('LCP-Kandidat:', letzterEintrag.element);
  console.log('Zeit bis zu diesem Kandidaten:', letzterEintrag.startTime);
  console.log('URL der Ressource (falls Bild):', letzterEintrag.url || 'kein Bild');
});

observer.observe({ type: 'largest-contentful-paint', buffered: true });

// Finalen Wert erst beim ersten Nutzerinteraktions- oder Sichtbarkeitswechsel festschreiben
['keydown', 'click', 'visibilitychange'].forEach((eventName) => {
  addEventListener(eventName, () => observer.takeRecords(), { once: true, capture: true });
});

3. Warum das LCP-Element oft nicht das offensichtliche ist

Ein häufiges Missverständnis ist die Annahme, das LCP-Element sei automatisch das große Hero-Bild ganz oben auf der Seite, obwohl in vielen realen Fällen ein anderes Element diese Rolle einnimmt. Auf einer Blog-Artikelseite kann etwa ein langer, mehrzeiliger Überschriftenblock flächenmäßig größer sein als ein kleineres Header-Bild, wodurch nicht das Bild, sondern der Text zum LCP-Element wird und entsprechend andere Optimierungsmaßnahmen erfordert als eine reine Bildoptimierung.

Noch überraschender wird es bei Seiten mit dynamisch geladenem Content, etwa einem Karussell, das beim initialen Rendern zunächst ein kleines Platzhalterbild zeigt und erst nach dem Laden von JavaScript durch das eigentliche, größere Bild ersetzt wird. In diesem Fall kann der LCP-Zeitpunkt fälschlicherweise auf das kleine Platzhalterbild fallen, obwohl der Nutzer das große Bild als eigentlich relevanten Inhalt wahrnimmt, was zeigt, wie wichtig die programmatische Verifikation über den PerformanceObserver gegenüber einer rein visuellen Einschätzung ist.

4. Die vier Phasen einer LCP-Zeit im Überblick

Sobald das LCP-Element feststeht, lässt sich die gesamte LCP-Zeit in vier klar abgrenzbare Phasen zerlegen, die jeweils von unterschiedlichen technischen Faktoren beeinflusst werden: Time to First Byte, die Zeit bis zur ersten Serverantwort, Load Delay, die Zeit zwischen TTFB und dem Beginn des Ladens der LCP-Ressource, Load Time, die eigentliche Download-Dauer der Ressource, und Render Delay, die Zeit zwischen abgeschlossenem Download und tatsächlichem Rendern auf dem Bildschirm.

Diese Aufteilung ist deshalb so wertvoll, weil jede Phase durch vollkommen unterschiedliche Maßnahmen verbessert wird und eine pauschale Aussage wie die Seite schneller machen zu wollen ohne Kenntnis der dominanten Phase fast immer an der falschen Stelle ansetzt. Ein Team, das viel Aufwand in die Bildkompression steckt, obwohl in Wirklichkeit die Load-Delay-Phase durch ein blockierendes Skript verursacht wird, verbessert den LCP-Wert kaum, obwohl objektiv wertvolle Arbeit geleistet wurde.

5. Phase eins: TTFB gezielt angehen

Die TTFB-Phase wird primär durch Serverantwortzeit, Netzwerklatenz und die Entfernung zwischen Nutzer und Server bestimmt und ist damit die einzige der vier Phasen, die kaum durch Frontend-Maßnahmen, sondern fast ausschließlich durch Backend- und Infrastrukturentscheidungen beeinflusst wird. Eine langsame Datenbankabfrage, ein überlasteter Applikationsserver oder das Fehlen eines Edge-Caches für häufig aufgerufene Seiten fallen direkt in diese Phase und lassen sich unabhängig von allen anderen LCP-bezogenen Maßnahmen angehen.

Ein CDN mit Edge-Caching für weitgehend statische Seiten, eine Optimierung langsamer Datenbankabfragen und die geografische Nähe des Servers zum Nutzer sind die wirksamsten Hebel gegen eine hohe TTFB-Phase. Für dynamisch generierte, personalisierte Seiten, bei denen vollständiges Caching nicht möglich ist, hilft zusätzlich Streaming SSR, da der Shell bereits gesendet werden kann, während personalisierte Daten im Hintergrund noch geladen werden, was die effektiv wahrgenommene TTFB für das LCP-Element senkt.

6. Phase zwei: Load Delay gezielt angehen

Load Delay entsteht, wenn zwischen dem Eintreffen des HTML-Dokuments und dem tatsächlichen Start des Downloads der LCP-Ressource unnötig viel Zeit vergeht, häufig verursacht durch render-blockierende Skripte oder Stylesheets, die vor der LCP-Ressource geladen werden müssen, oder durch ein spätes Entdecken der Ressource, weil sie erst per JavaScript in den DOM eingefügt wird, statt direkt im initialen HTML zu stehen.

Die wirksamsten Maßnahmen gegen Load Delay sind, die LCP-Ressource direkt und statisch im HTML zu referenzieren, damit sie vom Preload-Scanner sofort erkannt wird, sowie render-blockierende Ressourcen vor der LCP-Ressource zu vermeiden oder zumindest zu verkleinern. Ergänzend hilft ein gezieltes fetchpriority="high" auf dem LCP-Element, um es innerhalb der bereits frühen Erkennung zusätzlich gegenüber konkurrierenden Ressourcen zu bevorzugen.

7. Phase drei: Load Time gezielt angehen

Load Time bezeichnet die reine Download-Dauer der LCP-Ressource selbst, sobald der Request gestartet wurde, und wird primär durch Dateigröße, Kompression und die Bandbreite der Verbindung bestimmt. Für Bild-LCP-Elemente bedeutet das konkret, moderne Formate wie AVIF oder WebP mit angemessener Kompression einzusetzen, die richtige Bildgröße für den tatsächlichen Viewport per srcset auszuliefern und die Ressource über ein CDN mit guter geografischer Abdeckung zu servieren.

Für Text-LCP-Elemente, etwa eine große Überschrift, fällt die Load-Time-Phase meist kaum ins Gewicht, da Text selbst kaum Bytes benötigt, es sei denn, das Rendern des Textes hängt indirekt von einer noch ladenden Webfont ab. In diesem Fall verschiebt sich der eigentliche Engpass faktisch in die Load-Time-Phase der Schriftdatei, weshalb eine Optimierung des Font-Ladens, etwa per preload und einer möglichst kleinen, auf die tatsächlich benutzten Zeichen reduzierten Font-Subset-Datei, hier den größten Hebel darstellt.

8. Phase vier: Render Delay gezielt angehen

Render Delay ist die Zeit zwischen abgeschlossenem Download der LCP-Ressource und ihrem tatsächlichen Erscheinen auf dem Bildschirm, und wird häufig unterschätzt, obwohl sie bei client-seitig gerenderten Anwendungen einen erheblichen Anteil der Gesamtzeit ausmachen kann. Ursachen sind typischerweise ein langer, blockierender JavaScript-Task auf dem Hauptthread, der das eigentliche Rendern verzögert, obwohl die Ressource selbst längst heruntergeladen ist, oder eine ineffiziente CSS-Kaskade, die das finale Layout erst nach mehreren Neuberechnungen stabilisiert.

Die effektivsten Maßnahmen gegen Render Delay sind, lange JavaScript-Tasks in kleinere Einheiten aufzuteilen, damit der Hauptthread nicht über längere Zeiträume blockiert bleibt, und kritisches CSS für den initial sichtbaren Bereich inline auszuliefern statt es aus einer externen, erst noch zu ladenden Datei zu beziehen. Bei React- oder ähnlichen Frameworks hilft zusätzlich, das LCP-Element nicht hinter einer Suspense-Boundary mit künstlicher Verzögerung zu platzieren, wenn es für den ersten sichtbaren Content kritisch ist.

9. Warum phasenbasierte Diagnose besser ist als pauschale Optimierung

Der entscheidende Vorteil einer phasenbasierten Diagnose gegenüber der pauschalen Frage die Seite schneller zu machen ist, dass sich Optimierungsaufwand gezielt auf die tatsächlich dominante Phase konzentrieren lässt, statt gleichmäßig über alle vier Phasen verteilt zu werden, wo er in drei von vier Fällen kaum Wirkung zeigt. Tools wie das Chrome-DevTools-Performance-Panel oder spezialisierte Web-Vitals-Bibliotheken zeigen die vier Phasen mittlerweile explizit als separate Zeitabschnitte an, sodass sich die dominante Phase in wenigen Minuten identifizieren lässt.

In der Praxis bewährt sich ein wiederkehrender Prozess: Nach jeder größeren Änderung an der Seite wird die LCP-Phasenverteilung erneut gemessen, um zu prüfen, ob sich die dominante Phase verschoben hat, etwa weil ein zuvor gutes TTFB durch eine neue, aufwendigere Backend-Logik plötzlich zur größten Phase geworden ist. Diese kontinuierliche, phasenbezogene Kontrolle verhindert, dass Optimierungsaufwand in eine Phase investiert wird, die zwar früher relevant war, mittlerweile aber nicht mehr die eigentliche Ursache der LCP-Zeit ist.

Phase Was sie misst Häufigste Ursache Wirksamste Maßnahme
TTFB Zeit bis zur ersten Serverantwort Langsame Backend-Logik, fehlender Edge-Cache CDN-Caching, Datenbankoptimierung, Streaming SSR
Load Delay Zeit bis zum Start des Ressourcen-Downloads Render-blockierende Skripte, späte Entdeckung Statische HTML-Referenz, fetchpriority="high"
Load Time Reine Download-Dauer der Ressource Große Dateigröße, fehlende Kompression Moderne Bildformate, srcset, CDN mit guter Abdeckung
Render Delay Zeit zwischen Download-Ende und Rendern Blockierender JavaScript-Task, spätes CSS Task-Splitting, kritisches CSS inline ausliefern

Mironsoft

Web Performance, Core Web Vitals und Ladezeit-Optimierung

Ladezeiten, die Nutzer nicht abspringen lassen, bevor die Seite überhaupt sichtbar ist?

Wir prüfen bestehende Webseiten auf langsame Core Web Vitals, aufgeblähte JavaScript-Bundles und ungenutzte Render-Blocker und bauen daraus eine Performance-Grundlage, die messbar bleibt statt nur einmalig gut auszusehen.

Performance-Audit

Core Web Vitals, Ladewasserfall und Render-Blocker systematisch messen und beheben.

Bundle-Optimierung

JavaScript- und CSS-Bundle-Größe sowie Code-Splitting gezielt reduzieren.

Monitoring-Aufbau

Kontinuierliches Performance-Monitoring statt einmaliger Momentaufnahme etablieren.

10. Zusammenfassung

LCP identifizieren und optimieren: Das Wichtigste auf einen Blick

Kernidee

LCP-Optimierung beginnt mit der programmatischen Identifikation des tatsächlichen LCP-Elements, nicht mit einer visuellen Vermutung.

Vier Phasen

TTFB, Load Delay, Load Time und Render Delay werden jeweils durch vollkommen unterschiedliche Maßnahmen verbessert.

Häufiger Fehler

Bildkompression optimieren, obwohl die eigentliche Verzögerung in einer anderen, undiagnostizierten Phase liegt.

Vorgehen

Nach jeder größeren Änderung die Phasenverteilung neu messen, statt sich auf eine einmalige Diagnose zu verlassen.

11. FAQ: LCP identifizieren und optimieren: Das Wichtigste auf einen Blick

1Wie finde ich das tatsächliche LCP-Element einer Seite?
Über die PerformanceObserver-API mit dem Eintragstyp largest-contentful-paint, die eine direkte Referenz auf das DOM-Element liefert, statt es visuell zu vermuten.
2Ist das LCP-Element immer ein Bild?
Nein, es kann auch ein Textblock wie eine große Überschrift sein, insbesondere wenn diese flächenmäßig größer ist als vorhandene Bilder im sichtbaren Bereich.
3Welche Phase sollte ich zuerst optimieren?
Die Phase mit dem größten gemessenen Zeitanteil an der Gesamt-LCP-Zeit, ermittelt über das Chrome-DevTools-Performance-Panel oder eine Web-Vitals-Bibliothek, nicht die Phase, die intuitiv am einfachsten wirkt.
4Kann Streaming SSR die TTFB-Phase verbessern?
Ja, da der statische Shell bereits gesendet werden kann, während personalisierte Daten noch im Hintergrund geladen werden, sinkt die effektiv wahrgenommene TTFB für das LCP-Element.
5Warum hilft fetchpriority beim Load Delay?
Weil es die LCP-Ressource innerhalb der bereits frühen Entdeckung zusätzlich gegenüber konkurrierenden Ressourcen bevorzugt und dadurch früher mit dem tatsächlichen Download beginnt.
6Wieso kann eine große Überschrift von einer langsamen Webfont betroffen sein?
Wenn das Rendern des Textes auf das Laden einer Webfont wartet, verschiebt sich der Engpass faktisch in die Load-Time-Phase der Schriftdatei, auch wenn das LCP-Element selbst Text ist.
7Was verursacht typischerweise Render Delay?
Ein langer, blockierender JavaScript-Task auf dem Hauptthread oder eine ineffiziente CSS-Kaskade, die das Layout erst nach mehreren Neuberechnungen stabilisiert.
8Ändert sich das LCP-Element je nach Gerät?
Ja, je nach Viewport-Größe kann ein anderes Element zum größten sichtbaren Element werden, weshalb Real User Monitoring über verschiedene Geräte hinweg wichtig ist.
9Reicht eine einmalige Messung der vier Phasen aus?
Nein, nach jeder größeren Änderung an der Seite sollte die Phasenverteilung erneut gemessen werden, da sich die dominante Phase durch neue Backend-Logik oder Frontend-Änderungen verschieben kann.
10Warum ist der 75. Perzentil-Wert für LCP relevant statt des Durchschnitts?
Weil Google den LCP-Zielwert am 75. Perzentil misst, um sicherzustellen, dass auch langsamere, oft mobile Seitenaufrufe explizit berücksichtigt werden, statt nur den günstigen Durchschnittsfall zu optimieren.