When a page returns a HTTP 200 (Success) code and sits neatly in your XML sitemap, it means your server is saying “Yes, this page works!” and your sitemap is saying “Hey Google, look at this!”
Yet Google still refuses to index it. Why?
Because indexing is an editorial decision by Google’s algorithms, not an automatic right. Returning a status code 200 just means the door is open; it doesn’t mean Google thinks the room inside is worth visiting.
When a 200 OK page remains unindexed, Google usually classifies it under one of two Search Console statuses:
-
Discovered – currently not indexed: Google knows the URL exists, but hasn’t bothered to crawl it yet.
-
Crawled – currently not indexed: Google crawled the page, looked at the content, and explicitly decided not to put it in the search results.
Here is the step-by-step diagnostic process to find the hidden issue and get that page indexed.
Step 1: Run the URL Inspection Tool (The X-Ray)
Paste the exact URL into the top search bar of Google Search Console (GSC) and click Test Live URL. Look specifically at these three technical traps:
A. The “Google-Selected Canonical” Mismatch
-
What to check: Scroll down to the Page Indexing section and compare the User-declared canonical with the Google-selected canonical.
-
The Hidden Bug: If you declared
Page A, but Google selectedPage B, Google believes your page is a duplicate of something else on your site (or the web). Google won’t indexPage Abecause it passes all credit toPage B.
B. The Rendered HTML Check
-
What to check: Click View Tested Page $\rightarrow$ Screenshot / HTML.
-
The Hidden Bug: If your site relies heavily on JavaScript (like React or Vue), your server might send a 200 code with a blank white page, expecting the browser to load the content later. If Googlebot fails to render the JavaScript, it sees zero text and rejects the page as empty.
C. Soft 404 Detection
-
What to check: Does GSC label the page as a “Soft 404”?
-
The Hidden Bug: A Soft 404 happens when a server returns a 200 OK code, but the page content looks like an error page (e.g., “Sorry, out of stock,” or an empty category page with zero products). Google recognizes this trick and refuses to index it.
Step 2: The “Quality & Utility” Audit
If the technical signals are completely green, Google is rejecting the page on content quality. Ask yourself these three simple questions:
┌──────────────────────────────────────────┐
│ Does the page pass the Quality Filter? │
└────────────────────┬─────────────────────┘
│
┌──────────────────────────┴──────────────────────────┐
▼ ▼
[ NO (Fails) ] [ YES (Passes) ]
• Under 200 words of text? • Unique perspective or data?
• Synthesized/copied from other pages? • Clear, standalone utility?
• Template text with minor tweaks? • Strong internal link support?
│ │
▼ ▼
┌──────────────────────────┐ ┌──────────────────────────┐
│ REJECTED BY GOOGLE │ │ PROCEED TO STEP 3 │
│ "Crawled - Not Indexed" │ │ (Fix Internal Linking) │
└──────────────────────────┘ └──────────────────────────┘
-
Is it “Thin Content”? Pages with very little unique text (like auto-generated location pages where only the city name changes) get filtered out automatically.
-
Does it lack “Information Gain”? If the page simply repeats information already published on five other pages on your site, Google won’t waste index space on it.
Step 3: Check Internal Link Equity & Crawl Depth
Google allocates crawl priority based on how important your site tells it a page is. A URL in an XML sitemap is a weak signal compared to internal links.
-
Crawl Depth Check: How many clicks does it take to get from your homepage to this unindexed page? If it takes more than 3 clicks, Google considers it low priority and may skip indexing it.
-
The Orphan Test: Does any other page on your site actually link to this URL inside the body text? If a page only exists in the sitemap but has zero internal links from live pages, Google treats it with suspicion.
Step 4: The Execution Plan (How to Force Indexation)
Once you’ve identified the bottleneck, execute this sequence to get the page indexed:
Summary Diagnostic Checklist
| Diagnostic Check | Where to Find It | What a “Pass” Looks Like |
| HTTP Status Code | Server Logs / Inspection Tool | Returns 200 OK. |
| Canonical Alignment | GSC URL Inspection | User-declared matches Google-selected canonical. |
| JavaScript Rendering | GSC “View Tested Page” | Full rendered text visible in DOM screenshot. |
| Internal Links | Screaming Frog / Ahrefs | At least 3–5 body links from other indexed pages. |
| Page Depth | Site Crawler | Accessible within $\le 3$ clicks from the homepage. |
