Why Isn't My Page Indexed?
Last updated
A page not appearing in Google search results is almost always diagnosable. The causes fall into a small set of categories, and Google Search Console tells you which one applies. This guide walks through each category in order of how common it is, what to check, and how to fix it.
Start with the Page Indexing report
Open Google Search Console and go to Indexing > Pages. This report shows every URL Google has found on your site, split between indexed and not indexed. Non-indexed URLs are grouped by reason; this is your starting point.
If the URL you’re investigating is not listed at all, Google hasn’t discovered it yet. Jump to the discovery section below.
If it is listed, find its reason code. The sections below map to those codes.
1. Intentional exclusions
These are the most common reason, and the easiest to fix, because they’re usually the result of a deliberate setting that someone forgot to remove.
Excluded by noindex tag
A <meta name="robots" content="noindex"> tag or an x-robots-tag: noindex HTTP header tells Google explicitly not to index the page. This is correct for things like thank-you pages, internal search results, and staging environments. It is wrong for any page you want to rank.
Check: View source on the page and search for noindex. Also check whether your CMS has a “discourage search engines” or “noindex” toggle in the page settings. WordPress, in particular, has a site-wide noindex setting that occasionally gets enabled accidentally.
Fix: Remove the noindex directive. Allow 1–4 weeks for Google to re-crawl and index.
Blocked by robots.txt
Your robots.txt file may be disallowing Googlebot from crawling the page or the directory it lives in. Note that robots.txt blocks crawling, not indexing. Google can still index a URL it discovers via links even if it can’t crawl it, though it will have no content to work with.
Check: Use the URL Inspection tool in Search Console and look at the “Crawl” section. Also test the URL directly in the robots.txt tester (under Settings > robots.txt in Search Console).
Fix: Remove or amend the disallow rule in robots.txt. See the robots.txt reference guide for syntax.
Alternate page with proper canonical tag
The page has a canonical tag (<link rel="canonical" href="...">) pointing to a different URL. Google treats the canonical as the “real” version and consolidates signals there. The page you’re checking is treated as a duplicate and won’t be indexed in its own right.
Check: View source and look for rel="canonical" in the <head>. If it points to a different URL, that’s why.
Fix: If this page should be the canonical, update the tag to be self-referencing. If it genuinely is a duplicate, the canonical is working as intended.
Password-protected or access-restricted
Googlebot can’t log in. The page returns a 401 or 403, or is behind a form that requires authentication.
Fix: Ensure the page is publicly accessible. If it must be gated, it cannot be indexed.
2. Crawl and discovery problems
Google hasn’t found the page, can’t crawl it consistently, or isn’t prioritising it.
Not discovered yet
New pages, especially on newer or lower-authority sites, can take days to weeks to be crawled. Google finds pages primarily through links. A page with no internal links pointing to it may never be crawled.
Check: Use the URL Inspection tool and click “Request indexing.” This queues the URL for crawling (it doesn’t guarantee indexing, but it speeds things up). Also check whether the URL appears in your XML sitemap.
Fix: Add internal links to the page from other indexed pages on your site. Submit the URL via the sitemap. For important pages, request indexing directly in Search Console.
Not in XML sitemap
Sitemaps signal to Google which URLs you consider important. Omitting a page doesn’t prevent indexing, but it slows discovery.
Fix: Add the URL to your XML sitemap and resubmit it in Search Console under Indexing > Sitemaps.
Crawl budget not reaching the page
On large sites, Google won’t crawl every URL on every visit. Pages deep in the architecture, those with many URL parameters, or those receiving few internal links may be crawled infrequently or not at all.
Check: Log file analysis can confirm whether Googlebot is visiting the page. In Search Console, check the “Crawl stats” report under Settings.
Fix: Improve internal linking to the page. Reduce crawl waste elsewhere on the site (block parameter URLs in robots.txt, remove thin duplicate pages). See the crawl budget guide for a full breakdown.
Sitemap errors
A malformed sitemap, incorrect content-type, or a sitemap that 404s prevents Google from processing it.
Check: In Search Console under Indexing > Sitemaps, look for error warnings on submitted sitemaps.
Fix: Validate the sitemap against the sitemap protocol. Ensure it returns a 200 with content-type: application/xml.
3. Content quality signals
Google crawls the page but decides it isn’t worth indexing. This category is harder to diagnose definitively because Google doesn’t always give an explicit reason.
”Crawled: currently not indexed”
This GSC reason code is Google’s way of saying: “We visited this page but chose not to index it.” It usually signals a content quality problem.
Common causes:
- Very short or thin content that doesn’t add information beyond what exists elsewhere
- Content that closely mirrors other indexed pages on your site or on the web
- Pages with high boilerplate ratio (navigation, footer, etc.) relative to unique content
- Queries the page targets don’t match what users actually search for
Fix: Expand the content with genuinely useful, specific information. Ensure the page answers a distinct question that isn’t better served by another page on your site. This is editorial work. There is no technical shortcut.
Soft 404
The server returns a 200 status code but the page content is empty or shows an error message. Google detects the mismatch and treats it as a 404.
Common sources: empty search results pages, “no results found” product filter pages, empty category pages, database-driven pages where the record has been deleted.
Check: URL Inspection will flag soft 404s. Also look for pages with very low word counts in a site crawl.
Fix: Return a proper 404 or 410 status code for pages with no real content. Redirect to the nearest relevant live page if there’s link equity to preserve.
Duplicate content
Google identifies the page as substantially identical to another URL and indexes only one version.
Check: Search Google for a distinctive sentence from the page in quotes. If another URL appears and yours doesn’t, that’s the canonical Google has chosen.
Fix: Consolidate duplicates. Redirect or canonicalise to one URL. Ensure www/non-www and HTTP/HTTPS versions all redirect to a single canonical version.
4. Technical barriers
JavaScript rendering issues
If the page’s main content is rendered by JavaScript, Googlebot may crawl an empty shell and find nothing worth indexing. Google does render JavaScript, but it happens in a second wave, often days after the initial crawl, and rendering failures are common on complex JS-heavy pages.
Check: In URL Inspection, click “View crawled page” and compare the rendered HTML with what you see in a browser. If key content is missing from the rendered version, JavaScript rendering is the problem.
Fix: Serve content in the initial HTML response (server-side rendering or static generation). At minimum, ensure critical content and internal links are not dependent on JavaScript execution.
Redirect errors
A redirect chain, redirect loop, or a redirect that leads to a 4xx or 5xx response prevents Google from reaching the final URL.
Check: URL Inspection shows redirect chains. A crawl tool (Screaming Frog, Sitebulb) will flag chains and loops.
Fix: Point the original URL directly to the final destination. Chains of more than two hops are worth collapsing even when they work.
Server errors (5xx)
If Google consistently receives 5xx responses when crawling a URL, it will reduce crawl frequency and eventually drop the URL from the index.
Check: URL Inspection shows the last crawl status. Server logs show Googlebot response codes directly.
Fix: Resolve the underlying server instability. During planned maintenance, return 503 with a Retry-After header to signal a temporary state.
Slow response times
Extremely slow pages may time out during crawling. This is rare as a sole cause of non-indexing but contributes to reduced crawl frequency.
Fix: Improve server response time (TTFB). Use a CDN for static assets.
5. Mobile usability failures
Google uses mobile-first indexing: it crawls and evaluates the mobile version of pages. Severe mobile usability problems can prevent indexing.
Check: In Search Console under Experience > Mobile Usability, check for errors on the affected URL. Use the URL Inspection tool to see whether the mobile version is being used.
Fix: Ensure the mobile version of the page contains the same content as the desktop version. Fix any viewport, touch target, or content-wider-than-screen errors flagged in the Mobile Usability report.
Quick-reference summary
| Reason code in GSC | Category | First check |
|---|---|---|
| Excluded by noindex tag | Intentional | View source for noindex meta tag |
| Blocked by robots.txt | Intentional | robots.txt tester in Search Console |
| Alternate page with proper canonical | Intentional | Check canonical tag in <head> |
| Crawled: currently not indexed | Content quality | Review content depth and uniqueness |
| Discovered: currently not indexed | Discovery | Add internal links; request indexing |
| Soft 404 | Content quality | Check server response code vs. page content |
| Duplicate, submitted URL not selected | Duplicate content | Check canonical chosen by Google |
| Redirect error | Technical | Audit redirect chain |
| Server error (5xx) | Technical | Check server logs |
| Not found (404) | Technical | Confirm URL is correct and page exists |
Indexing vs. ranking
A page being indexed means Google has it in its database. It does not mean the page will rank for anything. If your page is indexed but not generating traffic, the problem is competitive ranking, not indexing. Check the Performance report in Search Console. If the page has impressions, it’s indexed and appearing in results, just not in positions that generate clicks.