Google's Two-Wave Indexing Explained
Learn why Google crawls pages first and renders JavaScript later, and what that gap means for how content gets indexed.
Why Google Visits a Page Twice
When Google encounters a page, it does not always understand that page in a single visit. There is often a gap between the moment Googlebot first arrives and the moment Google actually processes what the page contains. Understanding that gap, why it exists and what happens inside it, changes how you think about the relationship between a page's existence and its visibility in search.
This lesson explains the two-wave model: what each wave involves, why the second wave is delayed, and what that delay means for how JavaScript-rendered content reaches the index. Wave One: Fetching the Raw Document The first wave is a fetch. Googlebot requests the URL and receives the server's response, which is typically an HTML document. At this stage, Google is collecting the raw source code, the bytes that travel over the network before any browser-like processing begins. This raw HTML may contain very little meaningful content if the page relies on JavaScript to build its visible text, headings, images, or links. A page built entirely with a JavaScript framework might return an almost empty HTML shell in wave one: a handful of tags, a script reference, and very little else. From Google's perspective at this stage, the page exists, but its content is largely unknown. Wave one is fast and resource-light. Googlebot can fetch thousands of pages in the time it would take to fully process a fraction of them. The fetch is essentially a collection task, not an understanding task. The Queue Between the Waves After the fetch, pages that require JavaScript rendering are placed into a processing queue. They do not move immediately to wave two. Google's rendering infrastructure, which functions similarly to a headless browser that executes JavaScript and assembles the final visible page, operates separately from its crawling infrastructure, and it operates under different resource constraints. Rendering is computationally expensive. Executing JavaScript, resolving dynamic content, and assembling a page the way a browser would takes significantly more processing power than a simple fetch. Because Google indexes billions of pages, it cannot render every page instantly after fetching it. The queue absorbs the backlog, and pages wait their turn. The length of that wait is not fixed. It depends on how frequently Google crawls the site, how much rendering capacity is available at any given time, and how the page fits into Google's broader prioritisation signals. For some pages, the gap between wave one and wave two is hours. For others, it can stretch to days or weeks. Wave Two: Rendering and Understanding The second wave is where Google actually processes the page. The rendering engine executes the JavaScript, waits for the resulting content to appear, and then reads the fully assembled page. This is the version of the page that Google uses to extract text, understand structure, follow links, and decide what the page is about. Only after wave two does Google have a complete picture of what the page contains. If the page's headings, body text, or internal links are injected by JavaScript, none of that information is available to Google until this second visit completes. The page can exist in Google's systems, acknowledged as a URL that has been fetched, without any of its actual content being part of the index. This distinction matters because a page being crawled and a page being indexed are not the same event. Crawling and indexing are separate stages, and for JavaScript-dependent pages, a significant amount of time can separate them.
What Sits in the Gap
During the period between wave one and wave two, a page occupies an uncertain position. It has been fetched, so Google knows the URL exists. But because its content has not yet been rendered, it has not been understood. The page cannot rank for anything it contains if that content has not yet been processed.
This has a specific implication for new content. When a new page is published and its content depends on JavaScript to appear, the page may be fetched quickly but remain effectively invisible in search for the duration of the rendering queue. The content is live on the server, but it has not yet crossed into the index.
It also has implications for updated content. If a page is refreshed with new information, and that information is JavaScript-rendered, Google's index may continue to reflect the older version of the page until the rendering queue processes the updated fetch. The index is always a snapshot of the last successfully rendered state, not a live reflection of the current server response.
Why the Two-Wave Architecture Exists
The separation of fetching and rendering is not an oversight. It reflects a deliberate resource allocation decision. Crawling the web at scale requires visiting an enormous number of URLs continuously. If rendering were required at the moment of every fetch, the volume of pages Google could process would shrink dramatically.
By separating the two operations, Google can maintain broad crawl coverage while managing rendering as a secondary, more resource-intensive process. The trade-off is the gap: broader coverage at the cost of a delay in understanding.
This architecture also reflects the historical evolution of the web. When Google's crawling systems were first designed, most web pages delivered their content directly in HTML. JavaScript was used for interactivity, not for generating the primary content of a page. As the web shifted toward JavaScript-heavy frameworks, Google's systems had to adapt, but the adaptation came with the constraint that rendering could not simply be bolted onto the existing crawl pipeline without significant resource costs.
The Relationship Between Rendering Delay and Search Visibility
Understanding the two-wave model reframes how search visibility works for pages that rely on JavaScript. It is not simply a question of whether Google can crawl a page. It is a question of when Google will render it, and whether the content that matters for search is available in the HTML that arrives in wave one or only after the JavaScript executes in wave two.
Pages where the primary content, the text, the headings, the links, is present in the raw HTML response have a straightforward path from fetch to index. Pages where that content only exists after JavaScript runs face the two-wave delay as a structural feature of how they interact with Google's indexing pipeline.
The gap is not a penalty and it is not a sign that a page will never be indexed. It is a description of how Google's systems allocate the work of understanding the web. Recognizing that the gap exists, and understanding why it exists, is the foundation for thinking clearly about how different page architectures interact with search.
What This Understanding Changes
Once the two-wave model is clear, several things that might otherwise seem puzzling become logical. A page appearing in Google's index with no content, or with outdated content, reflects the state of the last completed render, not the current state of the page. A newly published page that does not appear in search results despite being crawled is likely waiting in the rendering queue. A site that moved from server-rendered HTML to a JavaScript framework and saw its search visibility decline may have introduced a structural delay into the path from content to index.
These are not mysteries. They are predictable consequences of a system that separates fetching from rendering for resource reasons. Understanding the architecture is what makes the behavior interpretable.
Knowledge Check
Score 100% to complete this lesson.
Select all that apply.
Choose one answer.
Lesson marked complete
Save your progress
Choose how to keep your checkmarks.
Saved on this device.
Already have an account? Log in
Already completed