Dynamic Rendering JavaScript SEO – Googlebot richtig bedienen
Technisches SEO

Dynamic Rendering für JavaScript SEO: So liest Googlebot deine Website richtig

Shift07 Team
17. April 2026
12 Min. Lesezeit
Technisches SEO

Du hast eine moderne React-, Angular- oder Vue-App gebaut — die Website sieht toll aus, läuft schnell, und Nutzer lieben sie. Doch in der Google Search Console siehst du erschreckend wenige indexierte Seiten. Der Grund: Googlebot kämpft damit, deine JavaScript-Inhalte zu lesen. Dynamic Rendering ist eine der wichtigsten Lösungen für dieses Problem — und in diesem Artikel erfährst du genau, wie sie funktioniert und wann du sie brauchst.

Das Grundproblem: Googlebot und JavaScript

Moderne Webanwendungen liefern beim ersten Aufruf oft eine fast leere HTML-Datei aus. Der eigentliche Inhalt — Texte, Links, strukturierte Daten — wird erst durch JavaScript im Browser gerendert. Das nennt sich Client-Side Rendering (CSR). Für Menschen im Browser ist das kein Problem. Für Googlebot schon.

Googlebot verarbeitet Websites in einem zweistufigen Prozess, dem Two-Wave Indexing:

  1. Welle 1 — HTML-Crawl: Googlebot ruft deine Seite ab und liest das rohe HTML. JavaScript wird in dieser Phase noch nicht ausgeführt. Was Googlebot hier sieht, ist oft nur ein leeres <div id="app"></div>.
  2. Welle 2 — JavaScript-Rendering: Zu einem späteren Zeitpunkt — Minuten, Stunden oder sogar Tage später — rendert Googlebot die Seite mit seinem Chromium-basierten Renderer. Erst jetzt sind die eigentlichen Inhalte sichtbar.

Das Problem dieser Verzögerung: Zwischen Crawl und Rendering können Tage vergehen. Neue Inhalte werden langsam indexiert. Links, die erst durch JavaScript erscheinen, werden unter Umständen übersehen. Und da Googlebot beim Rendering Ressourcen limitiert, kommt es vor, dass manche Seiten gar nicht vollständig gerendert werden.

Wichtig: Googles JavaScript-Support hat sich verbessert, aber er ist nicht perfekt. Bei komplexen SPAs, verschachtelten async-Operationen oder großen JavaScript-Bundles kann Google Inhalte nicht zuverlässig indexieren. Verlasse dich nicht darauf, dass Googlebot deine JS-Inhalte immer korrekt rendert.

Was ist Dynamic Rendering?

Dynamic Rendering ist eine Technik, bei der du unterschiedliche Versionen deiner Website an verschiedene User-Agents auslieferst:

  • Normale Nutzer (Browser): Erhalten die reguläre JavaScript-App — mit all ihrer Interaktivität.
  • Suchmaschinen-Crawler (Googlebot, Bingbot etc.): Erhalten eine vorgerenderte, statische HTML-Version derselben Seite.

Der Trick: Du verwendest einen Prerenderer-Service (z.B. Rendertron, Prerender.io, oder eine eigene Puppeteer-Instanz), der deine Seite im Hintergrund rendert und den resultierenden HTML-Snapshot speichert. Wenn ein Crawler deine Website besucht, lieferst du diesen Snapshot aus — vollständiger HTML-Inhalt, sofort sichtbar, keine JavaScript-Ausführung nötig.

Der Ablauf im Detail

Ein typischer Dynamic-Rendering-Workflow sieht so aus:

  1. Anfrage kommt auf deinem Server an
  2. Server prüft den User-Agent: Ist es ein bekannter Crawler?
  3. Wenn Crawler: Server fragt den Prerenderer nach dem HTML-Snapshot
  4. Prerenderer lädt die Seite in einem Headless Browser, wartet auf JavaScript-Ausführung, gibt das gerenderte HTML zurück
  5. Server liefert dieses HTML an den Crawler aus
  6. Wenn normaler Nutzer: Server liefert die reguläre JavaScript-App aus

Das Ergebnis: Googlebot sieht vollständigen, strukturierten HTML-Inhalt — ohne die Wartezeit des Two-Wave Indexings.

