ssrchecker
Guides

How rendering decides what search engines see

A site can look complete in a browser and nearly empty to a crawler. These guides cover why that happens, how to tell whether it's happening to you, and what actually fixes it.

The pillar guide
Start here
JavaScript SEO: how rendering decides whether you get indexed

The two-pass crawling model, the five rendering modes and which are safe, why JavaScript sites fail to index, how to diagnose it properly, and what actually fixes it. Start here if you're not sure which problem you have.

Start here

Fundamentals

How rendering and indexing actually work, and why the two get confused.

JavaScript SEO: the complete guideStart here
How search engines process JavaScript, why client-rendered pages fail to index, and how to fix it.
/learn/javascript-seo-guide
SSR vs CSR
The difference in one page, and why it decides what a crawler sees.
/learn/ssr-vs-csr
SSR vs SSG vs ISR
Three ways to produce complete HTML, and why all three are equivalent for SEO.
/learn/ssr-vs-ssg
What is hydration?
The step between server HTML and an interactive page, and where it goes wrong.
/learn/what-is-hydration
Deeper

How crawlers behave

What search engines and AI crawlers actually do with your JavaScript.

How Googlebot renders JavaScript
The two-pass model, the render queue, and what decides how long you wait.
/learn/how-googlebot-renders-javascript
AI crawlers and JavaScript
Why the crawlers behind AI answers are stricter than Google, and what that changes.
/learn/ai-crawlers-javascript
Dynamic rendering and prerendering
Serving rendered HTML to crawlers — when it's reasonable and when it's a trap.
/learn/dynamic-rendering
Elsewhere on the site
Check your framework
Framework-specific failure modes, starting with Next.js.
/check/nextjs
Run a check
Paste a URL and see what a crawler receives before JavaScript.
/
Get help
Rendering audits and implementation.
/services
Not sure whether this applies to you?
Run a check on any page and see exactly what a crawler receives before JavaScript runs.