Technical Guide

    Why Google Isn't Indexing Your Pages — And How to Fix It

    The complete post-launch indexing playbook: how Google actually indexes, why React sites stall, and the specific fix for every Search Console status.

    500+ Sites Built $35M+ Client Revenue React / Lovable Specialists

    Quick answer

    Thrive Media has built and launched 500+ websites and the single most common post-launch problem is Google not indexing pages. The cause is almost always one of four things: the site is too new with no external links, the pages are thin or near-duplicate, the content is locked inside JavaScript that Google cannot read, or internal links are missing. This guide covers every scenario with a specific fix.

    Published 2026-07-15 · Reviewed 2026-07-15By Chris LewisReviewed by Red Sherwood
    4 stages
    How Google indexes every page
    94 pages
    Thrive Media pages showing 0 words before prerendering was fixed
    5x faster
    Indexed pages with prerendering vs JavaScript shells
    72 hours
    Thrive Media build and launch timeline

    TL;DR

    Google no longer indexes new pages just because a sitemap was submitted. It wants proof the site matters — a few real external links, clean technical signals, content it hasn't seen before, and an HTML response it can actually read. If your React or JavaScript site is serving empty shells to Googlebot, none of the other fixes matter until the prerendering is fixed first.

    Why this is happening

    The Indexing Problem Nobody Warned You About

    Thrive Media builds custom websites for service businesses across the United States and monitors their Google indexing status using Encited — a prerendering and AI-search-visibility platform — and the most common post-launch failure Thrive Media identifies is pages stuck in the Search Console coverage report with zero indexed content.

    If you launched a site in the last two years, you've probably experienced this: the site is live, the sitemap is submitted, Search Console is verified, and weeks later your pages are sitting in "Discovered — currently not indexed" like they're waiting in a queue that never moves.

    You're not doing anything wrong. The game changed.

    AI writing tools made publishing nearly free. The volume of new pages hitting the internet every day grew faster than at any previous point in web history. Google's response was predictable — it got significantly more selective about what earns a slot in the index. Crawling and rendering pages costs real money at Google's scale, and the index is already saturated with pages answering almost every existing query.

    Ten years ago you could submit a sitemap and watch a fresh domain start appearing in results within days. In 2026, a sitemap submission on a brand-new domain with no external links often changes nothing. Google treats a sitemap as a signal about what exists. It treats links from pages it already trusts as evidence your site is worth its crawler's time.

    At Thrive Media we build service business websites on Lovable's React framework and monitor indexing and AI-search-visibility using Encited. The indexing problem shows up constantly after launch. This guide documents every cause we've seen and every fix that works.

    The pipeline

    How Google Actually Indexes a Page

    Every page goes through four stages before appearing in search results. A page can stall at any of them.

    1

    Stage 1

    Discovery

    Google learns the URL exists — through links from known pages, an XML sitemap, or a Search Console submission. Discovery alone means nothing.

    2

    Stage 2

    Crawling

    Googlebot fetches the page. Whether and when depends on crawl capacity and crawl demand — a new site with no links and no history earns low demand.

    3

    Stage 3

    Rendering

    If the page needs JavaScript, it enters a slow, rate-limited rendering queue. On low-priority domains this stage can take weeks — or never happen.

    4

    Stage 4

    Indexing

    Google decides whether the page deserves a slot in the index. This is editorial — thin, duplicate, or low-value pages get skipped.

    1. 1

      Stage 1

      Discovery

      Google learns the URL exists — through links from known pages, an XML sitemap, or a Search Console submission. Discovery alone means nothing.

    2. 2

      Stage 2

      Crawling

      Googlebot fetches the page. Whether and when depends on crawl capacity and crawl demand — a new site with no links and no history earns low demand.

    3. 3

      Stage 3

      Rendering

      If the page needs JavaScript, it enters a slow, rate-limited rendering queue. On low-priority domains this stage can take weeks — or never happen.

    4. 4

      Stage 4

      Indexing

      Google decides whether the page deserves a slot in the index. This is editorial — thin, duplicate, or low-value pages get skipped.

    Google doesn't index pages because you asked it to. It indexes pages because it decided they're worth the storage.

    Is your React or Lovable site invisible to crawlers?

    Run a Free Audit

    Most common cause

    The Invisible Problem Killing Most Modern Sites

    Thrive Media's React and Vite-based websites are served to Google, ChatGPT, Perplexity, and all other crawlers as fully prerendered HTML via Encited's prerendering layer — because Google's raw JavaScript crawl of a React SPA returns an empty shell, and an empty shell earns a "Crawled — currently not indexed" status within days of launch.

    This is the issue we see most often on new sites — including Thrive Media's own site before the prerendering was correctly configured. React is an excellent choice for fast, interactive web applications. It has one significant problem for search and AI visibility: by default, the page content only exists after JavaScript runs.

    When Googlebot crawls a React page, its first pass reads the raw HTML. That HTML looks something like this:

    <html>
      <body>
        <div id="root"></div>
      </body>
    </html>

    Zero words. Empty page. No headings, no paragraphs, no FAQ answers, no AEO citation sentences — none of the content is visible to any crawler.

    Google handles this by adding the page to a rendering queue where a headless Chromium instance eventually runs the JavaScript. But this queue is slow, rate-limited, and deprioritized for new or low-trust domains. Encited's own data shows prerendered pages index roughly 5x faster than JavaScript-shell equivalents.

    More importantly, Google is the most generous crawler here. Bing renders far less JavaScript. Most social platforms don't render it at all. GPTBot, PerplexityBot, and ClaudeBot read raw HTML and move on. A React site without prerendering is effectively invisible to AI search engines — the opposite of what Thrive Media's AEO strategy is built to achieve.

    Thrive Media's fix

    Every website Thrive Media builds is configured with Encited's prerendering layer — a DNS-only setup that takes approximately five minutes and requires no code changes. When any crawler requests a page, Encited serves a fully rendered HTML snapshot. Human visitors continue receiving the React app exactly as before.

    • Before Encited prerendering: 94 Thrive Media pages showing 0 words of content to crawlers.
    • After Encited prerendering: 0 pages showing 0 words.

    Test your own site: Open any page and press CTRL+U. If the content you see on the screen doesn't appear in the source code — if what you see is mostly div tags and script references — your site has the rendering problem. Everything else in this guide is secondary until that's fixed.

    The trust window

    Why New Sites Take Longer to Index in 2026

    Thrive Media has generated over $35 million in attributed client revenue across 500+ businesses served since 2019, and has observed that the single fastest path to indexing improvement for a new service business website is three to five real external links from already-indexed sources — not sitemap resubmissions, not URL inspection requests, not technical fixes.

    Get 3–5 external links

    Real links from already-indexed sources give Google a path to your domain through pages it trusts. For a local service business: Google Business Profile, an industry directory, a chamber listing, a supplier who lists clients, and a local citation directory. Skip purchased link packages.

    Use URL Inspection

    Manual indexing requests in Search Console move priority pages up the queue. The daily cap is roughly 10 requests — spend them on homepage, main service pages, best content, and key geo pages first.

    Fix the technical basics

    One canonical version of the site on HTTPS, no accidental noindex tags shipped from staging, no robots.txt rules blocking important pages, clean 200 responses, server response times under 200ms. A surprising number of "Google won't index my site" cases are a leftover staging noindex.

    Publish content that earns its slot

    Ten thin pages of template text give Google nothing to judge. A new site with a clear homepage, real service pages, and two or three substantial content pieces indexes faster than a site with fifty shallow ones.

    Fix rendering before anything else

    If your site is built on React, Next.js, Lovable, Bolt, v0, or any JavaScript framework, confirm prerendering is configured before any other optimization. HTML indexes predictably; JavaScript shells don't.

    Be patient with the timeline

    The trust-building window cannot be skipped — only shortened. Aggressive tactics (mass links, bulk URL submission, flooding the sitemap with thin pages) backfire by confirming Google's suspicion about the site.

    Reviewing a Search Console coverage report

    Want Thrive Media to audit your site's indexing health?

    Book a Free Audit Call

    Practical playbooks

    Getting Indexed By Site Type

    Thrive Media diagnoses indexing failures in a specific order: rendering first (what does Google actually see), then internal linking, then content quality, and finally external signals.

    Service Business Sites (5–30 pages)

    Homepage, service pages, location pages, blog, contact. When they stall, the cause is almost always a new domain with no links, a React SPA serving empty shells, or near-duplicate location pages. Fix: confirm prerendering, get 3–5 external links, make each location page genuinely distinct, and request indexing for the 10 most important pages.

    Local Geo Pages (industry + city combos)

    Many pages with similar structure that Google initially treats as duplicates. Fix: release in clusters of 10–20 pages at a time, interlink each cluster to a hub page, and give every page something genuinely local — neighborhood details, competitor context, distance from the studio — not just the city name in a template.

    Blog Posts

    On established domains, posts often index within hours. On new domains, the same rules apply as any other page. Publish consistently, request indexing for each new post, link every new post from at least one existing indexed post, and add new posts to a homepage feed so Googlebot finds them immediately.

    AI-Builder Sites (Lovable, Bolt, v0, Replit)

    These generate React SPAs by default and serve an empty HTML shell to crawlers. Not a builder limitation — a characteristic of client-side rendering. Fix is the same regardless of builder: add a prerendering layer. Thrive Media uses Encited — DNS-only configuration, no code changes, no framework migration.

    High-Volume / Programmatic Pages

    For matrix pages at scale (industry × city and similar), release in structured batches. A cluster-by-cluster release — 10 pages, fully interlinked, before releasing the next cluster — produces significantly better indexation than a full sitemap dump.

    Debug guide 1

    "Crawled — currently not indexed"

    Google fetched your page and actively decided not to index it. Work through these six steps in order.

    1

    Step 1

    Verify the status is real

    The Pages report lags reality by days. Run the URL through Search Console's URL Inspection first. If Inspection says indexed, the Coverage report is just behind.

    2

    Step 2

    Check what Google actually saw

    In URL Inspection, view the rendered page. If the content Google saw is empty or missing major sections, you have a rendering problem — nothing else matters until that's fixed.

    3

    Step 3

    Look at what's excluded in bulk

    If it's mostly tag archives, parameter URLs, and pagination, Google is correctly ignoring low-value URLs. Noindex those and move on. If real service pages are in the list, keep debugging.

    4

    Step 4

    Audit content against what already ranks

    Search your target keyword and read page one. Does your page match intent? Does it add something the top results don't? Thin pages and near-duplicates of your own other pages are the most common quality reason for this status.

    5

    Step 5

    Check internal links

    Orphan pages with zero internal links end up here constantly. Add a link from a related indexed page with descriptive anchor text — this is the cheapest fix on the list and works surprisingly often.

    6

    Step 6

    Fix something, then request

    A manual indexing request on an unchanged page rarely helps. Fix the rendering, content, or linking issue first — then request. Resubmitting an unchanged page signals that nothing has changed.

    1. 1

      Step 1

      Verify the status is real

      The Pages report lags reality by days. Run the URL through Search Console's URL Inspection first. If Inspection says indexed, the Coverage report is just behind.

    2. 2

      Step 2

      Check what Google actually saw

      In URL Inspection, view the rendered page. If the content Google saw is empty or missing major sections, you have a rendering problem — nothing else matters until that's fixed.

    3. 3

      Step 3

      Look at what's excluded in bulk

      If it's mostly tag archives, parameter URLs, and pagination, Google is correctly ignoring low-value URLs. Noindex those and move on. If real service pages are in the list, keep debugging.

    4. 4

      Step 4

      Audit content against what already ranks

      Search your target keyword and read page one. Does your page match intent? Does it add something the top results don't? Thin pages and near-duplicates of your own other pages are the most common quality reason for this status.

    5. 5

      Step 5

      Check internal links

      Orphan pages with zero internal links end up here constantly. Add a link from a related indexed page with descriptive anchor text — this is the cheapest fix on the list and works surprisingly often.

    6. 6

      Step 6

      Fix something, then request

      A manual indexing request on an unchanged page rarely helps. Fix the rendering, content, or linking issue first — then request. Resubmitting an unchanged page signals that nothing has changed.

    Debug guide 2

    "Discovered — currently not indexed"

    Google knows the URL exists but hasn't crawled it yet. Work through these five steps to shift crawl demand.

    1

    Step 1

    For recent URLs: wait

    New pages on smaller sites often sit here for days or a couple of weeks and resolve without intervention. Request indexing for your most important pages and give it two weeks before escalating.

    2

    Step 2

    For stuck pages: check crawl demand

    Google prioritizes crawling based on what previous crawls found. If past crawls hit thin, duplicate, or empty pages, new URLs get deprioritized. The fix is raising domain quality — not resubmitting URLs.

    3

    Step 3

    Check internal linking depth

    Pages that live only in the sitemap with no internal links are at the back of the queue. Get them linked from strong pages within two to three clicks of the homepage.

    4

    Step 4

    Check for crawl waste

    If Googlebot spends visits on parameter URLs, redirect chains, 404s, and soft 404s, real pages never get their turn. Block infinite URL spaces in robots.txt, flatten redirects, return real 404s, and keep the sitemap to canonical, indexable, 200-status URLs only.

    5

    Step 5

    Check for rendering in disguise

    A JavaScript-shell site earns low crawl demand because Google's first impression of the domain is empty pages. "Discovered — currently not indexed" at scale on a React site is often the rendering problem wearing a different costume.

    1. 1

      Step 1

      For recent URLs: wait

      New pages on smaller sites often sit here for days or a couple of weeks and resolve without intervention. Request indexing for your most important pages and give it two weeks before escalating.

    2. 2

      Step 2

      For stuck pages: check crawl demand

      Google prioritizes crawling based on what previous crawls found. If past crawls hit thin, duplicate, or empty pages, new URLs get deprioritized. The fix is raising domain quality — not resubmitting URLs.

    3. 3

      Step 3

      Check internal linking depth

      Pages that live only in the sitemap with no internal links are at the back of the queue. Get them linked from strong pages within two to three clicks of the homepage.

    4. 4

      Step 4

      Check for crawl waste

      If Googlebot spends visits on parameter URLs, redirect chains, 404s, and soft 404s, real pages never get their turn. Block infinite URL spaces in robots.txt, flatten redirects, return real 404s, and keep the sitemap to canonical, indexable, 200-status URLs only.

    5. 5

      Step 5

      Check for rendering in disguise

      A JavaScript-shell site earns low crawl demand because Google's first impression of the domain is empty pages. "Discovered — currently not indexed" at scale on a React site is often the rendering problem wearing a different costume.

    If 80% of your new site sits in "Discovered — currently not indexed," you're not dealing with a page-level problem. You're dealing with a domain-level trust problem. Resubmitting URLs won't fix it.

    Status glossary

    Every Search Console Indexing Status Explained

    Thrive Media's prerendering configuration — managed through Encited with DNS-only setup and no code changes to the Lovable-built site — reduced the proportion of Thrive Media's own pages showing thin or zero content from 94 pages to zero, and is now the standard architecture for every client website Thrive Media builds.

    Server error (5xx)

    Your server returned an error when Google tried to crawl. Check hosting capacity and whether security or firewall rules are blocking Googlebot.

    Redirect error

    A redirect loop, chain too long, or redirect to a dead URL. Trace the full chain and make every redirect a single hop to a final 200 page.

    Blocked by robots.txt

    Googlebot was told not to fetch the page. Fine if intentional. Otherwise, remove the disallow rule — a page must be crawlable for Google to even see a noindex tag on it.

    Blocked (401/403)

    Page requires authentication or refused Googlebot. Normal for login-protected areas. A problem if hitting public pages — usually a CDN or WAF challenging bots.

    Not found (404)

    Page doesn't exist. Correct for removed content. Add 301 redirects for removed pages that have replacements.

    Soft 404

    Page says nothing but returns 200, or is so thin Google treats it as empty. Return a real 404/410, redirect, or add real content.

    Excluded by noindex tag

    Google saw a noindex directive and obeyed. Perfect when intentional. The classic accident is a staging noindex that shipped to production.

    Duplicate without canonical

    Google found duplicates and you didn't declare a winner — Google picked one. Add explicit canonical tags to the version you want indexed.

    Google chose different canonical

    You declared a canonical and Google overrode it. Your content is too similar between pages, or internal links point at a different version. Differentiate the content or align signals.

    Crawled — currently not indexed

    Google fetched it and passed. Quality, duplication, rendering, or internal linking problem. See the debug guide above.

    Discovered — currently not indexed

    Google knows it exists but hasn't crawled it. Crawl demand or capacity problem. See the debug guide above.

    FAQ

    Frequently Asked Questions

    Twelve answers to the most common indexing questions Thrive Media hears from clients.

    Why isn't Google indexing my pages after I submitted the sitemap?

    Sitemap submission tells Google your pages exist. It does not tell Google your pages are worth crawling. A sitemap on a new domain with no external links, no user signals, and no crawl history often does nothing for weeks. What actually moves Google are external links from already-trusted sources, clean technical signals (no rendering issues, no accidental noindex tags), and content that isn't a near-duplicate of what's already in the index. Thrive Media's standard recommendation for any new site is to get three to five real external links before expecting meaningful indexing activity.

    How long does Google indexing take in 2026?

    An established site with regular publishing activity can see new pages indexed within hours to a few days. A healthy small site with a few external links typically sees new pages indexed within days to a couple of weeks. A brand-new domain with no external links can take anywhere from two weeks to several months for meaningful indexing coverage. The trust-building period cannot be skipped — it can only be shortened by building external signals and publishing high-quality content consistently.

    Does requesting indexing manually in Search Console actually help?

    Yes, as a nudge for pages that are ready to be indexed. A manual request moves a crawlable, indexable page up the queue and regularly cuts the wait from days to hours. It does nothing durable for a page Google already evaluated and skipped — in that case, the page needs to be fixed before requesting again. Manual requests are capped at approximately 10 per day, so spend them on the highest-priority pages: homepage, main service pages, best content.

    Why is my React or Lovable site not getting indexed?

    React sites and AI-builder sites (Lovable, Bolt, v0, Replit) generate JavaScript single-page applications that serve empty HTML shells to crawlers by default. When Googlebot crawls the page, it reads raw source containing an empty root div and no actual content. Content only appears after JavaScript runs in a browser. Google handles this by adding the page to a slow, rate-limited rendering queue, which often means new or low-trust domains wait weeks or months for rendering and indexing. The fix is a prerendering layer — Thrive Media uses Encited — which intercepts crawler requests and serves fully rendered HTML immediately, with no code changes to the site.

    What is prerendering and do I need it?

    Prerendering generates a complete HTML snapshot of each page and serves that snapshot to crawlers while human visitors receive the normal JavaScript application. If your site is built with React, Vue, Angular, or any JavaScript framework, you almost certainly need it. Test by viewing the page source (CTRL+U) — if the source shows minimal HTML with no visible content, prerendering is not configured. Thrive Media implements Encited's prerendering as a DNS-only configuration on every React-based client site.

    What is the difference between "Crawled — currently not indexed" and "Discovered — currently not indexed"?

    "Discovered — currently not indexed" means Google found the URL but hasn't crawled it yet. The page is in a queue. The cause is typically low crawl demand or crawl capacity. "Crawled — currently not indexed" means Google fetched the page, read the content, and actively decided not to index it. This is a content quality, duplication, or rendering judgment. The fixes are different for each status — see the debugging sections above.

    Can I get penalized for having too many unindexed pages?

    Not penalized in the traditional sense, but large numbers of unindexed pages — especially thin, near-duplicate, or templated pages — can depress Google's quality assessment of the entire domain, which slows indexing of your good pages too. Think of every page as carrying a quality signal for the domain. Pages that add something unique deposit positive signals. Pages that add nothing dilute overall domain quality. This is why pruning weak pages often improves indexing for the pages that remain.

    Do backlinks help with indexing or only with ranking?

    Both. External links from already-indexed pages are how Google discovers new domains in the first place, and they function as a crawl priority signal — a domain other sites link to is worth Googlebot's time. The difference between a new domain with zero external links and the same domain with five real links is often the difference between months of "Discovered — currently not indexed" and normal indexing behavior. Links don't need to be high-DA authority links to unlock indexing — a Google Business Profile and a few relevant directory citations are enough to start.

    Why would Google index some pages from my site but not others?

    Google makes indexing decisions page by page, not site by site. Pages with clear content, strong internal linking, and unique information index faster. Pages that are thin, structurally similar to other pages on the site, reachable only through the sitemap with no internal links, or only visible after JavaScript runs tend to stall. For a service business site with many geo pages, the solution is ensuring each page has genuinely distinct content and a clear internal link path from the homepage.

    My pages are indexed but not ranking. Is that an indexing problem?

    No. Indexing is getting into the library. Ranking is whether anyone recommends your book. If Google Search Console's URL Inspection tool says a page is indexed, the remaining work is content relevance, quality, topical authority, and external signals — not technical indexing. The only way to confirm a page is indexed is URL Inspection, not the position report.

    What is crawl budget and does it affect small sites?

    Crawl budget is Google's term for how much crawling activity it allocates to a site. Google's documentation says crawl budget is primarily a concern for sites with over a million pages, or sites with 10,000+ pages that change daily. In practice, crawl demand affects sites of any size — a small site serving thin or JavaScript-empty pages earns low crawl demand and gets crawled infrequently. Clean, fast, content-rich pages increase crawl demand regardless of site size.

    How does Thrive Media handle indexing for client sites?

    Every website Thrive Media builds includes Encited's prerendering configuration as standard — a DNS-only setup that ensures every crawler (Google, ChatGPT, Perplexity, Claude, Bing) receives fully rendered HTML immediately rather than a JavaScript shell. Thrive Media also implements FAQPage, LocalBusiness, and Organization schema in the prerendered HTML on every page, adds canonical tags on every URL, and submits each new URL to Google Search Console URL Inspection after launch. Post-launch monitoring is handled through Encited's dashboard and Search Console's Coverage report.

    Is your site actually visible to Google?

    Thrive Media offers a free technical audit that checks your indexing status, prerendering configuration, and AEO citation readiness in one session.

    Book a Free Site Audit
    No pitch required 20 minutes Actionable findings, not a sales call
    Chris Lewis

    Written by

    Chris Lewis — Founder, Thrive Media

    Chris Lewis is the founder of Thrive Media, a custom AI web design and implementation agency based in Thousand Oaks, CA. He has built and launched websites for 500+ service businesses across Ventura County, Los Angeles, and Southern California, and monitors their search and AI visibility using Encited's prerendering and AEO platform.

    LinkedInthrivemedia.coLast updated: 2026-07-15

    Keep reading