RenderDiff – SEO Rendering Diff Checker
RenderDiff ist eine Browser-Erweiterung, welche das initiale HTML jeder Seite mit dem JavaScript-gerenderten DOM vergleicht und jeden SEO-relevanten Unterschied sichtbar macht – Meta-Tags, Headings, JSON-LD auf Property-Ebene, Links, Canonicals, hreflang. Alles lokal im Browser. Keine Cloud. Keine Accounts. Voller Datenschutz.
RenderDiff richtet sich an SEO-Profis, Web-Entwickler und technische Analysten, die wissen wollen, ob ihre Inhalte direkt im HTML liegen oder erst durch JavaScript erzeugt oder manipuliert werden.
Die Renderingabweichung ist durch LLMs größer geworden
Der Googlebot rendert JavaScript meistens zuverlässig – mit einem möglichen zeitlichen Versatz. Für hoch dynamische und häufig aktualisierende Websites ist das kritisch. Fast kein anderer relevanter Bot rendert eine Website komplett durch. LLM-Bots rendern zum aktuellen Zeitpunkt kein Javascript. RenderDiff hilft bei der Analyse. Hier ein paar harte Fakten:
0 js calls
AI-Crawler – GPTBot, ClaudeBot, PerplexityBot führen kein JavaScript aus. Was nicht im initialen HTML steht, ist für sie schlicht nicht existent.
3 Crawler, 1 Anbieter
Allein OpenAI betreibt drei separate Crawler: GPTBot (Training), OAI-SearchBot (Suche), ChatGPT-User (Live-Retrieval). Anthropic und Perplexity strukturieren das ähnlich. Jeder hat eigene Prioritäten – keiner rendert JS.
6 render types
SSR, CSR, SSG, Islands, JS-Enhanced, Pre-Rendered – jede Strategie erfordert eine individuelle Analyse und individuelle Herangehensweise.
Funktionsumfang der Browser-Erweiterung
Was verglichen wird
- Title-Tag, Meta Description, Meta Robots, Canonical-URL
- HTML-Lang, Base-Href, Charset, Meta Viewport
- H1 und vollständige Überschriften-Hierarchie (H2–H6)
- Open-Graph- und Twitter-Card-Meta-Tags – pro Slot
- Strukturierte Daten (JSON-LD, Microdata, RDFa) mit Property-Level-Diffs
- Interne und externe Link-Counts plus Detail je hinzugefügtem/entferntem Link
- Bilder und fehlende Alt-Attribute
- Wortanzahl und Body-Text-Content-Diffs
- Hreflang-Attribute pro Sprachcode
- Resource Hints (preconnect, dns-prefetch, prefetch, prerender)
- Iframes – Anzahl, src-Änderungen, sandbox / loading / allow-Attribute; plus den SEO-relevanten Inhalt in Same-Origin-Iframes
- Inhalt offener Shadow-DOM-Bäume aus Web Components (Lit, Stencil, Salesforce LWC, native Custom Elements)
- DOM-Knotenzahl und vollständige Renderzeit
Erkennung & Analyse
- Framework- und CMS-Erkennung für 200+ JavaScript-Frameworks, CMS-Plattformen und Tools
- Render-Typ-Klassifikation: SSR, CSR, SSG, Islands, JS-Enhanced, Pre-Rendered
- Hydration-Erkennung für Next.js, Nuxt, SvelteKit, Astro Islands, Qwik, Remix, SolidStart, Gatsby, React, Vue, Angular Universal sowie generische SSR-State-Marker
- Crawler-Simulation per User-Agent-Override: Browser, Chrome Mobile, Googlebot Desktop / Mobile sowie AI-Crawler GPTBot (OpenAI), ClaudeBot (Anthropic), PerplexityBot
- Intelligenter Noise-Filter: 120+ Selektoren entfernen Cookie-Banner, Werbung, Chat-Widgets, A/B-Test-Injektionen, Personalisierungs-Widgets und dynamische Token vor dem Diff minimiert False Positives
- SPA-Routing-Awareness: erkennt, wenn die aktuelle URL über client-seitige History-API-Navigation erreicht wurde, und warnt, dass Raw-HTML und gerendertes DOM dann nicht direkt vergleichbar sind
- Durch HTTP-Auth geschützte Staging-Umgebungen (.htaccess Basic / Digest) sind ohne manuelle Credentials-Eingabe scannbar
Visuelle Werkzeuge
- SEO-Rendering-Parity-Score (0–100), gewichtet nach Signal-Schwere – zeigt, wie stark das gerenderte DOM vom initialen HTML abweicht
- Drei Ansichten: kompakte Summary-Tabelle, Detail-Cards pro Element mit Drill-Down-Panels, vollständige Unified-Diff-Source-Ansicht
- On-Page-Highlights: markiert hinzugefügte / entfernte / modifizierte Elemente direkt auf der gescannten Seite, mit verschiebbarem, scrollbarem, einklappbarem Legenden-Panel
- Tri-State-Element-Differenzierung: missing vs. empty vs. content, sodass leere CMS-Fehler (z.B. leere Meta Description) separat von fehlendem Markup gekennzeichnet werden
- Hell- und Dunkel-Modus (Hell-Modus mit WCAG 2.1 AA Kontrast-Verifizierung)
Datenschutz & Browser-Support
- Sämtliche Verarbeitung erfolgt lokal im Browser
- Es werden keine Daten an externe Server gesendet, kein Tracking, keine Telemetrie
- Keine Benutzerkonten
- Eine ausgehende HTTP-Anfrage pro Scan: ein Fetch der vom Nutzer explizit gewählten URL
- Verfügbar für Chrome & Firefox
Versionsverlauf
1.8
- Astro-Framework-Erkennung – Astro wird jetzt als primäres Framework erkannt, auch auf Sites mit React-, Vue- oder Svelte-Islands
- HTTP-Auth-Tab-Fetch – Mit Basic Auth geschützte Seiten sind jetzt scanbar, sobald man im Quelltext-Tab eingeloggt ist
- Interne-vs-Externe-Links – Eigene Diff-Einträge mit proportionaler Bewertung, kleine Abweichungen auf kleinen Sites werden jetzt sichtbar
- Reblaze-Silent-Challenge – Zusätzliche Erkennung der window.rbzns-Variante
- Retry-with-browser-session-Button – Erscheint jetzt auch bei HTTP-401-Fehlern
- Anpasung der Bot-Challenge-Hints
- Stabilitäts-Fixes – Race-Conditions bei Doppel-Klick, MV3-Listener-Cleanup, Reload-Timing
1.7
- Bot-Management-Challenge-Erkennung – Sites mit Akamai BMP, Cloudflare, AWS WAF, DataDome, HUMAN/PerimeterX, Imperva, Kasada, F5/Shape oder Reblaze werden automatisch erkannt; es erscheint ein klarer Vendor-spezifischer Hinweis im Report
- Authenticated-Scan-Opt-In – neue Dropdown-Option „My Browser + session cookies” plus ein „Rescan with browser session”-Button neben Rescan, der bei erkannter Bot-Challenge eingeblendet wird; mit prominentem Hinweis dass das Ergebnis dann nicht der Crawler-Sicht entspricht
- Bot-Challenge wird im Report als Banner angezeigt statt als fataler Error – der Diff bleibt einsehbar (Raw-Side enthält die Challenge-HTML, Rendered-Side die echte Page), Source-Tab-Inspektion bleibt nutzbar
- Detection-Rules-Audit – 13 verifizierte Bugs in der Framework- und Library-Erkennung behoben: SvelteKit wurde fälschlich als Static eingestuft, Lodash immer als Underscore.js gelabelt, Vuetify/Quasar als Vue erkannt, MobX/Redux-Globals waren nicht real, React Router/Astro/Stencil-DOM-Marker trafen reales Markup nicht
- Cloudflare-False-Positive auf regulären CDN-Pages behoben – das Bot-Challenge-Banner erschien fälschlich auf jeder Cloudflare-fronted Site mit Bot-Management aktiviert, weil die JSD-Analytics-Pfade als Challenge interpretiert wurden
- Render-Type-Klassifizierung verbessert – Nuxt-SSR wurde auf Sites mit Inline-Analytics vor dem Bootstrap-Script fälschlich als CSR eingestuft, statisches Astro ohne Islands wird jetzt als SSG statt Islands gelabelt, mehr SPA-Mount-Point-Selectors für die Empty-App-Root-CSR-Erkennung, Hydration-Marker brauchen jetzt window.-Prefix gegen Widget-False-Positives
- Hint-Layout vereinheitlicht – jeder Hinweis steht auf eigener Zeile (kein zufälliges Pairing kurzer Hints mehr), gefilterte Cookie/Consent/Ad-Counts sind sichtbarer, UA-Hint-Box endet wo der Text endet
- A/B-Testing-Hinweis neutraler formuliert
- Google Optimize aus der Detection entfernt – der Service wurde am 30.09.2023 abgeschaltet
- Browser-neutrale Texte – diverse Chrome-spezifische Formulierungen wurden auf Browser-übergreifende Sprache umgestellt
- SPA-Routing-Hinweis im Wording angepasst
1.6
- AI-Crawler-User-Agent-Presets: GPTBot, ClaudeBot, PerplexityBot
- Iframes sind jetzt vollwertiges Diff-Signal – Same-Origin-Iframe-Inhalt wird in die Host-Page-Werte eingerechnet (entspricht Googles Indexing-Verhalten); Cross-Origin-Frames bleiben als explizite Einschränkung sichtbar
- Inhalt offener Shadow-DOM-Bäume aus Web Components ist nun Teil des Diffs
- Erkennung von SPA-Client-Side-Routing
- Tri-State-Element-Differenzierung: missing vs. empty vs. content – leere CMS-Fehler werden separat von fehlendem Markup angezeigt
- Whitespace-Normalisierung gegen False-Positive-Diffs durch NBSP, schmale NBSP, Tabs oder Multi-Space im Markup
- Performance-Cap-Transparenz: wenn der Extractor lange Listen kappt (Links, Image-Sources, Noscript-Blöcke), erscheint ein konsolidierter Hinweis im Report-Header
- Mobiler UA-Hinweis: macht klar, dass Mobile-Presets nur den User-Agent-String wechseln – vollständige Mobile-Emulation läuft nur über den DevTools-Device-Mode
- Mehrere Konsistenz-, Lesbarkeits- und Barrierefreiheits-Verbesserungen über alle Detail-Panels: einheitliche Empty-State-Marker, monochrome Status-Glyphen statt Plattform-abhängiger Emojis, flachere Hinweis-Boxen
- Fix: Der genrenderte DOM kam in Firefox auf Angular-, React-, Vue-SPAs teils leer zurück – die Architektur der Idle-Detection läuft jetzt extension-seitig statt im Page-Script und ist dadurch in beiden Browsern gleich zuverlässig
1.5
- Firefox-Unterstützung – die Erweiterung ist nun parallel zum Chrome Web Store auch über Mozilla Add-ons (AMO) verfügbar
- Light-Mode mit System-Präferenz-Erkennung und persistentem Umschalter, vollständig WCAG 2.1 AA-verifiziert
- Durch HTTP-Auth geschützte Staging-Umgebungen (.htaccess Basic / Digest) sind nun ohne manuelle Credentials-Eingabe scannbar
- Kontextsensitive Retry-Hinweise bei Scan-Fehlern (Auth, WAF, Rate Limit, Netzwerk)
- Source-Tab-Diff meldet keine kosmetischen Serialisierungs-Differenzen mehr fälschlich als Änderung – HTML-Normalisierungs-Pass vor dem Line-Diff
- Fehlgeschlagene Scans behalten den Header funktional, sodass Nutzer den User-Agent wechseln können, ohne den Report zu verlassen
1.4
- Hreflang-Attribute werden nun als Sub-Tags pro Sprachcode statt als einzelner verketteter String dargestellt
- Hreflang-Vergleich ist reihenfolge-unabhängig – reine Umsortierung wird nicht mehr als Änderung gemeldet
- Fix: doppeltes “Loaded Scripts”-Panel nach Rescan
- Fix: False-Positive “changed”-Status bei Hreflang-Umsortierung
1.3
- Ehrliches Default-User-Agent-Label – “Mein Browser (Brand Version (Plattform))” statt fälschlich als “Chrome” zu kennzeichnen
- Click-Through-Navigation von Summary-Zeilen zur passenden Diff-Card
- Höherer Text-Kontrast im Report
- Charset-bewusste HTML-Dekodierung – Seiten in ISO-8859-1, ISO-8859-15, Windows-1252 etc. zeigen keine kaputten Zeichen mehr in der Initial-HTML-Spalte
- Dynamische Chrome-Major-Version in User-Agent-Presets (kein manuelles Nachpflegen)
- Googlebot (Desktop)-Preset auf Chromium-Form umgestellt für korrektes WAF-Verhalten
1.2
- Hydration-Erkennung für Next.js, Nuxt, SvelteKit, Qwik, Astro Islands, Remix, SolidStart, Gatsby, React, Vue 3 SSR, Angular Universal sowie generische SSR-Marker
- Neue Head-Element-Vergleiche: HTML Lang, Base Href, Charset, Resource Hints (preconnect / dns-prefetch / prefetch / prerender)
- Erweiterter Page-Highlighter: markiert nun zusätzlich hinzugefügte H2–H6, Absätze, Listen-Einträge, Blockquotes und Bilder, plus eine “Head Elements (invisible)”-Sektion in der Legende
1.1
- Highlight-Overlay läuft nicht mehr aus dem Viewport heraus – nun scrollbar, einklappbar und verschiebbar
- Eingeschränkte Seiten (z.B. Chrome Web Store, etc.) liefern eine klare, nutzerfreundliche Fehlermeldung
1.0
Erste öffentliche Version im Chrome Web Store.
- Side-by-Side-Vergleich von Raw-HTML vs. JavaScript-gerendertem DOM für jedes SEO-relevante Element
- SEO-Rendering-Parity-Score (0–100)
- Source-Diff-Ansicht mit Line-by-Line-Syntax-Highlighting
- Googlebot-Simulation zur Cloaking-Erkennung
- Framework-Erkennung für 200+ Frameworks, CMS-Plattformen und Tools
- Exports: JSON, CSV, PDF
- On-Page-Highlights-Overlay mit Legenden-Panel
- Vollständig lokale Verarbeitung – keine Daten gehen an externe Server

