A page isn't indexed for one of four reasons: Google can't access it, the page tells Google not to index it, Google hasn't found or crawled it yet, or Google crawled it and decided it isn't worth keeping. Start with URL Inspection in Search Console, which tells you which of these applies, then go through the matching section of the checklist below.
Step zero: what does Search Console say?
Paste the URL into URL Inspection. If it says "URL is on Google", the page is indexed and your problem is ranking, not indexing. Otherwise, the "Page indexing" section names the reason. Here's what the common ones mean and where to look.
| Status in Search Console | What it means | Go to |
|---|---|---|
| Excluded by 'noindex' tag | The page asks not to be indexed | Section 2 |
| Blocked by robots.txt | Googlebot isn't allowed to crawl it | Section 1 |
| Not found (404) | The URL returns 404 | Section 1 |
| Soft 404 | Returns 200 but looks like an empty or error page | Section 4 |
| Server error (5xx) | The server failed when Googlebot visited | Section 1 |
| Page with redirect | The URL redirects somewhere else | Section 2 |
| Alternate page with proper canonical tag | Canonical points to another URL, which is indexed instead | Section 2 |
| Duplicate, Google chose different canonical than user | Google disagrees with your canonical | Section 4 |
| Discovered – currently not indexed | Known but not crawled yet | Section 3 |
| Crawled – currently not indexed | Crawled and left out | Section 4 |
1. Can Google access the page?
- The URL returns 200. Not 404, 410, 403, 401 or 5xx. Check the actual response, not what the browser shows after redirects.
- robots.txt allows it. No
Disallowrule that matches the path for Googlebot. Remember that rules match by prefix:Disallow: /blogalso blocks/blog-news/. - No login or IP restriction. Staging protections, geo-blocking and paywalls without structured data stop Googlebot too.
- Your firewall or CDN lets Googlebot through. Bot challenges, JavaScript checks and rate limits can serve Googlebot an error page while humans see the real one.
- The server is stable. Intermittent 5xx errors are easy to miss in a browser and very visible to a crawler.
2. Does the page allow indexing?
- No
noindexin the HTML. Look for<meta name="robots" content="noindex">and the Googlebot-specific variant. - No
noindexin the HTTP headers.X-Robots-Tag: noindexis set by the server or a plugin and doesn't show up in the page source. - The canonical points to itself. A canonical to another URL tells Google to index that one instead. Templates that set every canonical to the homepage are a classic mistake.
- The URL doesn't redirect. Google indexes the destination. If you're checking the old URL, check where it goes.
- No JavaScript that adds noindex or changes the canonical after the page loads. Google may act on what it sees in the raw HTML and skip rendering.
All of this can be verified in a couple of minutes with a few commands. Our guide on how to check if a URL is indexable walks through each one.
3. Has Google found and crawled the page?
- It's linked from other pages on your site, ideally from pages that are indexed and get traffic. Orphan pages are found late or not at all.
- It's in the XML sitemap, and the sitemap is submitted in Search Console.
- Internal links use the canonical URL, not a redirecting or parameterised version.
- The site isn't drowning in junk URLs that use up crawl time. See the guide on "Discovered – currently not indexed".
- Enough time has passed. A page published this morning on a new domain may simply not have been crawled yet.
4. Is the page worth indexing?
If Google crawled the page and still left it out, the question is whether it adds something the index doesn't already have.
- It isn't thin. It covers the topic properly and answers the obvious follow-up questions.
- It isn't a duplicate. No other page on your site, or across your sites, says the same thing. Check variants with and without parameters, trailing slashes and
www. - It isn't a soft 404. Empty categories, "no products found" pages and placeholders look like errors to Google even when they return 200.
- The main content is in the HTML. If it only appears after scripts run, check the rendered version in URL Inspection.
- It matches what people search for. A page that answers a question nobody asks has little reason to be indexed.
The guide on "Crawled – currently not indexed" goes deeper into fixing this.
5. Is something wrong with the whole site?
- No manual action. Check Security & Manual actions in Search Console. A manual action can remove pages or the whole site.
- No security issues. Hacked pages, injected spam and malware warnings hurt indexing site-wide.
- The domain isn't brand new with no links. New sites are crawled cautiously. That's patience, not a penalty.
- Most of the site is good. If a large share of pages are thin or auto-generated, Google becomes slower to index even your good ones.
Which fixes come first?
When many pages are missing, you can't fix everything at once. Order the work by impact:
- Site-wide blocks. A stray noindex in a template, a robots.txt rule that's too broad or a firewall blocking Googlebot can keep hundreds of pages out. One fix, big result.
- Your most valuable pages. Money pages, main categories and top articles. Check them individually with URL Inspection.
- Template issues. If one page type (products, tags, locations) has a pattern of problems, fix the template, not each page.
- Content quality. Improving or merging thin pages takes the longest, so do it once the technical side is clean.
The tools you need are mostly free: Search Console for statuses and URL Inspection, a terminal or browser developer tools for headers, and a crawler for sites with more than a few dozen pages.
Once everything checks out
When the page passes all of the above, it needs to be crawled again so Google sees the fixed version. Use Request indexing in URL Inspection for one or two URLs. For a batch, submit them through an indexing service.
@IndexForgeBot runs the technical part of this checklist automatically, sections 1 and 2, on every link you send it. Pages that return errors, redirect, carry noindex, are blocked by robots.txt or have a canonical elsewhere are filtered out free of charge, and the rest are sent at $0.01 each. Sections 3 to 5 are still on you, and they're where most lasting wins come from.
Keep a log of what you change
Search Console reports update with a delay, often days. If you fix five things in a week and the page comes back a fortnight later, you won't know which fix did it unless you wrote it down. A simple log with the date, the URLs and what changed makes the next problem much faster to solve.
It also helps you spot regressions. Many "mysterious" drops trace back to a deploy that changed a template, a plugin update that switched on noindex or a new firewall rule. With a log, you can line up the date of the drop with the date of the change.
Common questions
My page was indexed and then disappeared. Why?
Pages drop out when something changed on the page (a new noindex, a canonical, a redirect, an error), or when Google re-evaluated it and decided it's not worth keeping. Check the technical side first, since it's faster to rule out.
Does a page need backlinks to be indexed?
No. Plenty of pages are indexed with no external links at all. Internal links and a sitemap are enough for discovery. External links help with crawl priority and trust, especially on new sites.
Is the site: search reliable for checking indexing?
No. It's an approximation and often misses pages that are indexed. Use URL Inspection for a definite answer about a specific URL.
Have a list of URLs stuck outside the index?The bot checks them first and charges only for links that go through. 10 free credits to start.
Open the bot