JavaScript SEO rendering audit: compare source, rendered page, and routes

Audit JavaScript content, links, metadata, and errors with evidence from the initial response and rendered page.

Sources reviewed 2026-09-10

Audit what the server sends before assuming rendering will repair it

JavaScript can make a useful application discoverable, but a page should still deliver stable routes, status codes, metadata, and crawlable links. Google describes crawling, rendering, and indexing as separate phases in its JavaScript SEO basics, and notes that server-side or pre-rendering can help users and crawlers. A raw response alone does not prove a rendering failure, but it is the first evidence to collect.

Choose representative URLs: the home page, a deep content page, a route with a missing record, a filtered view, and an authenticated boundary. For each, save initial HTML, final rendered DOM, title, meta description, canonical, principal text, links, status, and failed network requests. Compare what changed. Test with a normal browser and the search platform’s own inspection tools where available, rather than guessing from framework defaults.

Use a concrete failure to focus the work

Suppose a documentation app serves the same blank shell for every path. The browser fills /docs/install after an API request, but the source has no title, body text, or <a href> routes. The first fix is not “add more JavaScript.” Give the route a meaningful status and stable title/canonical, ensure primary documentation is present in reliable rendering output, and use actual anchors for discovery. If server rendering is already viable, it may be the smallest durable route; do not rewrite an application simply to satisfy a raw-fetch heuristic.

Google says it can process JavaScript and extract dynamically injected links when they use crawlable anchor markup, but not every crawler renders JavaScript. Its link guidance recommends <a> elements with href attributes. Test resource loading, authentication requirements, consent gates, and client error states. A blocked JavaScript file or a 200 error route can invalidate the rest of the audit.

Keep metadata and errors stable

Do not change canonical tags from one value in source HTML to another after rendering. Google advises keeping them aligned. Avoid fragment-only navigation for pages that need discovery; give each important view a requestable URL. Return meaningful status codes for missing content and inspect the rendered error state. Read raw HTML vs rendered content and soft 404 pages for the evidence limits.

Use the AI search readiness checker for raw HTML evidence. It does not run a full browser comparison or establish what a particular crawler indexed. Treat its finding as a reason to inspect, not as a verdict.

Keep captures with the change

Save the URL, raw capture, rendered capture, timestamp, and failure fixed beside the release. This stops a broad JavaScript diagnosis from being repeated when the actual problem was a failed API request, a canonical mismatch, or a missing route. It also focuses performance work on user-visible defects rather than speculative pipeline rewrites.

Repeat a deep-route check in a fresh browser session by opening its URL directly. Navigation from an already-loaded homepage can conceal a server routing failure because the client application is handling that transition.

FAQ

Must every site server-render?

No. Choose the delivery approach that reliably serves users and the crawlers you need to support.

Not reliably. Put destination URLs in anchor href attributes.

Primary sources