JavaScript SEO

Picture of Ferenc Collinet
Ferenc Collinet

Moderne Websites sind oft wahre Kunstwerke. Interaktive Elemente, flüssige Animationen und dynamisch nachgeladene Inhalte sorgen für ein beeindruckendes Nutzererlebnis. Die treibende Kraft dahinter ist fast immer JavaScript. Doch während der Nutzer staunt, steht der Googlebot oft vor einem Problem: Er sieht nur eine leere Seite.

Die Frage, die uns deshalb immer wieder von Kunden gestellt wird, ist eine der drängendsten im modernen Webdesign: „Sieht Google meine mit JavaScript erzeugten Inhalte überhaupt?“ Die ehrliche Antwort: Es kommt darauf an.

JavaScript ist für SEO nicht per se schlecht. Aber es erfordert ein tiefes Verständnis dafür, wie Google eine Seite „sieht“. Wenn Entwickler und SEOs nicht an einem Strang ziehen, kann die fortschrittlichste Technologie zu einer unsichtbaren Website führen. In diesem Artikel klären wir die Grundlagen des JavaScript-Renderings, zeigen dir die häufigsten SEO-Fallen und geben dir eine Checkliste an die Hand, mit der du sicherstellst, dass deine Inhalte auch wirklich im Index ankommen.

Warum JS SEO-Probleme macht (und wann nicht)

Um zu verstehen, wo das Problem liegt, müssen wir uns den Prozess des Crawlens und Indexierens genauer ansehen. Früher war es einfach: Google hat den HTML-Code einer Seite heruntergeladen und den Text darin analysiert. Fertig.

Heute ist es komplizierter. Wenn Google auf eine JavaScript-lastige Seite stößt, passiert Folgendes:

  1. Crawling: Google lädt zuerst das rohe HTML herunter. Oft steht da aber kaum etwas drin, außer einem Link zu einer großen JavaScript-Datei.
  2. Rendering: Um zu sehen, was wirklich auf der Seite passiert, muss Google das JavaScript ausführen – ganz ähnlich wie ein Browser. Dieser Prozess wird „Rendering“ genannt. Erst jetzt werden Texte, Bilder und Links sichtbar.
  3. Indexierung: Nur was nach dem Rendering im Code sichtbar ist, kann Google für die Indexierung und das Ranking verwenden.

Das Rendering ist der entscheidende, aber auch ressourcenintensive Schritt. Google kann und will nicht jede Seite sofort rendern. Dieser Prozess kann Stunden, Tage oder manchmal sogar Wochen nach dem ersten Crawl stattfinden. Wenn kritische Informationen erst nach dem Rendering sichtbar werden, entsteht eine gefährliche Lücke.

Ein klassisches Beispiel: Inhalte, die erst nach einem Klick auf einen Button geladen werden. Ein Nutzer klickt darauf, aber der Googlebot tut das in der Regel nicht. Der Inhalt bleibt für die Suchmaschine unsichtbar. Das ist der Kern des Problems: Was der Nutzer im Browser sieht, ist nicht immer das, was Google nach dem Rendering sieht.

Lies hierzu mehr: Crawling vs. Indexierung: Wo liegt der Unterschied?

Damit deine JavaScript-Seite erfolgreich ranken kann, müssen drei grundlegende Elemente für Google ohne Umwege zugänglich sein. Im Idealfall stehen diese bereits im initialen HTML-Code, den Google herunterlädt, und müssen nicht erst aufwendig gerendert werden.

1. Der Inhalt (Content)

Der Text auf deiner Seite ist die Grundlage für dein Ranking. Wenn deine Produktbeschreibungen, Blogartikel oder Dienstleistungen erst durch JavaScript in die Seite geladen werden, besteht die Gefahr, dass Google eine „leere“ Seite indexiert.

Sicheres Pattern: Der wichtigste Text (vor allem der „above the fold“, also im direkt sichtbaren Bereich) sollte serverseitig generiert und direkt im HTML ausgeliefert werden. Das nennt sich Server-Side Rendering (SSR) oder statische Seitengenerierung (SSG).