Dynamic Rendering vs. Server-Side Rendering: Was ist der Unterschied?

Diese Frage kommt häufig auf, daher der direkte Vergleich:

Kriterium Dynamic Rendering Server-Side Rendering (SSR)
Nutzer-Erfahrung Normale SPA HTML vom Server
Crawler-Erfahrung Vorgerendertes HTML HTML vom Server
Technischer Aufwand Mittel (Prerenderer einrichten) Hoch (Architekturänderung)
Performance für Nutzer Wie normale SPA Schnelleres erstes Rendering
Geeignet für Bestehende SPAs nachrüsten Neubauten, wichtige SEO-Seiten
Google-Empfehlung Übergangslösung Langfristig bevorzugt

Google bezeichnet Dynamic Rendering ausdrücklich als Übergangslösung ("workaround"), nicht als beste Langzeitstrategie. Die langfristige Empfehlung ist SSR oder Static Site Generation. Trotzdem ist Dynamic Rendering für viele Teams die pragmatische Lösung, wenn eine Architekturmigration zu aufwändig wäre.

Wann brauchst du Dynamic Rendering wirklich?

Nicht jede Website braucht Dynamic Rendering. Hier die wichtigsten Entscheidungskriterien:

Du brauchst Dynamic Rendering wenn:

  • Deine Website ist eine SPA (React, Angular, Vue) und du bemerkst, dass Google viele Seiten nicht oder nur langsam indexiert
  • In der Google Search Console siehst du viele Seiten mit Status "Crawled — currently not indexed" oder "Discovered — currently not indexed"
  • Die URL-Inspektion in der Search Console zeigt beim gerenderten HTML deutlich weniger Inhalt als im Browser sichtbar ist
  • Du hast wichtige Inhalte, die hinter async-API-Calls stecken (z.B. Produktdaten von einer externen API)
  • Deine Navigation wird komplett per JavaScript gerendert — Googlebot kann Links nicht finden

Du brauchst es wahrscheinlich nicht wenn:

  • Deine Website nutzt SSR (Next.js, Nuxt.js, SvelteKit) oder Static Generation
  • Dein Hauptinhalt ist im initialen HTML-Response enthalten (auch wenn JS später Dynamik hinzufügt)
  • Es sich um eine interne App handelt, die nicht indexiert werden soll
  • Die Google Search Console zeigt normale Indexierung ohne Probleme

Dynamic Rendering implementieren: Schritt für Schritt

Option 1: Rendertron (Open Source, selbst gehostet)

Rendertron ist Googles eigenes Open-Source-Tool für Dynamic Rendering. Es basiert auf Puppeteer und Headless Chrome.

Schritt 1: Rendertron aufsetzen

npm install -g rendertron
# Oder mit Docker:
docker pull gcr.io/rendertron/rendertron
docker run -p 3000:3000 gcr.io/rendertron/rendertron

Schritt 2: Nginx Konfiguration für Crawler-Erkennung

location / {
  # User-Agent Crawler-Erkennung
  set $prerender 0;
  if ($http_user_agent ~* "googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|showyoubot|outbrain|pinterest\/0\.|developers\.google\.com\/\+\/web\/snippet|slurp|vkShare|W3C_Validator|whatsapp") {
    set $prerender 1;
  }
  if ($uri ~* "\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff|woff2|svg|eot)") {
    set $prerender 0;
  }

  if ($prerender = 1) {
    proxy_pass http://localhost:3000/render/https://$host$request_uri;
  }
}

Schritt 3: Testen

Rufe deine Website mit einem Crawler-User-Agent auf:

curl -H "User-Agent: Googlebot" https://deine-website.de/

Das zurückgegebene HTML sollte vollständigen, gerenderten Inhalt enthalten.

Option 2: Prerender.io (Cloud-Service)

Prerender.io ist ein gehosteter Service, der Dynamic Rendering als Managed Service anbietet. Für kleinere Websites gibt es einen kostenlosen Tier. Die Integration erfolgt über ein Middleware-Package:

# Node.js / Express
npm install prerender-node
app.use(require('prerender-node').set('prerenderToken', 'DEIN-TOKEN'));

Der Vorteil: Kein eigener Server, automatisches Caching der gerenderten Seiten, Monitoring-Dashboard.

