My website is not showing up on Google: 7 causes and how to check each one
By Carlos Alberto Cardona B. · · 9 min read
You search for your page on Google and it is not there. Almost always it is one of seven causes, and the first three are settled in ten minutes with free tools. The order you check them in is what saves you the afternoon.
A page can be missing for two very different reasons: Google does not have it, or Google has it and does not show it for that search. Google's own description of how Search works separates crawling, indexing and serving into three stages, and the fix is different at each one.
What follows is the order I use on a site I have never seen before.
First: is it missing, or is it not indexed?
These are not the same question and the answers live in different places. The quick check is the site: operator, which Google documents as an approximation, not an inventory.
Search for site:your-site.com/the-page. If the page comes back, it is indexed and your problem is ranking. If nothing comes back, it is not indexed and nothing you write on that page will help until that changes.
1. Google does not know the page exists
A URL that nothing links to and that is in no sitemap is, for practical purposes, invisible. Google finds pages by following links and by reading sitemaps; if neither path reaches your page, it was never a candidate.
Fix: link to it from a page that is already indexed, and make sure it is in your sitemap. Then use URL Inspection to request indexing, remembering that requesting is not the same as getting.
2. Discovered, but not crawled yet
In the Page Indexing report this shows up as «Discovered - currently not indexed». Google knows the URL and has not fetched it, usually because it is deciding how much of your site is worth its time.
On a new site this is normal and it resolves itself. On an old site it means Google is rationing, and the answer is fewer and better pages, plus internal links from the pages it already values.
3. Crawled, and Google chose not to index it
«Crawled - currently not indexed» is the hardest one, because nothing is broken. Google fetched the page, read it and decided it was not worth keeping.
In my experience this means one of three things: the page says what another page of yours already says, it says what a hundred other sites already say, or it is a template with almost no content of its own. None of those is fixed by a technical change.
4. It is blocked in robots.txt
Open your-site.com/robots.txt in a browser and read it. Google's robots.txt documentation is clear that the file controls crawling, not indexing: a blocked page can still appear in results if other sites link to it, but with no description, because Google cannot read it.
And if you blocked a whole section by mistake, Google knows those URLs exist and cannot understand what they say. That is the worst of both states.
5. It carries a noindex tag
A meta robots noindex tag, or an X-Robots-Tag HTTP header with the same value, tells Google not to index the page. It is the clearest way to keep something out of Search, and the easiest one to leave behind by accident.
curl -sI https://your-site.com/the-page | grep -i x-robots-tagcurl -s https://your-site.com/the-page | grep -i "robots"→ nothing back from both means no noindex, header or tag
This is the single most common cause on sites that were recently migrated or recently taken out of a staging environment. The tag protected the draft and nobody removed it.
From the browser · 1 min
Whether a tag telling Google not to index it got left behind
It is the most common cause on recently migrated sites, or sites just taken out of a staging environment. The tag protected the draft and nobody removed it.
- 1.
Open the page that is not appearing in Google.
- 2.
Right click → «View page source».
- 3.
Ctrl+F and search for
noindex.
What comes out tells you which of the three cases you are in.
Nothing comes up.
Not this one, then. What is left is ruling out the X-Robots-Tag header, which does not show in the page source.
It appears inside
<meta name="robots".There it is. That page is asking Google not to keep it, and Google complies. Removing it is a one-line change.
It appears, but inside a comment or a script.
Probably does not count. Check whether it is inside a real meta tag or only mentioned in the code.
What this check does NOT prove: The same value can travel in the X-Robots-Tag HTTP header, which the browser does not show in «view source». That needs the Network tab of the developer tools, or a terminal.
6. Google receives an empty page
If your site is built with React, Vue, or an AI builder, the first HTML the crawler receives may contain a title and an empty container. Google renders JavaScript in a second pass with limited resources, and recommends not depending on that pass for important content.
Another symptom of these apps: a URL that does not exist answers 200 with the home page, and Google treats it as a soft 404 or as a duplicate. The fix is real HTML per route, which is the case study I documented.
7. The canonical points somewhere else
A canonical tag tells Google which version of a page you consider the real one. Google treats it as a strong signal, not an order: if other signals contradict it, it may pick a different one.
Templates and SEO panels are the usual culprits. A canonical copied across a template points every page at the home page, and Google quietly stops indexing the rest.
If it is indexed and still does not show up for your search
Then it is not an indexing problem and none of the seven fixes above will move it. The page is competing and losing, which is a different job.
Check two things before anything else. Whether your page answers the same intent as the ones currently ranking, and whether you have two pages of your own competing for the same query.
How to verify what Google actually receives
Every check above can be done from a browser. One of them cannot, and it is the one that matters most on a JavaScript site: what the server hands the crawler before anything runs.
curl -s -A "Googlebot" https://your-site.com/ | wc -wcurl -s -o /dev/null -w "%{http_code}" https://your-site.com/does-not-existcurl -sI https://your-site.com/sitemap.xml→ word count, a real 404, and a sitemap that answers 200
On Windows, PowerShell's curl is an alias for Invoke-WebRequest and grep does not exist, so use the Git Bash versions or the equivalents I list in the tools I use.
Watch it explained, by the people who built it
Three short videos from Google's own channels. They are the same source the links above point to, in video form:
Help! Google Search isn't indexing my pages · Google Search Central, 5 minutes. Covers «discovered» and «crawled, currently not indexed», which are causes 2 and 3 above.
How to read the Indexing Report · Google Search Central, 32 minutes, July 2026. Martin Splitt on when an unindexed page is a problem and when it is not.
Sources
Consulted on September 27, 2026. Each date is the source's last published update.
- Help! Google Search isn't indexing my pages · Google Search Central · vídeo
- How to read the Indexing Report · Google Search Central · vídeo
- How Google Search works · Google Search Central
- The site: search operator · Google Search Central
- URL Inspection tool · Search Console Help
- Page Indexing report · Search Console Help
- Introduction to robots.txt · Google Search Central
- Block indexing with noindex · Google Search Central
- JavaScript SEO basics · Google Search Central
- Consolidate duplicate URLs · Google Search Central