Interne Links sind die Autobahnen deiner Website. Über sie entdeckt Google neue Unterseiten. Wenn deine Navigation oder deine Links im Text nicht als Standard-HTML-Links implementiert sind, kann Google ihnen nicht folgen.

Fehlerhaftes Pattern:
<div onclick="geheZuSeite('kontakt')">Kontakt</div>
Das sieht für den Nutzer aus wie ein Link, ist aber für Google nur ein Stück Text.

Sicheres Pattern:
<a href="/kontakt">Kontakt</a>
Nur ein klassischer <a>-Tag mit einem href-Attribut ist für Google ein verlässliches Signal, dem der Bot folgen kann. Das gilt auch für die Hauptnavigation.

3. Die Metadaten (Titles, Canonicals & Co.)

SEO-kritische Tags wie der Title, die Meta Description oder das Canonical-Tag müssen sofort lesbar sein. Wenn diese erst client-seitig per JavaScript in den <head> der Seite eingefügt werden, ist es oft zu spät.

Fehlerhaftes Pattern: Das HTML wird mit einem generischen <title>Meine App</title> ausgeliefert, und JavaScript ersetzt ihn später durch den korrekten Titel.
Sicheres Pattern: Jeder Seitentyp liefert vom Server aus seinen einzigartigen, korrekten Title und das passende Canonical-Tag aus.

Häufige Fehler (Lazy Loading, Infinite Scroll, Router-URLs)

Moderne Web-Frameworks bringen viele Funktionen mit, die das Nutzererlebnis verbessern, aber oft zu klassischen SEO-Fallen werden. Hier sind die drei häufigsten Probleme, die wir in der Praxis sehen.

1. Falsch eingesetztes Lazy Loading

Lazy Loading (faules Laden) ist eine Technik, bei der Inhalte erst dann geladen werden, wenn sie in den sichtbaren Bereich des Nutzers scrollen. Das ist super für Bilder, um die Ladezeit zu verkürzen.

Der Fehler: Wenn diese Technik auch für Textinhalte oder Links unterhalb des sichtbaren Bereichs eingesetzt wird, kann es passieren, dass Google diese nie zu sehen bekommt. Der Bot scrollt nicht immer bis zum Ende einer Seite, besonders wenn sie sehr lang ist.

2. Infinite Scroll ohne Fallback

Infinite Scroll ist beliebt bei Blogs oder Produktlisten. Statt auf „Seite 2“ zu klicken, scrollt der Nutzer einfach weiter, und neue Inhalte werden automatisch nachgeladen.

Der Fehler: Wenn es im Hintergrund keine klassische Paginierung mit erreichbaren URLs wie /seite/2, /seite/3 gibt, existieren die Inhalte am Ende des Feeds für Google nicht. Der Bot kann nicht unendlich scrollen. Alles, was nach dem ersten Ladevorgang kommt, bleibt unentdeckt.

Sicheres Pattern: Implementiere Infinite Scroll so, dass bei jedem Nachladen die URL in der Adresszeile aktualisiert wird (z. B. auf /seite/2). Sorge gleichzeitig dafür, dass diese paginierten URLs auch direkt aufrufbar und verlinkt sind.

3. URL-Chaos durch Client-Side-Router

Moderne Single-Page-Applications (SPAs) simulieren Seitenwechsel oft nur, ohne die Seite neu zu laden. Die URL wird dabei per JavaScript manipuliert. Das kann zu unschönen und für Google problematischen URL-Strukturen führen.

