JavaScript SEO Checklist

For sites built with client-side frameworks or heavy scripting. Google can render JavaScript, but rendering is queued and can fail silently, and many other crawlers do not run it. Use this list when pages look fine in a browser but index poorly.

11 checks ~75 min advanced 4 critical
0% 0 of 11 done
  1. critical
    Why and how
    Why it matters
    Content that exists only after rendering depends on Google's render queue and may be delayed or missed.
    How to check or fix it
    Use View Source versus the URL Inspection live test's rendered HTML. In Screaming Frog, crawl once in Text Only and once in JavaScript mode.
  2. critical
    Why and how
    Why it matters
    Server-side rendering or static generation makes indexing faster and works for crawlers that skip JavaScript.
    How to check or fix it
    Run curl on the URL and search the output for your main heading and body text. Move missing pieces to server rendering.
  3. critical
    Why and how
    Why it matters
    Links built from click handlers or buttons are not reliably followed, so deep pages go undiscovered.
    How to check or fix it
    Inspect menu and pagination elements in DevTools. Each should be an <a href="/path"> element, not a div with onclick.
  4. critical
    Why and how
    Why it matters
    Blocked resources stop Google from rendering the page as users see it.
    How to check or fix it
    Check the page resources list in URL Inspection for blocked files, then remove the matching Disallow lines.
  5. important
    Why and how
    Why it matters
    Google generally ignores content after a # in a URL, so fragment-based routes collapse into one page.
    How to check or fix it
    Confirm each view has a path like /products/blue-widget and loads directly when pasted into a new tab.
  6. important
    Why and how
    Why it matters
    Single-page apps often return 200 for everything, which creates soft 404s in the index.
    How to check or fix it
    Request a nonsense URL and check the status in the DevTools Network panel. Return a true 404 from the server or add noindex to the error view.
  7. important
    Why and how
    Why it matters
    Google may skip rendering a page that already says noindex, so the script change never takes effect.
    How to check or fix it
    Check the robots meta tag in raw source. Output the final intended directive server-side.
  8. important
    Why and how
    Why it matters
    Shared head tags across routes cause duplicate titles and canonical confusion.
    How to check or fix it
    Crawl in JavaScript mode and review the Page Titles and Canonicals tabs for duplicates.
  9. important
    Why and how
    Why it matters
    Googlebot does not click, scroll to trigger events or type, so hidden content is never seen.
    How to check or fix it
    Check tabs, accordions and infinite scroll in the rendered HTML. Add paginated URLs as a crawlable fallback.
  10. nice
    Why and how
    Why it matters
    Heavy scripts slow rendering and hurt Interaction to Next Paint.
    How to check or fix it
    Use the Lighthouse Treemap and Coverage tab in DevTools to find unused code. Split bundles by route.
  11. nice
    Why and how
    Why it matters
    Many AI and social crawlers do not execute JavaScript and see only the initial HTML.
    How to check or fix it
    Fetch the page with curl using the user agent of the bot you care about and confirm key content appears.

Common questions

Can Google index JavaScript content?

Yes, Google renders JavaScript with a recent version of Chromium. Rendering happens after crawling and can be delayed, so critical content is safer in the initial HTML.

Is dynamic rendering still recommended?

Google describes dynamic rendering as a workaround, not a long-term solution. Server-side rendering or static generation is the recommended approach.

Do these next

Browse all 33 checklists →

Rather have it done for you?

We run this checklist against your site, fix what fails and send a plain-language report.