Why isn’t my page showing on Google?
A page is usually missing from Google for one of a handful of reasons - too new, noindex, robots.txt, a stray canonical, or thin content. Here’s how to tell which.
A page that won’t appear on Google almost always traces to one of a handful of causes, and Search Console’s URL Inspection tool names the exact one:
- Too new - Google has to discover, crawl, then index a URL, which takes days to a few weeks; a page published yesterday usually isn’t broken, it’s queued.
- Blocked - a "noindex" tag tells Google to stay out, while a stray "Disallow" line in robots.txt stops the crawl before Google ever sees the page.
- Misdirected canonical - a canonical pointing at a different URL makes Google index that twin and drop yours as a duplicate, though the page itself is fine.
- Judged thin - “Crawled – currently not indexed” means Google read the page and chose not to, a quality signal the content needs a distinct purpose.
Match the fix to the diagnosis rather than guessing. Indexing decides whether Google will show your page at all; ranking, a separate problem, decides where - so confirm the page is indexed before optimising anything else.
A page usually isn't on Google for one of a handful of reasons - it's too new and hasn't been crawled yet, it's blocked by a noindex tag or by robots.txt, a canonical tag points Google at a different URL, or Google looked at it and judged it thin or duplicate. Search Console's URL Inspection tool tells you which one it is in about 30 seconds, so you fix the actual cause instead of guessing. This page is the diagnosis half - if your site has never been on Google at all, start with how to get your website on Google first, then come back here when a specific page won't appear.
The usual reasons a page isn't indexed
There are six causes that account for almost every "my page is missing" case, and they fall into two groups: Google can't index the page, or Google decided not to.
It's too new. Google has to discover a URL, crawl it, then decide to index it - and that pipeline takes time. Days for an established site, sometimes a few weeks for a brand-new one. A page published yesterday that isn't on Google is, most of the time, not broken. It's in the queue. This is the cause people panic about most and it's the one that fixes itself.
A noindex tag. A <meta name="robots" content="noindex"> tag in the page's HTML, or an X-Robots-Tag: noindex HTTP header, is an explicit instruction telling Google to keep the page out of search. It works exactly as designed, which is the problem - it's usually left over from a staging site, a "coming soon" plugin, or a developer who set it and forgot. Google obeys it without complaint and without warning you.
robots.txt is blocking the crawl. Your robots.txt file tells crawlers which paths they're allowed to fetch. A stray Disallow: rule covering your page means Google never reads it. (A subtlety worth knowing: a robots.txt block and a noindex tag are different failures - robots.txt stops the crawl, so Google may never even see the noindex tag it would otherwise obey.)
A canonical points somewhere else. A canonical tag tells Google "the real version of this page lives at this other URL". If the canonical on your page points at a different URL - a common mistake when a template hardcodes one canonical across many pages - Google indexes that other URL and drops yours as a duplicate. The page is fine; it's just been told to defer to a twin.
Google judged it thin or duplicate. Sometimes Google crawls the page, understands it, and decides it isn't worth indexing - too little unique content, or too similar to something already in the index. This shows up in Search Console as "Crawled – currently not indexed", and it's a quality signal, not a bug. The page needs a reason to exist that another page doesn't already cover.
"Discovered – currently not indexed." This specific status means Google knows the URL exists but hasn't crawled it yet - often a sign of crawl-budget thinning on a large or slow site, or a page Google isn't prioritising. It's the in-between state: not blocked, not indexed, just waiting.
How to diagnose it in Search Console
Stop guessing and ask Google directly. Open Google Search Console, paste the exact URL into the inspection bar at the top, and read the verdict. The URL Inspection tool gives you Google's own status for that one page, which beats any amount of theorising.
The headline you want is "URL is on Google". Anything else, expand the Page indexing section and read the reason. The wording maps straight onto the causes above:
- "URL is unknown to Google" - never discovered. Submit it (the Request Indexing button) and make sure it's in your XML sitemap.
- "Discovered – currently not indexed" / "Crawled – currently not indexed" - discovered or crawled, but not chosen. The first usually means wait or improve internal linking; the second usually means the content is thin or duplicate.
- "Excluded by 'noindex' tag" - the noindex cause, named outright.
- "Blocked by robots.txt" - your robots.txt is stopping the crawl.
- "Alternate page with proper canonical tag" - a canonical is pointing Google elsewhere on purpose. "Duplicate, Google chose different canonical than user" means Google overrode your canonical.
The full list of statuses and what each means is in Google's page indexing report documentation - worth a bookmark, because the wording is precise and easy to misread.
Common variations
One page missing vs the whole site missing. If a single page won't index but the rest of your site is fine, it's almost always a per-page problem - a noindex tag on that template, a bad canonical, or thin content. If the whole site has vanished, look for a site-wide block first: a Disallow: / in robots.txt, a site-wide noindex (the classic WordPress "Discourage search engines" checkbox left ticked after launch), or a manual action under Security & Manual Actions in Search Console. Site-wide problems have site-wide causes - don't debug them one page at a time.
It was indexed, now it's dropped. A page that used to appear and now doesn't points at a change. Something altered: a redeploy that reintroduced a noindex tag, a URL that changed without a redirect, a canonical edit, or content that got thinned in a redesign. Use the URL Inspection tool's history and ask "what changed around when it dropped?" - the answer is usually a deployment, not Google moving the goalposts.
The fix for each cause
Match the fix to the diagnosis - applying the wrong one wastes days.
- Too new / Discovered - not indexed - submit the URL via Request Indexing, confirm it's in your sitemap, and add internal links to it from pages Google already crawls often. Then wait; indexing isn't instant.
- noindex tag - remove the
noindexmeta tag orX-Robots-Tagheader, redeploy, then Request Indexing to prompt a recrawl. Check your CMS's SEO plugin and any "visibility" toggle. - robots.txt block - remove or narrow the
Disallow:rule covering the page, test it in Search Console's robots.txt tester, then recrawl. - Wrong canonical - point the canonical at the page's own URL (a self-referencing canonical) unless you genuinely want it to defer to another page. Fix the template, not just the one page.
- Thin / duplicate - give the page substance and a distinct purpose: real, specific content that no other page on your site already covers. Then request indexing once it's genuinely different.
For the broader picture of getting a small business site found, our small business SEO checklist walks the whole sequence - from indexing through to the on-page work that comes after.
When this isn't enough
Indexing is binary: a page is on Google or it isn't. Once it's on Google and still not getting traffic, you've crossed from an indexing problem into a ranking problem - a completely different diagnosis, covered in why isn't my website ranking. The short version of the boundary: indexing is whether Google will show your page at all; ranking is where it shows up when someone searches. Confirm the page is indexed first - there's no point optimising a page Google can't even see.
If you'd rather not read tags by hand, the crawlable, outside-visible half of all this - whether your pages return a noindex header, whether robots.txt is blocking paths, whether your sitemap resolves - is exactly what an automated scan checks. It won't read your Search Console for you, but it'll flag the mechanical blocks before you spend an afternoon hunting for them. For the one-line version of this whole page, see why isn't my page on Google; and if the page is indexed but the search snippet looks wrong, that's usually a schema markup question rather than an indexing one.