When Google’s rendered HTML is missing content that appears in your browser, compare the raw response, a fresh browser session, and URL Inspection’s rendered output. Then trace blocked resources, failed APIs, authentication, browser storage, permissions, delayed interaction, and runtime errors until the main content renders without private state.
- The browser view you normally use may contain cookies, storage, cached assets, or permissions that Google does not have.
- Compare four separate artifacts: raw response, browser DOM, Google-rendered HTML, and screenshot.
- Repair the first failing dependency and retest the public URL before requesting another crawl.
01
Preconditions

Collect evidence from the exact production URL before changing code.
You need the final canonical URL; the raw HTTP response and status; a browser session with storage and cookies cleared; the browser’s rendered DOM; URL Inspection’s live test, rendered HTML, screenshot, and resource list; console and network logs; and access to the application, API, CDN, and deployment configuration.
The purpose is to find the first point where the intended main content disappears. Do not begin by assuming Google “does not run JavaScript.” Google does render JavaScript, but it does so in a fresh crawler environment with different timing, state, and resource priorities. Fix Search-related JavaScript problems[1]
02
Ordered process
- Define what is missing.
Write down the expected title, main heading, primary text, product data, links, and structured information. “The page looks wrong” is not a test condition.
Use a four-view comparison:
| View | What it proves | Common surprise |
|---|---|---|
| Raw HTTP response | What the server sends before JavaScript | Only an app shell exists |
| Fresh browser DOM | What a new user receives | Content depends on a cookie or prior state |
| Normal browser DOM | What the owner usually sees | Cached or authenticated state hides the defect |
| Google-rendered HTML | What the live test rendered | API, script, or permission failed |
- Verify the HTTP layer.
Check the final response after redirects.
Confirm:
200for a real public page;- meaningful
404for a missing resource; - no authentication challenge;
- no
403,429, or5xxresponse; - correct content type;
- no redirect loop;
- no crawler-specific edge response.
A successful visual route built from a client-side fallback may still return misleading status behavior. Google uses HTTP responses before rendering to determine how to process the URL. Understand the JavaScript SEO basics[2]
- Compare initial HTML with the rendered DOM.
Search both for the expected main heading and a distinctive sentence.
Example shell:
<div id="root"><p>Loading…</p></div>
<script src="/assets/app.js"></script>If the content appears only after rendering, every resource and request in that path becomes part of the indexing dependency chain.
The Indexability Inspector checks returned HTML only; use URL Inspection for Google's rendered result.
If the content is absent from both the initial and Google-rendered HTML, continue through the resource and runtime checks. If it appears in Google’s rendered HTML but the page remains unindexed, move back to canonicalization, duplication, and index selection rather than treating rendering as the cause.
- Inspect failed resources.
Review the live test’s loaded resources and the browser network panel.
Look for:
- blocked JavaScript or CSS;
- API
401,403,404,429, or5xxresponses; - certificate or DNS errors;
- cross-origin failures;
- missing chunks after deployment;
- content-security-policy blocks;
- requests to preview or private origins;
- resources disallowed by robots.txt.
One failed application chunk can prevent the route from hydrating. One failed public API can leave the main container empty.
- Inspect JavaScript errors.
Capture the first uncaught error rather than the longest stack trace.
Typical failures include:
ReferenceError: windowData is not defined
TypeError: Cannot read properties of undefined
ChunkLoadError: Loading chunk 391 failed
SyntaxError: Unexpected token '<'The last example often means an HTML error page was returned where JavaScript or JSON was expected.
Repair the first failure and rerun the page in a cleared session. Later errors may be consequences rather than independent defects.
- Remove private browser-state dependencies.
Googlebot does not reproduce your normal browsing history.
Check whether content requires:
- a login cookie;
- local storage;
- session storage;
- an earlier page visit;
- a cart or account state;
- a consent choice stored on the device;
- a service worker cache;
- an experiment assignment.
Public indexable content should render from the URL and public request context. Personalization can enhance the page after the stable public version exists.
- Remove permission dependencies.
Google’s rendering environment does not grant camera, microphone, geolocation, or notification permissions. If the application waits for permission before rendering its primary content, the result can remain incomplete. Fix Search-related JavaScript problems[1]
Provide a default public state and treat permission as an optional enhancement.
- Check interaction and timing.
Google generally does not click buttons, scroll through interfaces, hover over elements, or complete forms to reveal core content.
Look for content that appears only after:
- clicking “Load”;
- opening an accordion whose contents are fetched on demand;
- scrolling into view;
- waiting on a long timer;
- changing a filter;
- accepting a consent prompt;
- moving the mouse.
Important content should be present after a direct load. Interactive controls may change the view, but they should not be the sole path to the page’s subject.
- Check transport assumptions.
Google warns that some browser technologies and request patterns may not behave like an ordinary persistent user session. WebSockets should have an HTTP fallback when they deliver primary content. APIs should not require signed browser-only headers or an opaque client secret. Fix Search-related JavaScript problems[1]
- Inspect metadata and directives in both states.
Compare initial and rendered:
- title;
- meta description;
- canonical;
- robots meta tag;
- structured data;
- language and alternate annotations.
An initial noindex can cause Google to skip rendering. A canonical that changes after JavaScript runs can create contradictory evidence. Duplicate tags can be interpreted unpredictably.
- Verify crawlable links.
Rendered cards and menus should contain anchor elements with real href attributes. Google can parse ordinary links before and after rendering, but cannot reliably derive destinations from arbitrary click handlers. Link best practices for Google[4]
- Retest the deployed public URL.
After repair:
- deploy one bounded change;
- clear CDN and application caches only where necessary;
- open a fresh browser session;
- verify raw and rendered output;
- rerun URL Inspection;
- compare the screenshot and rendered HTML;
- confirm required resources load;
- record the test time.
A successful live test is evidence that the current page is renderable. It is not an indexing guarantee. URL Inspection Tool[3]
03
Failure cases
The normal browser is the only test. Existing cookies and caches conceal the failure.
The API is public only from the office network. Google receives a forbidden or empty response.
The main content requires a click. The crawler never performs the interaction.
An initial noindex is removed by JavaScript. Rendering may be skipped before the removal occurs.
A service worker supplies stale content. The owner sees an older working version.
A third-party script is treated as essential. One external outage empties the page.
Every error is fixed at once. The team cannot identify which dependency caused the missing content.
A successful live test is treated as indexed proof. Canonicalization and selection remain separate.
04
Completion criteria
The diagnosis is complete when:
- the exact missing elements are named;
- the final response status is correct;
- public content renders without login, stored state, permissions, or prior navigation;
- required scripts and APIs return usable responses;
- the first runtime error is resolved;
- initial and rendered metadata are coherent;
- important links have crawlable
hrefvalues; - a cleared browser and URL Inspection show the expected main content;
- error routes return meaningful statuses;
- the repair is documented with deployment and test times.
Once the rendered HTML contains the complete page, stop debugging JavaScript. If Google still does not index it, move to canonicalization, duplication, content purpose, internal links, and normal processing time.
References
Sources behind this record
- Fix Search-related JavaScript problems — Google (accessed July 26, 2026)
- Understand the JavaScript SEO basics — Google (accessed July 26, 2026)
- URL Inspection Tool — Google (accessed July 26, 2026)
- Link best practices for Google — Google (accessed July 26, 2026)
Corrections
Correction history
No corrections recorded.
To report an error, use the public corrections path.
URL Inspection and the Rich Results Test reproduce many rendering conditions but do not expose every internal Google indexing decision or guarantee that a corrected page will be indexed.