Option 3: Cloudflare Workers / Edge Rendering

Für Nutzer von Cloudflare: Mit Workers kannst du Dynamic Rendering direkt am Edge implementieren — ohne eigenen Prerenderer-Server:

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

const CRAWLERS = ['googlebot', 'bingbot', 'yandexbot'];

async function handleRequest(request) {
  const ua = request.headers.get('User-Agent') || '';
  const isCrawler = CRAWLERS.some(bot => ua.toLowerCase().includes(bot));

  if (isCrawler) {
    // Prerendered HTML aus Cache oder Prerenderer holen
    const prerenderedUrl = `https://dein-prerenderer.de/render/${request.url}`;
    return fetch(prerenderedUrl);
  }

  return fetch(request);
}

Häufige Fehler bei Dynamic Rendering

Fehler 1: Cloaking-Verdacht

Google unterscheidet ausdrücklich zwischen Dynamic Rendering und Cloaking. Cloaking liegt vor, wenn du dem Crawler absichtlich andere Inhalte zeigst als dem Nutzer — um Rankings zu manipulieren. Dynamic Rendering ist kein Cloaking, solange:

  • Der gerenderte Inhalt der Seite inhaltlich mit der normalen Version übereinstimmt
  • Du keine Crawler-spezifischen Keywords oder Texte einfügst
  • Der Snapshot aktuell gehalten wird (veraltete Snapshots können problematisch sein)

Achtung: Wenn du im Prerenderer-Snapshot andere Inhalte zeigst als im Browser — zum Beispiel um Rankings zu verbessern — ist das Cloaking und verstößt gegen Googles Richtlinien. Dynamic Rendering muss denselben Inhalt in anderer Form zeigen.

Fehler 2: Veraltete Snapshots

Wenn du Snapshots cacht, müssen sie bei Inhaltsänderungen invalidiert werden. Ein häufiges Problem: Produktseiten zeigen nach Preisänderungen noch den alten Preis, weil der Snapshot nicht aktualisiert wurde. Implementiere Cache-Invalidierung bei Content-Updates.

Fehler 3: Infinite Scroll und Pagination

Infinite Scroll ist für Crawler oft unsichtbar. Das pregerenderte Snapshot zeigt nur den initialen Viewport. Sorge dafür, dass paginierte Inhalte über reguläre URLs erreichbar sind (z.B. ?page=2) — nicht nur durch Scrollen.

Fehler 4: Zu aggressives Crawler-Blocking

Manche Prerenderer blocken externe Ressourcen während des Renderings, um schneller zu sein. Das kann dazu führen, dass Inhalte, die von externen APIs geladen werden, im Snapshot fehlen. Stelle sicher, dass der Prerenderer auf alle benötigten Datenquellen zugreifen kann.

Dynamic Rendering überprüfen: So testest du die Implementierung

Bevor du Dynamic Rendering live schaltest, solltest du es gründlich testen:

Test 1: URL-Inspektion in der Search Console

Nutze das "URL inspizieren"-Tool in der Google Search Console. Klicke auf "Live URL testen" — die Ansicht zeigt dir, wie Googlebot deine Seite sieht. Vergleiche den gerenderten HTML-Source mit dem, was im Browser sichtbar ist.

Test 2: cURL mit Googlebot User-Agent

curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
     https://deine-website.de/ | grep -o '<title>.*</title>'

Das zurückgegebene HTML sollte deinen vollen Seiteninhalt enthalten, nicht nur das leere App-Gerüst.

Test 3: Google's Rich Results Test

Rufe den Rich Results Test auf und gib deine URL ein. Das Tool zeigt dir, welche strukturierten Daten Google auf deiner Seite findet — und ob das Dynamic Rendering korrekt funktioniert.

Test 4: Vergleich mit unserem JavaScript-SEO-Checker

Unser kostenloser JavaScript SEO Checker prüft, ob kritische Inhalte deiner Website ohne JavaScript-Ausführung zugänglich sind — ein schneller erster Check bevor du in der Search Console nachschaust.

Dynamic Rendering und Core Web Vitals

