Ein perfekter Lighthouse Score ist kein Zufall. Er ist das Ergebnis systematischer Optimierung, fundiertem Wissen über Browser-Rendering und konsequenter Umsetzung bewährter Techniken. In diesem Leitfaden zeige ich dir genau, wie du alle vier Kategorien auf 100 bringst - basierend auf meiner täglichen Praxis als Webentwickler.
Was misst Google Lighthouse?
Lighthouse bewertet Websites in vier Kategorien, die jeweils einen Score von 0 bis 100 erhalten:
Performance - Die technische Ladegeschwindigkeit. Hier fließen sechs gewichtete Metriken ein, die gemeinsam ein Gesamtbild der Nutzererfahrung zeichnen.
Accessibility - Barrierefreiheit der Website. Korrekte Semantik, ARIA-Labels, Kontrastverhältnisse und Tastaturnavigation werden geprüft.
Best Practices - Sicherheitsstandards, HTTPS, korrekte Bild-Seitenverhältnisse und moderne API-Nutzung.
SEO - Technische Suchmaschinenoptimierung: Meta-Tags, strukturierte Daten, crawlbare Links und mobile Optimierung.
Der Performance-Score ist dabei die anspruchsvollste Kategorie. Er berechnet sich als gewichteter Durchschnitt aus sechs Metriken:
| Metrik | Gewichtung |
|---|---|
| Total Blocking Time (TBT) | 30% |
| Largest Contentful Paint (LCP) | 25% |
| Cumulative Layout Shift (CLS) | 25% |
| First Contentful Paint (FCP) | 10% |
| Speed Index | 10% |
Die Scores werden am 75. Perzentil realer Nutzerdaten gemessen. Das bedeutet: 75 Prozent deiner Besucher müssen eine gute Erfahrung haben, damit die Seite als bestanden gilt.
Core Web Vitals 2026: LCP, INP und CLS im Detail
Die Core Web Vitals sind Googles offizielle Metriken für Nutzererfahrung und fließen direkt in das Suchranking ein. 2026 besteht das Set aus drei Kennzahlen:
Largest Contentful Paint (LCP)
LCP misst, wie lange es dauert, bis das größte sichtbare Element im Viewport vollständig gerendert ist. Das kann ein Hero-Bild, eine Überschrift oder ein Video-Poster sein.
- Gut: unter 2,5 Sekunden
- Verbesserungsbedürftig: 2,5 bis 4 Sekunden
- Schlecht: über 4 Sekunden
Der häufigste LCP-Killer: unkomprimierte Hero-Bilder ohne Preload-Hint. Ein einzelnes 2 MB JPEG kann den LCP um mehrere Sekunden verschlechtern.
Interaction to Next Paint (INP)
INP hat 2024 den älteren First Input Delay (FID) ersetzt und misst die gesamte Reaktionszeit auf Nutzerinteraktionen - vom Klick bis zur visuellen Antwort. Während FID nur die Verzögerung vor der Verarbeitung maß, erfasst INP den kompletten Zyklus.
- Gut: unter 200 Millisekunden
- Verbesserungsbedürftig: 200 bis 500 Millisekunden
- Schlecht: über 500 Millisekunden
INP ist 2026 die am häufigsten nicht bestandene Metrik - 43 Prozent aller Websites scheitern am 200-Millisekunden-Schwellenwert. Die Ursache liegt fast immer in zu viel synchronem JavaScript auf dem Main Thread.
Cumulative Layout Shift (CLS)
CLS quantifiziert visuelle Instabilität. Jedes Mal, wenn ein Element seine Position unerwartet ändert, wird der Shift-Betrag aufsummiert.
- Gut: unter 0,1
- Verbesserungsbedürftig: 0,1 bis 0,25
- Schlecht: über 0,25
Typische Verursacher: Bilder ohne definierte Dimensionen, nachladende Webfonts und dynamisch eingefügte Werbebanner.
Die größten Performance-Killer
Aus der täglichen Optimierungsarbeit kristallisieren sich immer wieder dieselben Probleme heraus:
1. Unkomprimierte und falsch dimensionierte Bilder - Bilder machen typischerweise 50 bis 70 Prozent des Seitengewichts aus. Ein einzelnes unkomprimiertes Foto kann schwerer sein als der gesamte restliche Seiteninhalt.
2. Render-blockierendes JavaScript - Jedes synchron geladene Script blockiert den Parser. Drittanbieter-Scripts wie Analytics, Chat-Widgets und Social-Media-Embeds addieren sich schnell zu mehreren Sekunden Blocking Time.
3. Nicht gecachte Ressourcen - Ohne korrekte Cache-Header lädt der Browser bei jedem Besuch alles neu herunter.
4. Fehlende Komprimierung - Ohne Brotli oder Gzip werden HTML, CSS und JavaScript in voller Größe übertragen.
5. Zu viele HTTP-Requests - Jede Ressource verursacht Latenz. Dutzende kleine CSS- und JS-Dateien summieren sich.
Bildoptimierung: Der größte Hebel
Da Bilder den Löwenanteil am Seitengewicht ausmachen, bieten sie den größten Optimierungsspielraum.
Moderne Formate: AVIF und WebP
AVIF liefert 2026 die beste Kompressionsrate - rund 50 Prozent kleiner als JPEG bei vergleichbarer Qualität. Bei Qualitätsstufe 60-70 erreicht AVIF ein Ergebnis, das visuell JPEG bei Qualität 85 entspricht.
WebP ist 25-35 Prozent kleiner als JPEG und wird von allen modernen Browsern unterstützt. Es ist der verlässliche Allrounder.
Die empfohlene Strategie ist ein Fallback-System:
<picture>
<source srcset="hero.avif" type="image/avif">
<source srcset="hero.webp" type="image/webp">
<img src="hero.jpg" alt="Beschreibung" width="1200" height="630">
</picture>
Lazy Loading und Responsive Images
Bilder unterhalb des sichtbaren Bereichs sollten erst geladen werden, wenn der Nutzer scrollt:
<img src="bild.webp" loading="lazy" decoding="async" alt="..." width="800" height="450">
Für das LCP-Element gilt das Gegenteil - hier ist ein expliziter Preload-Hint entscheidend:
<link rel="preload" as="image" href="hero.avif" type="image/avif">
Responsive Images mit srcset stellen sicher, dass mobile Geräte nicht Desktop-Auflösungen laden:
<img srcset="bild-400.webp 400w, bild-800.webp 800w, bild-1200.webp 1200w"
sizes="(max-width: 600px) 400px, (max-width: 1000px) 800px, 1200px"
src="bild-800.webp" alt="...">
JavaScript-Optimierung
JavaScript ist der zweitgrößte Performance-Faktor nach Bildern - und der größte Verursacher schlechter INP-Werte.
Code Splitting
Statt eines monolithischen Bundles wird JavaScript in Chunks aufgeteilt, die nur bei Bedarf geladen werden:
// Dynamischer Import - lädt nur wenn benötigt
const module = await import('./schweres-modul.js');
Frameworks wie Astro, Next.js und Nuxt implementieren Route-basiertes Code Splitting automatisch. Nur der Code für die aktuelle Seite wird initial geladen.
Tree Shaking
Moderne Bundler wie Vite, Rollup und esbuild entfernen ungenutzten Code automatisch - vorausgesetzt, du nutzt ES-Module-Syntax:
// Nur die genutzte Funktion landet im Bundle
import { formatDate } from './utils';
Defer und Async
Scripts, die nicht für das initiale Rendering benötigt werden, sollten den Parser nicht blockieren:
<!-- Wird parallel geladen und nach dem Parsing ausgeführt -->
<script src="analytics.js" defer></script>
<!-- Wird parallel geladen und sofort nach dem Download ausgeführt -->
<script src="kritisch.js" async></script>
Faustregel: defer für eigene Scripts, die auf das DOM zugreifen. async für unabhängige Drittanbieter-Scripts. Kritisches JavaScript inline im Head.
Main Thread entlasten
Für INP-Optimierung ist es entscheidend, lange Tasks aufzubrechen:
// Lange Aufgabe in kleinere Stücke aufteilen
function processItems(items) {
const chunk = items.splice(0, 50);
chunk.forEach(processItem);
if (items.length > 0) {
requestAnimationFrame(() => processItems(items));
}
}
Server-Side Rendering vs. Static Site Generation
Die Rendering-Strategie hat massiven Einfluss auf die Performance:
Static Site Generation (SSG) liefert vorgerenderte HTML-Dateien direkt vom CDN. Keine Server-Berechnung, keine Datenbankabfragen zur Laufzeit. Das Ergebnis: konstant niedrige Time-to-First-Byte (TTFB) und optimale LCP-Werte. Frameworks wie Astro, Hugo und 11ty sind darauf spezialisiert.
Server-Side Rendering (SSR) rendert HTML auf dem Server bei jedem Request. Sinnvoll für personalisierte oder hochdynamische Inhalte, aber langsamer als SSG durch die Server-Berechnung.
Der Hybrid-Ansatz kombiniert beide Welten: Statische Seiten für Content, SSR nur wo dynamische Daten unvermeidbar sind. Astro mit seinen Islands-Architektur ist dafür ideal - statisches HTML als Basis, interaktive Komponenten werden gezielt hydriert.
Für die meisten Unternehmenswebsites, Blogs und Portfolios ist SSG der klare Gewinner. Nur bei E-Commerce-Checkouts, Dashboards oder personalisierten Feeds lohnt sich der SSR-Overhead.
Caching-Strategien und CDN
Intelligentes Caching eliminiert redundante Downloads und reduziert die Server-Last:
Browser-Caching via HTTP-Header
# Statische Assets (versioniert durch Hash im Dateinamen)
Cache-Control: public, max-age=31536000, immutable
# HTML-Seiten (immer revalidieren)
Cache-Control: public, max-age=0, must-revalidate
Statische Assets wie CSS, JavaScript und Bilder erhalten eine einjährige Cache-Dauer. Die Invalidierung erfolgt über geänderte Dateinamen (Content Hashing). HTML-Dokumente werden immer frisch vom Server geholt.
CDN-Einsatz
Ein Content Delivery Network verteilt Inhalte auf Edge-Server weltweit. Der Nutzer erhält Dateien vom nächstgelegenen Standort, was die Latenz drastisch reduziert. Für statische Sites reicht oft ein einfaches CDN-Setup mit Cloudflare oder einem vergleichbaren Anbieter.
Service Worker für Offline-Fähigkeit
// Stale-while-revalidate Strategie
self.addEventListener('fetch', event => {
event.respondWith(
caches.open('v1').then(cache =>
cache.match(event.request).then(cached => {
const fetched = fetch(event.request).then(response => {
cache.put(event.request, response.clone());
return response;
});
return cached || fetched;
})
)
);
});
Font-Optimierung und Layout Shifts vermeiden
Webfonts sind ein häufig unterschätzter CLS-Verursacher. Wenn der Browser vom Fallback-Font zum Webfont wechselt, verschieben sich Textblöcke - ein klassischer Layout Shift.
font-display: swap vs. optional
@font-face {
font-family: 'Inter';
src: url('/fonts/inter.woff2') format('woff2');
font-display: swap; /* Zeigt sofort Fallback, tauscht nach Laden */
}
font-display: optional eliminiert den Layout Shift komplett - wenn der Font nicht innerhalb von 100ms geladen ist, wird er auf dieser Seite nicht mehr angewendet. Ideal für Performance, erfordert aber ein akzeptables Fallback-Design.
Preloading kritischer Fonts
<link rel="preload" href="/fonts/inter-regular.woff2" as="font" type="font/woff2" crossorigin>
Font-Subsetting
Die meisten Websites brauchen keine vollständigen Font-Dateien mit kyrillischen, griechischen und arabischen Zeichen. Ein Subset auf latin reduziert die Dateigröße um 50-80 Prozent:
@font-face {
font-family: 'Inter';
src: url('/fonts/inter-latin.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+2000-206F;
}
Size-Adjust für Zero-CLS-Fonts
Mit size-adjust und ascent-override lässt sich der Fallback-Font so konfigurieren, dass er exakt denselben Platz einnimmt wie der Webfont:
@font-face {
font-family: 'Inter Fallback';
src: local('Arial');
size-adjust: 107%;
ascent-override: 90%;
descent-override: 22%;
line-gap-override: 0%;
}
Tools für die Analyse
PageSpeed Insights
Googles offizielles Tool kombiniert Lab-Daten (simulierte Tests) mit Field-Daten (echte Nutzermessungen aus dem Chrome User Experience Report). Die Field-Daten sind entscheidend für das Ranking.
Chrome DevTools Performance Panel
Für detaillierte Analysen unersetzlich. Der Performance-Tab zeigt exakt, welche Scripts den Main Thread blockieren, wo Layout Shifts auftreten und welche Ressourcen das Rendering verzögern.
WebPageTest
Ermöglicht Tests von verschiedenen Standorten und Verbindungsgeschwindigkeiten. Die Filmstrip-Ansicht visualisiert den Ladevorgang Frame für Frame.
Lighthouse CI
Für automatisierte Performance-Regression-Tests in der CI/CD-Pipeline. Jeder Deployment-Kandidat wird gegen definierte Schwellenwerte geprüft:
assertions:
categories:performance:
- error
- minScore: 0.95
largest-contentful-paint:
- warn
- maxNumericValue: 2500
Reale Ergebnisse: Vorher und Nachher
Ein typisches Optimierungsprojekt aus meiner Praxis zeigt das Potenzial:
Ausgangslage: Corporate Website mit WordPress, Performance Score 34
- Unkomprimierte PNG-Bilder (Hero: 3,2 MB)
- 14 Render-blockierende Scripts (Analytics, Chat, Social Plugins)
- Keine Cache-Header konfiguriert
- System-Fonts nicht optimiert, CLS von 0,42
Nach der Optimierung: Performance Score 100
- Bilder in AVIF/WebP mit Responsive srcset (Hero: 89 KB)
- Scripts auf 2 reduziert, Rest eliminiert oder durch leichtere Alternativen ersetzt
- Immutable Caching für Assets, CDN-Auslieferung
- Font-Preloading mit size-adjust, CLS von 0,001
- Migration zu Astro mit Static Site Generation
Die konkreten Verbesserungen: LCP von 6,8 Sekunden auf 0,9 Sekunden, TBT von 2.400 ms auf 12 ms, CLS von 0,42 auf 0,001. Die Seitengewicht sank von 4,8 MB auf 380 KB.
Fazit: Systematik statt Zufall
Ein Lighthouse Score von 100 ist erreichbar - aber nicht durch einzelne Tricks. Es erfordert einen systematischen Ansatz:
- Fundament: Richtige Rendering-Strategie wählen (SSG wo möglich)
- Bilder: Moderne Formate, korrekte Dimensionen, Lazy Loading
- JavaScript: Minimal halten, splitten, defer/async nutzen
- Fonts: Preloading, Subsetting, size-adjust gegen CLS
- Caching: Aggressive Cache-Header, CDN-Einsatz
- Monitoring: Lighthouse CI in der Pipeline, regelmäßige Field-Data-Checks
Nur 47 Prozent aller Websites erreichen 2026 Googles “Good”-Schwellenwerte. Wer hier investiert, verschafft sich einen messbaren Vorteil - nicht nur bei der Nutzererfahrung, sondern direkt im Suchranking.
Häufige Fragen
Was ist ein guter Lighthouse Performance Score?+
Ein Score von 90 bis 100 gilt als gut (grüner Bereich), 50 bis 89 als verbesserungsbedürftig und unter 50 als schlecht. Ein perfekter Score von 100 ist erreichbar, erfordert aber systematische Optimierung über alle sechs gewichteten Metriken hinweg - vor allem niedrige Total Blocking Time, schnelles Largest Contentful Paint und minimalen Cumulative Layout Shift. Entscheidend ist zudem, dass die Field-Daten aus echten Nutzermessungen stimmen, da diese und nicht die Lab-Werte in das Google-Ranking einfließen.
Was ist der Unterschied zwischen INP und dem alten FID?+
Interaction to Next Paint (INP) hat 2024 den First Input Delay (FID) als Core Web Vital ersetzt. FID maß nur die Verzögerung vor der Verarbeitung der ersten Interaktion. INP erfasst dagegen die gesamte Reaktionszeit über alle Interaktionen hinweg - vom Klick bis zur sichtbaren Antwort des Browsers. Als gut gilt ein INP unter 200 Millisekunden. Die häufigste Ursache für schlechte Werte ist zu viel synchrones JavaScript, das den Main Thread blockiert.
Welches Bildformat ist 2026 am besten für Web Performance?+
AVIF liefert 2026 die beste Kompressionsrate und ist bei vergleichbarer Qualität rund 50 Prozent kleiner als JPEG. WebP ist 25 bis 35 Prozent kleiner als JPEG und wird von allen modernen Browsern unterstützt, was es zum verlässlichen Allrounder macht. Die empfohlene Strategie ist ein Fallback-System mit dem picture-Element: zuerst AVIF, dann WebP, zuletzt JPEG als Fallback für ältere Browser.
Du willst mehr erfahren?
In einem kostenlosen Erstgespräch besprechen wir, wie du diese Themen für dein Unternehmen nutzen kannst. Kein Verkaufsgespräch, sondern eine ehrliche Einschätzung.
Kostenloses Erstgespräch vereinbaren



