Page Not Indexed: A Diagnostic Checklist for Webmasters

A page not indexed in Google is rarely a mystery, but it is usually diagnosed backwards. The common sequence is to resubmit, wait, resubmit again, then start rewriting the content, when the answer was sitting in a response header the whole time. This checklist runs the other way round. Every step takes under a minute, the cheapest and most conclusive come first, and each one is written to tell you what it rules out. Work down the list and stop at the first step that produces an answer. Most pages never reach the bottom.
First, confirm the page is not indexed in Google
Establish the fact before diagnosing it. Two things go wrong here.
The URL you are checking may not be the URL Google has: trailing slash against none, http against https, www against the bare domain, an uppercase path segment, a tracking parameter left on the end. Those are separate addresses, and Google indexes the one it fetched.
The check itself also has to be worth something. A site: query is an indication rather than a verdict. If the site is verified in Search Console, the URL Inspection tool gives the most authoritative single answer available for one URL. If it is not verified, or the page sits on a domain you will never own, you need a check against live results instead. Either way, write down the date you checked. “Not indexed” with no timestamp is not evidence you can use next week.
The checklist, in order
1. Fetch the URL as an anonymous visitor. Not in the tab where you are signed into the CMS. You want a 200 with the content visible in the response. A 404, a 500, a login wall, or a redirect chain that ends somewhere else explains the absence on its own, and no submission tool overrides any of them.
2. Read the rendered source for a robots meta tag. A noindex is honoured, which is precisely what makes it the most common cause on this list. Google’s guidance on blocking indexing with noindex is unambiguous about that. Read the page as served, not the template you believe is deployed.
3. Read the response headers. The same instruction can arrive as an X-Robots-Tag, where nothing in the HTML gives it away. A CDN or a reverse proxy can apply one across a whole path pattern, and staging configuration reaches production more often than anyone likes to admit.
4. Test the URL against robots.txt. A disallow does not remove a page from the index. It stops Google fetching the URL, which also means any noindex on that page is never read. Google’s introduction to robots.txt sets out what the file can and cannot decide.
5. Read the canonical tag. If your page names a different URL as canonical, you have asked Google to index that one instead, and Google consolidates duplicates as designed. Parameterised, paginated, and translated templates are where this goes wrong quietly.
6. Reload the page with JavaScript disabled. If what is left is an empty shell, indexing depends on Google’s rendering step, and a rendering problem leaves Google holding the shell.
7. Find a link pointing at the page. Something on the site should reference the URL. A page reachable only through a sitemap is discoverable but unpersuasive, and Google allocates attention accordingly.
8. Check the age of the URL. A page published on Tuesday and missing on Wednesday is not a fault. It is a page published on Tuesday, on a site whose crawl history sets the pace.
If the property is verified, read its indexing status for the URL somewhere around step five, because it can skip you ahead. A status of crawled but not indexed moves the problem out of the mechanical half of this list, and what that status actually means is a different investigation.
When every check passes
Sooner or later you will run the whole list and find nothing wrong. The page returns 200, carries no blocking instruction, names itself as canonical, renders without scripts, sits in the navigation, and Google still has not kept it. That is not a dead end. It is the third possible answer, and it is a real one: Google states plainly in how Search works that not every crawled page is indexed. Submitting asks Google to look. It does not oblige Google to keep what it finds, which is the substance of submitted is not indexed.
Reaching that answer honestly is the part most workflows skip, because a submission receipt looks like a result. AIndexify separates the two on purpose. You paste URLs or upload a CSV, with no Search Console connection, no ownership proof, and no tag on the site, and each URL is then checked against live Google results on a fixed schedule. The preflight is the checklist above in miniature: a noindex, a robots block, or a 404 is caught before any check runs, the URL is marked Couldn’t check, and the credit is refunded rather than spent examining a page whose own markup asks crawlers to stay away. What comes back afterwards is a date the page was found, or a settled “not indexed as of” answer.
Keep the answers dated
The list produces more than a fix. Each step leaves a record: a header you read, a canonical you confirmed, a check that came back empty on a particular morning. To know whether a change worked you need the before and the after, both dated. Diagnosing the same page twice from scratch is the expensive habit here.
If you would rather see the whole machine before working on one part of it, the ultimate guide to Google indexing walks discovery, crawling, and the decision itself in order.
When the checklist runs clean and the waiting starts, the useful question is what Google did next. Submit your URLs and read the answer back with a date attached.