Fehlerhaftes Pattern: URLs mit Hashbangs (/#!/seite) oder unzähligen Parametern. Google hat oft Schwierigkeiten, diese korrekt zu interpretieren und als eigenständige Seiten zu behandeln.

Sicheres Pattern: Nutze die History API, um saubere, „echte“ URLs zu erzeugen (z. B. /kategorie/produkt). Stelle sicher, dass jede dieser URLs auch bei einem direkten Aufruf (ohne JavaScript) den korrekten Inhalt vom Server liefert.

Quickcheck: pragmatische Tests (ohne Tool-Wüste)

Du musst kein Entwickler sein, um grundlegende JavaScript-SEO-Probleme zu erkennen. Mit ein paar einfachen Tricks kannst du schnell herausfinden, was Google sieht.

1. Quelltext vs. gerendertes DOM

  • „Seitenquelltext anzeigen“ (Rechtsklick im Browser): Das ist der rohe HTML-Code, den Google zuerst sieht. Findest du hier deinen wichtigsten Inhalt? Oder nur Skript-Tags?
  • „Untersuchen“ (Entwickler-Tools): Das zeigt dir das „Document Object Model“ (DOM), also den Zustand der Seite, nachdem JavaScript ausgeführt wurde. Wenn dein Inhalt nur hier auftaucht, aber nicht im Quelltext, bist du auf JavaScript angewiesen.

2. Der Google Mobile-Friendly Test

Dieses kostenlose Tool von Google rendert deine Seite und zeigt dir, was der Googlebot sieht.

  • Screenshot: Sieht die gerenderte Seite kaputt oder leer aus? Das ist ein Alarmsignal.
  • HTML-Code: Das Tool zeigt dir auch den gerenderten HTML-Code. Suche dort nach deinen Inhalten und Links.

3. JavaScript deaktivieren

Nutze eine Browser-Erweiterung, um JavaScript mit einem Klick zu deaktivieren. Was bleibt von deiner Seite übrig? Wenn nur noch eine leere Seite oder eine Fehlermeldung erscheint, ist deine Website komplett von JavaScript abhängig. Das ist ein hohes Risiko für SEO.

Mini-Beispiel für deine Routine:
Teste nach jedem größeren Release drei deiner wichtigsten Seitentypen (Templates): eine Kategorieseite, eine Produktdetailseite und einen Blogartikel. Wenn diese drei funktionieren, ist die Wahrscheinlichkeit hoch, dass der Rest deiner Seite auch sauber läuft.


FAQ: Häufige Fragen zu JavaScript SEO

Ist Server-Side Rendering (SSR) Pflicht für gutes SEO?
Pflicht nicht, aber es ist der sicherste und zuverlässigste Weg. Mit SSR bekommt Google von Anfang an den vollen HTML-Code und muss sich nicht auf das fehleranfällige client-seitige Rendering verlassen. Für inhaltskritische Seiten ist es die klare Empfehlung.

Ist eine Single-Page-Application (SPA) immer schlecht für SEO?
Nicht zwangsläufig, aber sie erfordert eine sehr saubere technische Umsetzung (z. B. mit SSR oder Prerendering-Diensten). Eine rein client-seitig gerenderte SPA ist ein hohes SEO-Risiko.

Was ist beim Lazy Loading von Bildern zu beachten?
Für Bilder ist Lazy Loading super. Wichtig ist nur, dass der <img>-Tag einen src-Attribut mit einer gültigen Bild-URL enthält, auch wenn das eigentliche Bild erst später geladen wird. Google kann diese URL dann trotzdem crawlen.


Fazit: Mache es Google einfach, dich zu lieben

JavaScript hat das Web besser und interaktiver gemacht. Für SEO bedeutet es aber vor allem: Mache es dem Googlebot so einfach wie möglich. Verstecke keine wichtigen Inhalte oder Links hinter Klicks oder komplexen Skripten.

Die goldene Regel des technischen SEO gilt hier mehr denn je: Was für den Nutzer einfach und intuitiv ist, muss auch für die Maschine klar und unmissverständlich sein. Eine gute JavaScript-SEO-Strategie sorgt dafür, dass die brillante User Experience, die deine Entwickler geschaffen haben, auch von Google gesehen und mit guten Rankings belohnt wird.

Hast du das Gefühl, dass deine aufwendig gestaltete Website bei Google nicht die verdiente Sichtbarkeit erhält?