Lernen
JavaScript SEO Debugging: gerendertes HTML, Hydration und crawlbare Links
Ein Debugging-Leitfaden für React-, Vue-, Nuxt- und Next.js-SEO: wie Google JavaScript rendert, warum Inhalt und Links verschwinden und wie Sie sie crawlbar machen.
Starte ein frisches DomainLens-Audit und nutze den Report als Prioritätenliste.
Wie Google JavaScript wirklich rendert
Google verarbeitet eine JavaScript-Seite in zwei Wellen. Zuerst crawlt es die rohe HTML-Antwort; dann, wenn Rendering-Ressourcen verfügbar sind, führt es die Seite in einem headless Chromium aus und indexiert das gerenderte DOM. Die Lücke zwischen diesen Wellen macht JavaScript-SEO-Probleme so subtil: die Seite läuft im Browser perfekt, aber der Crawler indexierte etwas anderes — oder rendert spät, oder gar nicht.
Die wichtigste Gewohnheit ist, dem „Seitenquelltext“ nicht mehr zu vertrauen. Es zählt das gerenderte HTML: was nach der JavaScript-Ausführung im DOM existiert, denn das indexiert Google. Die meisten JS-SEO-Bugs sind nur ein Unterschied zwischen beiden.
Die Fehler, die Inhalt vor Crawlern verstecken
- Inhalt, der erst nach einem clientseitigen Daten-Fetch mountet, sodass initiales und gerendertes HTML leer sind und das Rendering vorher ablaufen kann.
- Links als <span> oder <div> mit onclick oder javascript:-URLs — Google folgt nur <a href>, diese Seiten sind unentdeckbar.
- Metadaten (Title, Canonical, Robots, Hreflang), die per Client-JavaScript gesetzt werden und übersehen werden oder nach der ersten Welle kommen.
- Routing über die History API ohne serverseitige URLs, sodass tiefe Seiten keinen crawlbaren Einstieg haben.
- Googlebot in robots.txt von JS- oder CSS-Bundles ausschließen, sodass es die Seite nicht rendern kann.
So prüfen Sie das gerenderte HTML
JS-SEO-Debugging heißt vor allem: vergleichen, was Sie ausliefern, mit dem, was der Crawler sieht.
- Nutzen Sie URL-Prüfung → „Live-URL testen“ → gerendertes HTML und Screenshot; das ist Googles Render, nicht der Ihres Browsers.
- Vergleichen Sie die rohe Antwort (curl oder „Quelltext“) mit dem gerenderten DOM (Elements) — Inhalt im DOM, aber nicht in der Antwort, ist JS-abhängig.
- Deaktivieren Sie JavaScript in DevTools und laden Sie neu: was verschwindet, ist für die erste Welle unsichtbar und gefährdet, wenn das Rendering verzögert.
- Prüfen Sie, dass Title, Canonical und Robots-Meta im gerenderten HTML existieren und Ihrer Absicht entsprechen.
- Bestätigen Sie, dass interne Links echte <a href> im DOM sind, keine Klick-Handler.
So machen Sie eine JavaScript-Seite crawlbar
- Rendern Sie Inhalt und Metadaten serverseitig oder pre-rendern Sie sie ins initiale HTML — SSR (Next.js, Nuxt), statische Generierung oder Hydration auf Serverausgabe.
- Geben Sie echte <a href>-Links für jede Route aus, die gecrawlt und indexiert werden soll.
- Setzen Sie kritische SEO-Tags (Title, Canonical, Robots, Hreflang) serverseitig, nicht nach der Hydration.
- Blockieren Sie nie JS/CSS-Ressourcen in robots.txt; Google braucht sie zum Rendern.
- Halten Sie die gerenderte Ausgabe stabil und schnell — ein abgelaufenes Rendering gilt, als sei der Inhalt nicht da.
Fehler, die JS-SEO verschlimmern
- Annehmen, „Google rendert jetzt JavaScript“ heiße, jedes JS-Muster sei sicher — Rendering ist verzögert, budgetiert und kann scheitern.
- SEO-Tags in den Browser-DevTools statt im gerenderten HTML von Google testen.
- Einen Soft 404 (Status 200 mit leerer SPA-Hülle) für nicht existierende Routen verwenden.
- Googlebot anderen Inhalt als Nutzern ausliefern, um das Rendering zu „helfen“ — das ist Cloaking.
So validieren Sie den Fix
Führen Sie die URL-Prüfung erneut aus und bestätigen Sie, dass das gerenderte HTML jetzt den Inhalt, die korrekten Canonical- und Robots-Tags und crawlbare Links enthält. Verfolgen Sie dann den Indexierungsbericht über die nächsten Tage, bis die URLs in den Index wandern.
Behandeln Sie in DomainLens das gerenderte HTML als Wahrheit: es holt und liest die Seite wie ein Crawler, sodass ein Title, Canonical oder Link, der nur nach der Hydration existiert, als fehlend erscheint — genau so, wie Google es sehen kann.