A page can compete for a search result only after it has been found, fetched, understood and stored, and Google says it does not guarantee to crawl, index or serve any page. Check that chain in order: the URL, the response code, the robots rules, the rendered HTML, the canonical choice and the index status. A page that fails an early step cannot be rescued by better copy.
The chain every page has to survive
Google describes Search as three stages. In crawling, automated programs download text, images and video from pages they have found. In indexing, Google analyzes the page and stores what it learned. In serving, it returns results that are relevant to a query.[1] Each stage can stop a page, and each leaves different evidence. Rewriting a title will not help a page that answers with a server error, and a perfect sitemap will not help a page marked noindex.
- Discover
No link or sitemap entry points to it.
Look at: Sitemaps report, internal links - Crawl
robots.txt blocks it or the server fails.
Look at: URL Inspection live test, server logs - Render
Key text exists only after failed JavaScript.
Look at: View crawled page, raw HTML - Index
noindex, a duplicate or a low-value page.
Look at: Page indexing report, canonical field - Serve
Another page answers the query better.
Look at: Performance report, queries and pages
Two details change how you debug. First, rendering sits between crawling and indexing. Googlebot queues pages that return a 200 status for rendering unless a robots rule tells it not to index them, and a headless Chromium then runs the JavaScript before Google indexes the rendered HTML.[2] A page can be fetched without trouble and still be indexed without text that only JavaScript produces. The JavaScript chapter covers that case.
Second, nothing is guaranteed at any stage. Google says it does not guarantee that it will crawl, index or serve a page, even one that follows its guidelines.[1] Your job is not to force inclusion. It is to remove every avoidable reason for exclusion and let the content earn the rest.
Robots.txt manages crawling, not indexing
A robots.txt file tells crawlers which URLs they may access. Google’s documentation says it exists mainly to avoid overloading your site and is not a mechanism for keeping a page out of Google. To keep a page out, block indexing with noindex or put the page behind a password.[3] If a page is blocked in robots.txt but other pages link to it with descriptive text, Google can still index the bare URL without visiting it, and the result appears with no description.[3]
That produces the most common contradiction in technical SEO. A team adds noindex to a page, then blocks the same page in robots.txt “to be safe.” The crawler can no longer fetch the page, so it never reads the noindex. Google states that robots meta rules can be read and followed only when crawlers are allowed to access the page that carries them.[4]
Two more limits matter. Robots.txt is a convention honored by well-behaved crawlers and standardized as RFC 9309, which states that its rules are not a form of access authorization.[5] Anything genuinely private needs authentication, and because robots.txt is a public file, a Disallow line also announces the path it protects. And changes are not instant: Google generally caches robots.txt for up to 24 hours and may keep it longer when it cannot refresh it.[6]
# robots.txt for a small business site User-agent: * Disallow: /cart/ Disallow: /search # Do not block /css/ or /js/: Google needs them to render pages. Sitemap: https://example.com/sitemap.xml <!-- on a page you want kept out of results (and still crawlable) --> <meta name="robots" content="noindex">
Keep the file short. Block crawl-wasting areas such as carts and internal search, and leave alone any resource a page needs to render, since Google advises against blocking files whose absence makes a page harder to understand.[3]
One page, one preferred address
The same content is often reachable at several URLs: with and without www, over http and https, with and without a trailing slash, and with tracking or sorting parameters appended. Search engines must decide which version to show, and signals such as links can be split across the copies. You can state your preference with three methods, listed here in the order Google says they influence the choice.[7]
| Signal | Strength | Best use |
|---|---|---|
| Permanent redirect (301) | Strong | Retire a URL variant for good: http to https, non-preferred host, old slugs. |
rel="canonical" link | Strong | Variants that must stay reachable, such as parameter or tracking URLs. |
| Sitemap inclusion | Weak | Confirm your choice by listing only the preferred URL. |
The methods stack, so using two or three raises the chance your preferred URL is chosen. None is required, and without a preference Google picks the version it judges best.[7] It can also overrule your choice. The URL Inspection tool reports the Google-selected canonical for an indexed page, which is the quickest way to see whether your signals won.[8]
https://example.com/services/sports-massage/ preferred http://example.com/services/sports-massage/ 301 to preferred https://www.example.com/services/sports-massage/ 301 to preferred https://example.com/services/sports-massage/?utm=news canonical to preferred <link rel="canonical" href="https://example.com/services/sports-massage/">
Keep the signals consistent. Google’s guidance warns against naming one URL as canonical in the sitemap and another in the page, against using robots.txt for canonicalization and against using the URL removal tool for it, because that hides every version of the URL.[7] When the report says Google chose a different canonical than you did, compare the two pages. Either they are near duplicates that should be merged, or your page does not yet differ enough to deserve its own URL.
Sitemaps are a hint, not a guarantee
A sitemap is a list of the URLs you want crawled. The rules are simple: a single file may hold up to 50,000 URLs or 50 MB uncompressed, URLs must be fully qualified and the file must be UTF-8.[9] Google ignores the priority and changefreq values, and uses lastmod only when it has proven consistently accurate, so update it when the page meaningfully changes and not on every deploy.[9] Submitting a sitemap does not guarantee anything; it is a hint.[9]
The common mistake is a sitemap that contradicts the rest of the site. Search Console warns that error spikes can come from a submitted sitemap containing URLs blocked by robots.txt, marked noindex or behind a login.[10] List only canonical, indexable pages that return 200. If your CMS generates the file, open it once and check that redirected, noindex and parameter URLs are absent.
<url> <loc>https://example.com/services/sports-massage/</loc> <lastmod>2026-09-14</lastmod> </url>
For engines other than Google there is also IndexNow, a protocol that pings participating search engines when a URL is added, updated or deleted. Its project site lists Microsoft Bing, Naver, Seznam.cz, Yandex and Yep as supporters and says that without it, discovering a change can take days to weeks.[11] Google is not among the supporters named there, so a sitemap and good internal links remain the baseline.
Read Search Console as a diagnostic, not a scoreboard
The Page indexing report starts from a realistic premise. It says most sites have at least a few unindexed pages, that all important pages should be indexed and that you should not expect every URL to be.[10] Duplicates, blocked utility pages and removed pages belong in the not-indexed column. Triage by importance: start with the pages that carry enquiries, and ignore the rest until those are healthy.
| Status | What it tells you | First check |
|---|---|---|
| Blocked by robots.txt | A Disallow rule matches the URL. | Compare the URL with robots.txt. Often intentional; remove the rule only if the page should rank. |
| Excluded by ‘noindex’ tag | The page asks not to be indexed. | Look for the tag in the HTML and the X-Robots-Tag header, including template defaults left from staging. |
| Duplicate, Google chose different canonical than user | Your canonical signal was overruled. | Compare the two pages, then merge or differentiate them. |
| Alternate page with proper canonical tag | A duplicate correctly points to the canonical page. | Usually nothing. This is the system working. |
| Page with redirect | The URL redirects, and the target is what is indexed. | Expected for old URLs. Make sure the target is the right page. |
| Soft 404 | The page returns 200 but reads like an error or an empty page. | Return a real 404 or 410, or restore useful content. |
| Discovered - currently not indexed | Google knows the URL but has not crawled it yet. | Check internal links to it and server health; give it time. |
| Crawled - currently not indexed | Google fetched the page and chose not to store it. | The report gives no reason. Look at duplication, usefulness and how well the site links to the page. |
Use the URL Inspection tool for single pages. It shows the indexed version of a URL, lets you test the live version, renders a screenshot of how Google’s inspection tool sees the page and lists the resources and JavaScript output it loaded.[8] After a fix, request indexing and note the date. Google’s starter guide says changes can take from a few hours to several months to show, and suggests waiting a few weeks before judging the result.[12]
Crawl budget is usually not your problem. Google’s guidance on managing crawl budget is aimed at sites with more than a million unique pages that change weekly, or more than 10,000 that change daily.[13] A typical business site is far smaller. If its pages are not indexed, look at access, duplication and quality before tuning crawl rate.
Work a failure from symptom to fix
When a page is missing, walk the chain in order and stop at the first failure. Each check is cheap, and an early fix often explains everything after it.
Illustrative example: the service page that never appeared
A physiotherapy clinic launches a page for sports massage. Six weeks later it gets no impressions. The owner assumes the copy is weak and wants to rewrite it.
Step 1. curl -sIL https://example.com/services/sports-massage returns a 301 to the trailing-slash URL, then a 200. Fine.
Step 2. curl -s https://example.com/robots.txt shows Disallow: /services/, left in by a developer during staging. The live test in URL Inspection confirms the URL is blocked.
Fix. Remove the rule, check the result in the live test and request indexing. A fresh look at the status a few weeks later shows “Crawled - currently not indexed,” because the page repeats the intro of the general massage page. Merging the two pages, rather than rewriting either, resolves it. The copy was never the first problem.
Handle moves and removals on purpose
Most indexing damage on established sites comes from changing URLs without a plan. Decide what each old address should do, then make the server say so.
| Situation | Do this | Avoid |
|---|---|---|
| A page moves permanently | 301 from the old URL to the closest equivalent new URL, one to one. Update internal links, the sitemap and canonicals to the new address.[14] | Sending every old URL to the home page, which strips the old page’s purpose. |
| A page is gone with no replacement | Return 404 or 410 so crawlers learn the page is gone.[15] | A friendly “not found” page that returns 200, which Search Console reports as a soft 404. |
| A change is temporary | Use a temporary redirect, then remove it when the original returns. | Leaving a temporary redirect in place for years. |
| You change domains or restructure the site | List every old URL, map each to its destination and redirect server-side with pattern rules where possible.[14] | Launching before the mapping exists. |
Keep redirect chains short. By default Google’s crawlers follow up to ten redirect hops, but every extra hop is another request that can fail, so point each old URL straight at its final destination.[15] Before a launch, crawl the staging site once and compare its URL list with the old one. The gaps are your redirects.
Apply it to your website
- Each important URL ends in a 200 response after at most one redirect, and the final address matches your preferred version.
- robots.txt blocks only low-value areas such as carts and internal search, and never the CSS or JavaScript a page needs to render.
- Pages you want kept out of results carry noindex and stay crawlable, or sit behind authentication. None relies on robots.txt alone.
- Every indexable page names one canonical URL, and redirects, canonicals, internal links and the sitemap all agree.
- The sitemap lists only canonical, indexable pages that return 200, and lastmod changes only when the content does.
- Your pages that matter appear as Indexed in the Page indexing report, and you can explain each status in the not-indexed list.
- After every fix you note the date and the change, then judge the result after a few weeks rather than the next day.
Sources and further reading
Sources were consulted in October 2026 and the numbered notes above point here. Platform documentation changes often, so check the linked page before you act on a platform-specific detail. Worked scenarios are illustrative unless identified otherwise; methods and worksheets are Vantle’s editorial guidance.
- Google Search Central: How Google Search worksThe three stages and the statement that crawling, indexing and serving are not guaranteed.
- Google Search Central: JavaScript SEO basicsThe crawl and render queue, and which responses are rendered.
- Google Search Central: Introduction to robots.txtWhat robots.txt is for, and why it does not keep pages out of Google.
- Google Search Central: Robots meta tag, data-nosnippet and X-Robots-TagPage-level directives are read only when the page can be crawled.
- IETF RFC 9309: Robots Exclusion ProtocolThe 2022 standard; robots rules are not access authorization.
- Google Search Central: How Google interprets robots.txtCaching of the file for up to 24 hours.
- Google Search Central: Specify a canonical URLRedirects, rel=canonical and sitemaps as canonicalization signals, and what not to combine.
- Search Console Help: URL Inspection toolIndexed status, live test, rendered screenshot and the Google-selected canonical.
- Google Search Central: Build and submit a sitemapSize limits, absolute URLs, ignored fields and the role of lastmod.
- Search Console Help: Page indexing reportIndex statuses, and what is normal to see in the not-indexed list.
- IndexNowThe change-notification protocol and the engines that support it.
- Google Search Central: SEO Starter GuideHow long changes take to appear.
- Google Search Central: Managing crawl budget for large sitesWhich sites the guidance applies to.
- Google Search Central: Site moves with URL changesMapping old URLs to new ones and redirecting permanently.
- Google Search Central: HTTP status codes, network and DNS errorsHow Googlebot treats redirects, 404 and soft 404 responses.