Ein oft übersehener Aspekt: Dynamic Rendering beeinflusst deine Core Web Vitals nicht direkt — weil Nutzer weiterhin die reguläre JavaScript-Version sehen. Für CrUX-Daten (Chrome User Experience Report), die Google für Rankings verwendet, zählt die echte Nutzer-Erfahrung, nicht der Crawler-Snapshot.

Das bedeutet: Wenn deine SPA langsam lädt und schlechte Core Web Vitals hat, hilft Dynamic Rendering dabei nicht. Für Performance-Verbesserungen musst du JavaScript-Performance-Techniken wie Lazy Loading und Code Splitting einsetzen.

Die Grenzen von Dynamic Rendering

Trotz seiner Vorteile hat Dynamic Rendering Einschränkungen, die du kennen solltest:

  • Wartungsaufwand: Der Prerenderer muss gewartet, aktualisiert und überwacht werden. Ein ausgefallener Prerenderer bedeutet, dass Crawler keine Inhalte mehr sehen.
  • Kosten: Headless-Chrome-Rendering ist ressourcenintensiv. Bei großen Websites entstehen erhebliche Server- oder Service-Kosten.
  • Komplexität: Die Crawler-Erkennung muss aktuell gehalten werden. Neue Crawler oder veränderte User-Agents können durch das Netz fallen.
  • Kein Ersatz für SSR: Für Seiten mit hoher SEO-Priorität (Landingpages, Produktseiten, Blog) ist SSR oder Static Generation langfristig die bessere Wahl.

Wann du auf SSR oder Static Generation umsteigen solltest

Google selbst empfiehlt, Dynamic Rendering mittelfristig durch SSR oder Static Site Generation zu ersetzen. Überlege den Umstieg wenn:

  • Du mit modernen Frameworks arbeitest und einen Wechsel zu Next.js (React), Nuxt.js (Vue) oder SvelteKit in Betracht ziehen kannst
  • Deine wichtigsten Seiten statisch vorab gerendert werden können (Blog, Landingpages, Produktkataloge)
  • Die Prerenderer-Infrastruktur mehr kostet oder mehr Aufwand macht als eine Framework-Migration

Falls du dich für JavaScript SEO im Detail und die Unterschiede zwischen CSR, SSR und Static Generation interessierst, findest du dort eine ausführliche Erklärung aller Rendering-Ansätze.

Checkliste: Dynamic Rendering richtig einrichten

  • Prerenderer-Service oder -Server aufgesetzt und getestet
  • Crawler-User-Agent-Liste ist aktuell (Googlebot, Bingbot, etc.)
  • Nginx/Apache/CDN leitet Crawler korrekt um
  • Snapshot-Caching und Cache-Invalidierung implementiert
  • Inhalte im Snapshot entsprechen der Nutzer-Version (kein Cloaking)
  • URL-Inspektion in der Search Console zeigt vollständigen Inhalt
  • Monitoring: Alerts bei Prerenderer-Ausfällen
  • Langzeitstrategie für SSR/Static Generation definiert

Fazit: Dynamic Rendering ist eine solide Brückenlesung

Dynamic Rendering löst ein echtes Problem für Teams, die SPAs betreiben und gute SEO-Rankings erzielen wollen, ohne ihre Architektur grundlegend umzubauen. Es ist keine perfekte Lösung — Google nennt es selbst einen "Workaround" — aber es ist eine bewährte Technik, die bei richtiger Implementierung erheblich zur Indexierbarkeit von JavaScript-Websites beiträgt.

Die wichtigsten Punkte zusammengefasst: Nutze Dynamic Rendering als Übergangslösung für bestehende SPAs, die Indexierungsprobleme haben. Sorge dafür, dass der Snapshot dieselben Inhalte zeigt wie die reguläre Seite. Und plane mittel- bis langfristig den Umstieg auf SSR oder Static Generation für deine wichtigsten Seiten.

Wenn du herausfinden möchtest, ob deine Website aktuell Indexierungsprobleme durch JavaScript hat, nutze unsere kostenlose SEO-Analyse auf shift07.ai — sie zeigt dir konkrete technische Probleme, die deinen Rankings schaden könnten.

Teste deine Website jetzt kostenlos

Erhalte eine vollständige SEO-Analyse mit konkreten Verbesserungsvorschlägen.

Analyse starten