Reference

Why Isn't My Page Indexed?

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 GSCCategoryFirst check
Excluded by noindex tagIntentionalView source for noindex meta tag
Blocked by robots.txtIntentionalrobots.txt tester in Search Console
Alternate page with proper canonicalIntentionalCheck canonical tag in <head>
Crawled: currently not indexedContent qualityReview content depth and uniqueness
Discovered: currently not indexedDiscoveryAdd internal links; request indexing
Soft 404Content qualityCheck server response code vs. page content
Duplicate, submitted URL not selectedDuplicate contentCheck canonical chosen by Google
Redirect errorTechnicalAudit redirect chain
Server error (5xx)TechnicalCheck server logs
Not found (404)TechnicalConfirm 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.