"My website is not showing up on Google" is the single most common thing we get asked, and almost every answer online is the same list of generic advice: publish more content, build backlinks, be patient. That advice is not wrong, exactly. It is just useless until you know which of six quite different problems you actually have, because the fix for each one is different and five of them are not fixed by patience.
This is the order we work through it, cheapest and most common first. We will use our own site as the worked example, because it had two of these at once and the Search Console numbers are not flattering.
The short version
Check in this order: server errors in Search Console's crawl stats, then noindex and robots.txt, then whether each canonical tag points at its own page, then whether you get impressions for any query someone with a budget would type, then whether your titles match the queries you already rank for. Site age is the last explanation to reach for, not the first. The first three can keep a page out of the index entirely; the next two keep an indexed page invisible; and they need completely different fixes.
First, separate the two questions
"Not showing up" collapses two completely different situations, and almost nothing useful can be said until you know which one you are in:
- Not indexed. The page is not in Google's index at all. It cannot rank for anything, ever, until this changes.
- Indexed but invisible. The page is in the index and getting zero or near-zero impressions. It can rank; it just is not competitive for anything anyone searches.
These feel identical from the outside and have nothing in common underneath. The way to tell them apart is the URL Inspection tool in Google Search Console — paste the exact URL and it tells you plainly whether it is indexed, and if not, usually why. Do not use a site: search for this. It is approximate, it omits pages that are definitely indexed, and people conclude their site has been removed from Google when it has not.
If you have no Search Console property yet, stop and set one up. Everything below is guesswork without it, and it is free.
Cause 1: your server is returning errors
This is first because it is invisible from a browser, catastrophic in effect, and nobody checks it.
Google treats a 404 and a 500 completely differently. A 404 says "this page does not exist" and Google drops that URL. A 500 says "this server is in trouble" and Google reduces how fast it crawls your whole site, which is the right thing for a crawler to do and the worst possible thing for you.
Our own site had a 500 error on every clean URL that arrived with a trailing slash. /about worked. /about/ returned a 500. All 138 URLs had a broken twin, caused by a rewrite rule that matched its own output and looped until Apache gave up. No page on the site linked to a trailing-slash URL, so clicking around never revealed it. We have written up the full diagnosis and the fix separately, because the mechanics are worth understanding if you run clean URLs.
The test: in Search Console, open Settings → Crawl stats and look at the response breakdown. Any meaningful share of 5xx is your problem and nothing else matters until it is gone. Then check a few URLs with a trailing slash by hand.
Cause 2: you are telling Google not to index it
Astonishingly common, and almost always an accident left over from a staging site or a plugin setting someone ticked once.
Three places to look:
robots.txtatyoursite.com/robots.txt. A strayDisallow: /blocks the entire site. Note that this blocks crawling, not indexing — a blocked page can still appear as a bare URL with no description, which confuses people further.- The robots meta tag in the page source:
<meta name="robots" content="noindex">. This is the one that genuinely keeps a page out. In WordPress it is the "Discourage search engines" checkbox, which gets left on after launch more often than anyone admits. - An
X-Robots-TagHTTP header, which does the same job invisibly — it is not in the page source, so you will not find it by viewing source.curl -I yoursite.comshows it.
One nasty interaction worth knowing: if a page is blocked in robots.txt, Google cannot fetch it, so it cannot see a noindex tag on it either. Pages sometimes stay indexed precisely because they were blocked. If you want a page out of the index, let Google crawl it and serve noindex.
Cause 3: your canonical tag points somewhere else
A canonical tag tells Google "the real version of this page is over there". If every page on your site carries the same canonical — pointing at the home page, say, which is a classic bad theme default — you have instructed Google to index one page and ignore the rest. It will generally comply.
The test: view source on three different pages and check that each <link rel="canonical"> points at itself. If you have a staging site, check that none of them point at the staging domain. We have seen a site where every canonical pointed at a .hostingersite.com preview URL for months.
One thing to note if any of your content is rendered by JavaScript: Google updated its guidance in December 2025 to say that where a canonical in the raw HTML differs from one injected by JavaScript, it may use either. Serve the canonical, the robots tag and your structured data in the initial HTML response, not from a script.
Cause 4: indexed, but you are aiming at terms you cannot win
This is the one that actually applied to us, and it is the most expensive to get wrong because everything looks correct while it happens.
Across three months our site recorded 95 queries, about 450 impressions and one click. Pages were indexed. Nothing was broken by then. And there was not a single commercial query in the data — nothing for "web development agency", nothing for "shopify developer", nothing for the services that pay the bills.
The reason was straightforward once we counted it. We audited every money page for the phrases people actually type, and found zero occurrences of "web development company", zero of "web design company", zero of "seo agency". The titles were aimed at the most competitive head terms in the industry — "web development services", "seo services" — against thousands of established agencies. A new site does not place in that race. It does not even get an impression.
The test: open the Performance report, set it to three months, and sort queries by impressions. Then ask of each one: is this a phrase someone with my problem and a budget would type? If the list is all informational, you are publishing a magazine, not a business website.
The fix is to aim lower on purpose. Specific beats broad, and a qualifier is the cheapest specificity there is. "Web development company in Dubai" has a fraction of the competition of "web development company" and converts far better, because somebody searching it has already told you where they are. Industry qualifiers work the same way: we rank for medical-billing and accountancy phrasing because we have actually built those sites, and that phrasing is a rounding error of competition next to the head term.
Cause 5: your titles do not claim what you rank for
A small, strange one that we would not have believed before seeing it in our own data.
Our largest cluster of impressions was for a set of queries nobody here had ever targeted:
| Query | Impressions |
|---|---|
| write high ranking content | 79 |
| knowledge base seo friendly | 66 |
| seo friendly content | 44 |
| what is seo friendly content | 25 |
Google had worked out what one of our articles was about and was showing it for those phrases — and the article's title did not contain any of them. You get impressions but almost no clicks in that situation, because the result on screen does not look like an answer to the thing the person just typed.
The test: in the Performance report, filter by page rather than query, and look at the top queries for your best page. If the title does not reflect them, change the title to match the demand that already exists. Of everything on this list it is usually the quickest to act on, because the ranking already exists and you are only fixing the label — though a title change can move a ranking in either direction, so change one page at a time and watch it for a fortnight before doing the rest.
Cause 6: it is genuinely just new
Last, not first. A brand-new domain with no links takes time, and no amount of technical work shortcuts it. But "new" is only the right answer once the five above are ruled out, and in our experience it is the answer people reach for immediately because it is the one that requires nothing of them.
What legitimately helps while you wait:
- Submit the sitemap in Search Console, and make sure
robots.txtreferences it. - Request indexing for your most important ten URLs by hand through URL Inspection.
- Get a handful of real links. A supplier's partner page, a client site crediting you, your own profiles. A site with no inbound links at all gives Google no reason to crawl it often.
- Keep internal linking tight. Every page should be reachable within three clicks of the home page.
The order, on one line
| # | Check | Where |
|---|---|---|
| 1 | 5xx errors | Search Console → Crawl stats |
| 2 | noindex / robots.txt / X-Robots-Tag | Page source + curl -I |
| 3 | Canonical points at itself | Page source |
| 4 | Any commercial queries at all | Performance report |
| 5 | Titles match the queries you get | Performance, filtered by page |
| 6 | Age and links | Everything else ruled out |
Work it in that order and you will usually have an answer within an hour, which is considerably better than six months of publishing into a void. If you would rather not do it yourself, this is exactly what the audit at the start of our SEO work consists of, and telling us what the site is doing costs nothing.
Related: the trailing-slash 500 bug that caused cause 1 on this site, and the on-page SEO checklist for the work that follows.
Keep reading
All articles
SEO
Google Business Profile in Dubai: Winning the Map Pack
SEO
How to Write SEO-Friendly Content That Actually Ranks
SEO
A Practical Guide to Local SEO for Small Businesses
Would rather someone else handled this? Have a look at our SEO service, or see what our clients say and the work itself.
Have a project in mind?
Tell us about it and we'll get back to you within one business day.