Rendering: SSR vs. CSR & JavaScript-SEO
Bevor eine Suchmaschine deine Seite ranken kann, muss sie sie zuerst sehen. Doch was Googlebot „sieht", hängt vollständig davon ab, wie deine Seite gerendert wird — also davon, wie aus rohem HTML, CSS und JavaScript der finale Inhalt entsteht. Die Wahl zwischen Server-Side Rendering (SSR) und Client-Side Rendering (CSR) ist eine der folgenreichsten Entscheidungen im technischen SEO, die du treffen kannst. Dieser Leitfaden erklärt die Rendering-Modelle, wie Googlebot JavaScript verarbeitet und wie du sicherstellst, dass deine Inhalte auch tatsächlich indexiert werden.
1. Was bedeutet „Rendering" im SEO?
Rendering ist der Prozess, bei dem die Ressourcen einer Webseite — das HTML-Dokument, das CSS und jegliches JavaScript — in das Document Object Model (DOM) umgewandelt werden: die lebendige, im Speicher gehaltene Repräsentation der Seite, die ein Browser (oder eine Suchmaschine) lesen und indexieren kann.
Die entscheidende Unterscheidung fürs SEO besteht zwischen zwei Zuständen der Seite:
- Der rohe HTML-Quelltext: genau das, was der Server in seiner ersten Antwort zurücksendet. Das ist das, was du siehst, wenn du auf „Seitenquelltext anzeigen" klickst. Es wurde noch kein JavaScript ausgeführt.
- Das gerenderte DOM: die finale Struktur, nachdem der Browser JavaScript ausgeführt, Daten geladen und die Seite verändert hat. Das ist das, was du im „Inspect"- bzw. Elemente-Bereich deiner Entwicklertools siehst.
Wenn beide identisch sind, ist alles einfach: Alles, was ein Crawler braucht, steckt schon in der ersten Antwort. Wenn sie sich unterscheiden — weil JavaScript den Titel, die Überschriften, den Fließtext oder die internen Links einfügt — muss die Suchmaschine zusätzliche Arbeit leisten, um diesen Inhalt zu entdecken, und manchmal gelingt ihr das nie.
2. Client-Side Rendering (CSR)
Beim Client-Side Rendering sendet der Server eine nahezu leere HTML-Hülle, und der Browser baut den eigentlichen Inhalt mithilfe von JavaScript auf. Das ist das Standardmodell für Single Page Applications (SPAs), die mit Frameworks wie React, Vue und Angular entwickelt werden.
Die erste HTML-Antwort sieht oft so aus:
<!DOCTYPE html>
<html>
<head>
<title>Wird geladen...</title>
</head>
<body>
<div id="root"></div>
<script src="/static/js/bundle.js"></script>
</body>
</html>
Der gesamte eigentliche Inhalt — Überschriften, Absätze, Links, Meta-Tags — wird erst dann in
dieses leere <div id="root"> eingefügt, nachdem bundle.js heruntergeladen,
geparst und ausgeführt wurde.
Die Vorteile von CSR:
- Flotte, app-ähnliche Navigation nach dem ersten Laden (keine vollständigen Seiten-Neuladen).
- Geringere Serverlast — die Rendering-Arbeit wird auf das Gerät des Nutzers ausgelagert.
- Eine saubere Trennung zwischen einer Backend-API und einem Frontend-Client.
Die SEO-Risiken von CSR:
- Das initiale HTML ist inhaltlich praktisch leer. Jeder Crawler, der kein JavaScript ausführt, sieht nichts Verwertbares.
- Sämtliche indexierbaren Inhalte hängen von einer erfolgreichen JS-Ausführung ab. Ein einziger Skriptfehler, eine blockierte Ressource oder ein langsamer API-Aufruf kann die Seite in den Augen eines Crawlers leer lassen.
- Kritische SEO-Elemente (Title, Meta Description, Canonical, strukturierte Daten) werden häufig per JavaScript hinzugefügt, was ihre Entdeckung verzögert oder gefährdet.
Achtung: „Bei mir im Browser funktioniert es" ist kein Beweis dafür, dass es auch für Crawler funktioniert. Dein Browser ist eine erstklassige Rendering-Engine ohne Zeitlimit. Suchbots, Social-Scraper und KI-Crawler haben oft strenge Budgets — oder gar keine JavaScript-Engine. Reines CSR kann bedeuten, dass deine wichtigsten Seiten für einen großen Teil des Webs faktisch unsichtbar sind.
3. Server-Side Rendering (SSR)
Beim Server-Side Rendering führt der Server das JavaScript aus und stellt das vollständige HTML zusammen, bevor er es an den Client sendet. Der Inhalt ist bereits in der allerersten Antwort vorhanden, sodass ein Crawler sofort eine vollständig befüllte Seite erhält — ohne dass JS ausgeführt werden muss.
Die erste Antwort einer SSR-Seite sieht viel eher aus wie eine klassische Website:
<!DOCTYPE html>
<html>
<head>
<title>Beste Laufschuhe für Einsteiger 2026 - ShoeStore</title>
<meta name="description" content="Unser handverlesener Ratgeber zu...">
</head>
<body>
<div id="root">
<h1>Die Top 10 Laufschuhe für Einsteiger</h1>
<p>Die Wahl deines ersten Paars Laufschuhe...</p>
<a href="/reviews/nike-pegasus">Lies unseren Nike-Test</a>
</div>
<script src="/static/js/bundle.js"></script>
</body>
</html>
Beachte, dass Überschrift, Absatz und interner Link alle bereits im rohen HTML vorhanden sind. JavaScript kann die Seite anschließend trotzdem „hydratisieren", um Interaktivität hinzuzufügen, doch der Inhalt ist für die Indexierung nicht darauf angewiesen.
SSR ist die sicherste Wahl fürs SEO. Beliebte Frameworks, die es zugänglich machen, sind unter anderem Next.js (React) und Nuxt (Vue) — beide erlauben es dir, die Entwickler-Experience einer modernen SPA beizubehalten und gleichzeitig echtes HTML schon bei der ersten Anfrage auszuliefern.
4. SSG, ISR & Dynamic Rendering
SSR und CSR sind die beiden Pole eines Spektrums. Dazwischen liegen mehrere hybride Strategien:
- Static Site Generation (SSG): Die Seiten werden zur Build-Zeit in reine HTML-Dateien gerendert und anschließend von einem CDN ausgeliefert. Das ist die schnellste und crawler-freundlichste Option, ideal für Inhalte, die sich nicht pro Anfrage ändern (Blogs, Dokumentationen, Marketing-Seiten).
- Incremental Static Regeneration (ISR): Ein hybrider Ansatz, bei dem statisch generierte Seiten im Hintergrund nach einem Zeitplan oder bei Bedarf neu erstellt werden. Du bekommst die Geschwindigkeit von SSG mit der Aktualität von SSR — populär gemacht durch Next.js.
- Hydration: Der Vorgang, bei dem JavaScript-Event-Handler an serverseitig gerendertes HTML angehängt werden, damit es interaktiv wird. Der Inhalt ist bereits da; die Hydration „weckt ihn nur auf". Achte auf Hydration-Mismatches, die Flackern oder doppelten Inhalt verursachen können.
- Dynamic Rendering: Ein Workaround, bei dem der Server den User-Agent eines Bots erkennt und ihm einen vorgerenderten HTML-Snapshot ausliefert, während echte Nutzer die normale CSR-App erhalten.
Achtung: Dynamic Rendering ist von Google inzwischen offiziell als veraltet eingestuft. Es war immer nur als vorübergehendes Pflaster gedacht, ist im Betrieb fehleranfällig, kann in Richtung Cloaking abdriften, und moderne Alternativen (SSR/SSG/ISR) lösen das Problem sauber. Baue keine neue Website darauf auf — greife stattdessen zu echtem Server-Side Rendering.
5. Wie Googlebot JavaScript rendert
Google rendert JavaScript durchaus — aber nicht in einem einzigen Schritt. Die Pipeline hat drei eigenständige Phasen:
- Crawl: Googlebot ruft die URL ab und liest die rohe HTML-Antwort. In dieser Phase entdeckt der Bot Links und reiht neue URLs in die Warteschlange ein.
- Render-Warteschlange: Wenn die Seite JavaScript benötigt, um ihren Inhalt anzuzeigen, wird die URL in eine Render-Warteschlange eingereiht, wo sie auf Ressourcen des Web Rendering Service (einer Headless-Chromium-Instanz) wartet.
- Index: Sobald gerendert wurde, wird das finale DOM geparst und die entdeckten Inhalte und Links werden indexiert.
Diese Aufteilung erzeugt das bekannte Konzept der „zwei Indexierungswellen". In der ersten Welle indexiert Google alles, was im rohen HTML steht. In der zweiten Welle — die Sekunden, Stunden oder sogar Tage später eintreffen kann — indexiert es die per JavaScript gerenderten Inhalte. Wenn dein Inhalt nur in dieser zweiten Welle existiert, wird er verspätet indexiert, und alle erst nach dem Rendering entdeckten Links werden noch später gecrawlt.
Zwei praktische Realitäten verschärfen das Problem:
- Render-Budget & Latenz: JavaScript im Web-Maßstab zu rendern ist teuer. Google weist ein begrenztes Budget zu, sodass schwere oder langsame Seiten möglicherweise nachrangig behandelt oder unvollständig gerendert werden.
- Andere Crawler sind beim JS deutlich schlechter: Bing rendert teilweise JavaScript, aber weniger zuverlässig. Social-Scraper (Facebook, LinkedIn, X) und viele KI-Crawler (die Bots, die LLMs und KI-Suche füttern) führen JavaScript häufig überhaupt nicht aus. Für sie ist dein rohes HTML deine Seite.
6. Warum SSR vs. CSR fürs SEO wichtig ist
Das Rendering-Modell berührt nahezu jede Säule des technischen SEO:
- Indexierbarkeit: Inhalte, die zum Zeitpunkt der Indexierung nicht im gerenderten DOM vorhanden sind, werden schlicht nicht indexiert. Bei CSR bedeutet ein JS-Fehler verlorenen Inhalt; bei SSR ist der Inhalt in der Antwort garantiert.
- Crawl-Effizienz: Wenn Links im rohen HTML stehen, entdeckt und crawlt Google deine Seite schneller. CSR-Seiten zwingen Google durch die langsame Render-Warteschlange, nur um interne Links zu finden, und verschwenden so Crawl-Budget.
- Performance & Core Web Vitals: CSR liefert große JS-Bundles aus, die den First Contentful Paint verzögern und Largest Contentful Paint sowie Interaction to Next Paint verschlechtern. SSR/SSG liefern sichtbaren Inhalt schneller und verbessern die Vitals, die in die Page-Experience-Signale einfließen.
- Social- & KI-Sichtbarkeit: Da Social-Scraper und KI-Bots JS oft überspringen, ist SSR unverzichtbar für ansprechende Link-Vorschauen und dafür, in KI-generierten Antworten repräsentiert zu sein.
Profi-Tipp: Rank-O-Saur führt für jede Seite einen direkten SSR-vs.-CSR-Vergleich durch. Es ruft das rohe Server-HTML ab und vergleicht es mit dem vollständig gerenderten DOM und zeigt dir dann ganz genau, welche Elemente in der Server-Antwort vorhanden sind und welche erst später per JavaScript hinzugefügt werden — SEO-Tags (Title, Description, Canonical), Überschriften, Body-Inhalt, Links, Bilder und Markup für strukturierte Daten. Wenn ein kritisches Element nur in der gerenderten Spalte auftaucht, hast du ein Rendering-Risiko gefunden, bevor Google es tut.
7. So überprüfst du dein Rendering
Du musst nicht raten, wie deine Seite rendert. Hier sind die schnellsten Wege, sie zu inspizieren:
- Quelltext anzeigen vs. Inspect: Klicke mit der rechten Maustaste und wähle „Seitenquelltext anzeigen", um das rohe HTML zu sehen, das der Server gesendet hat. Öffne dann die DevTools und sieh dir den Tab „Elemente" an, um das gerenderte DOM zu sehen. Wenn dein Inhalt im zweiten vorhanden, im ersten aber nicht enthalten ist, wird er per JavaScript hinzugefügt.
- Das URL-Prüftool: Inspiziere in der Google Search Console eine Live-URL und sieh dir das HTML und den Screenshot der „getesteten Seite" an. Das zeigt dir, was Google tatsächlich gerendert hat — die Wahrheit.
- JavaScript deaktivieren: Nutze die DevTools (Befehlspalette → „Disable JavaScript") und lade die Seite neu. Alles, was verschwindet, ist Inhalt, den ein Crawler ohne JS niemals sehen würde.
- Suche nach einer eindeutigen Textstelle: Nimm einen Satz, der nur auf der gerenderten Seite vorkommt, und suche bei Google in Anführungszeichen danach. Taucht er nicht auf, ist dieser Inhalt möglicherweise nicht indexiert.
8. Best Practices
- Bevorzuge SSR oder SSG für kritische Inhalte: Alles, was ranken muss — Produktseiten, Artikel, Kategorieseiten — sollte serverseitig gerendert oder statisch generiert werden, niemals allein clientseitigem JavaScript überlassen.
- Platziere zentrale SEO-Elemente im initialen HTML: Der Title Tag, die Meta Description,
der Canonical-Link, strukturierte Daten,
<h1>und der Haupttext sollten alle in der rohen Server-Antwort vorhanden sein und nicht erst nach dem Laden eingefügt werden. - Verwende echte, crawlbare Links: Die interne Navigation sollte korrekte
<a href>-Anker im HTML nutzen, nichtonclick-Handler, die erst nach der JS-Ausführung funktionieren. - Verstecke Inhalte nicht hinter Interaktionen: Inhalte, die erst bei Klick, Scrollen oder Hover erscheinen, werden möglicherweise ignoriert. Stelle sicher, dass indexierbarer Text standardmäßig im DOM vorhanden ist.
- Blockiere deine Ressourcen nicht: Vergewissere dich, dass die
robots.txtnicht die JS- und CSS-Dateien blockiert, die Google zum Rendern der Seite benötigt. - Teste das gerenderte Ergebnis regelmäßig: Das Rendering kann nach einem Deploy unbemerkt kaputtgehen. Mache den SSR-vs.-CSR-Vergleich und die URL-Prüfung zu einem festen Bestandteil deiner Routine-QA.