Why is my website not showing up on Google? 7 checks to fix it

By SEOgrinder · Published · 12 min read

Short answer: A website not showing up on Google usually has a cause you can check yourself. First confirm that the page is really missing from Google's index. Then work through seven checks in this order: status code, noindex, robots.txt, soft 404, JavaScript, sitemap and links, and time. Nobody can say when a page will appear. Google says crawling “can take anywhere from a few days to a few weeks”, and being indexed is not the same as ranking well.

Is your website not showing up on Google? Confirm it first

“Not showing up” can mean three different things, and only the first is the subject of this article:

  • The page is not in Google's index. Google has not stored it, so it cannot appear in any result. The seven checks below look for the reason.
  • The page is in the index, but not where you look. Google's help for the Page indexing report says that search results are customized for each user's search history, location and other variables, so an indexed page does not show up in every search or in the same position. That is a question of ranking, not of indexing.
  • The page is brand new. Then time is the most likely cause (check 7). Our article on how to rank on Google fast covers a new page.

Find out which case you have:

  • Search for the exact address. Type site:https://your-site.example/your-page into Google. The Page indexing report help lists this form, site: plus the exact URL, as a first test for small sites, and the URL Inspection help calls searching for the page URL the definitive test of whether it appears.
  • Ask Search Console. The URL Inspection tool shows what Google has stored for one address. “URL is on Google” means the page is “eligible to appear in Search results, but is not guaranteed to be there”. “URL is not on Google” means it can't appear. “URL is unknown to Google” means Google has not seen the address before. The stored answer is not live; the live test checks the current page.

If Search Console already lists the page under “Why pages aren’t indexed”, the status name points to a check:

Status in Search ConsoleLook at
Server error (5xx), Not found (404), Blocked due to unauthorized request (401), Blocked due to access forbidden (403), Page with redirectCheck 1
URL marked ‘noindex’Check 2
URL blocked by robots.txt, Indexed, though blocked by robots.txtCheck 3
Soft 404Check 4
URL is unknown to GoogleChecks 6 and 7
Discovered – currently not indexed, Crawled – currently not indexedCheck 7
Duplicate without user-selected canonicalNone of the seven: Google chose another address as the main version and calls this “not an error”

The 7 checks, in the order to run them

The first checks block everything after them. Replace your-site.example with your own address.

Check 1: Does the page answer with status 200?

Google's page on HTTP status codes says it does not index URLs that return a 4xx status, and that indexed URLs which start returning one are removed from the index. Persistent server errors (5xx) slow crawling down, and such URLs are eventually dropped. A redirect hands the decision to its target: Google ignores the content of the redirecting URL, and the Page indexing report says a “Page with redirect” is not indexed itself. A 200 is a requirement, not a promise: a 2xx status “doesn't guarantee indexing”.

Two blockers are easy to miss. A login keeps Googlebot out, because it sends no credentials. And a firewall or bot protection can answer Googlebot with an error while your own browser sees the page; Google's help names misconfigured firewalls and DoS protection as a way of blocking Googlebot by accident.

curl -s -L -o /dev/null -w "%{http_code} %{url_effective}\n" https://your-site.example/your-page

You want 200 and the address you expect. This shows what your computer gets. What Google gets, the live test in the URL Inspection tool shows.

In SEOgrinder: the “Indexing” card in the “Page on Google” tab lists the HTTP status. A bad status also becomes a task, for example “Server returned status 503”.

Check 2: Is the page set to noindex?

A noindex rule tells Google to keep the page out. It sits in a robots meta tag in the page head or in an X-Robots-Tag HTTP header. Once Googlebot has crawled the page and read the rule, “Google will drop that page entirely from Google Search results”, as the noindex documentation puts it. A page can carry it by accident:

  • A CMS setting. WordPress has a box called “Discourage search engines from indexing this site”. According to the WordPress documentation, since version 5.3 it makes WordPress write a robots meta tag with noindex,nofollow into the page head.
  • A header. A server or CDN can send X-Robots-Tag: noindex. It never appears in the page source, so it is easy to overlook.
  • A removal request. If someone used the Removals tool for this address, the request lasts only about six months, and the “Temporary Removals” tab lists it (Search Console help).
curl -s -D - -o /dev/null https://your-site.example/your-page | grep -i x-robots-tag
curl -s https://your-site.example/your-page | grep -i -E 'name="(robots|googlebot)"'

No output means no such header or tag was found. If a line appears, noindex (or none) keeps the page out. If robots.txt blocks the page (check 3), “the crawler will never see the noindex rule”, so the block has to go first. A tag that JavaScript adds later does not show up in curl; the live test shows what Google received.

In SEOgrinder: the first line of the “Indexing” card changes to “Page is excluded from indexing” when the robots meta tag says noindex, and the task list shows “Page is excluded from Google”. A noindex in the HTTP header appears as the task “HTTP header excludes the page from Google”.

Check 3: Does robots.txt block the page?

The file https://your-site.example/robots.txt tells crawlers which paths to leave alone. Google's introduction to robots.txt describes it primarily as a way to manage crawler traffic. A rule that matches your page keeps Googlebot from fetching it: a disallowed URL is skipped without any request (JavaScript SEO basics). The URL can still appear in results if other pages link to it, but without a description, because Google has not read the page.

The classic accident is two lines:

User-agent: *
Disallow: /

They block the whole site for every crawler that obeys the file. A narrower rule such as Disallow: /shop/ blocks that folder and everything below it. Compare each Disallow line with the path of your page.

In SEOgrinder: the “Indexing” card says “This URL is blocked from crawling” and shows the rule that matched. The task is “robots.txt blocks this URL”.

Check 4: Is the page a soft 404?

A soft 404 is a page that says “not found” or shows next to nothing, yet answers with status 200. Google's status code page says that when a 2xx response contains an error message or an empty page, Search Console shows a soft 404 error. For pages that are truly not found, Google recommends a real 404. For a page that should exist, the fix is the opposite: give it real content.

In the Page indexing report, look for the reason “Soft 404”. For one address, run the live test and open “View tested page”, which shows a screenshot of the page as Google renders it. Then ask your server about an address that cannot exist:

curl -s -L -o /dev/null -w "%{http_code} %{url_effective}\n" https://your-site.example/page-that-cannot-exist

You want 404. If you get 200, the server answers every address with success, which is the pattern behind soft 404s. Our article on soft 404 errors has the fixes for nginx, Node and single-page apps.

In SEOgrinder: the “Indexing” card has the line “Unknown addresses return 404 correctly”, or “Unknown addresses return 200 instead of 404” plus a task. SEOgrinder makes up an address and asks your server, so it tests how your server treats addresses that do not exist. Whether Google has filed your page as a soft 404, only Search Console shows.

Check 5: Is the content only built in the browser?

Google runs JavaScript. Its JavaScript SEO basics explain that pages with status 200 wait in a queue for rendering, which may take “a few seconds, but it can take longer”. So JavaScript on its own does not keep a page out of Google. It becomes a cause in four cases that the same page describes:

  • noindex in the original HTML. When Google sees noindex it may skip rendering, so JavaScript that removes the tag “may not work as expected”. If you want the page indexed, leave noindex out of the original code.
  • Blocked scripts. “Google Search won't render JavaScript from blocked files or on blocked pages.”
  • Links that are not links. Google can only discover links that are <a> elements with an href attribute. Addresses that differ only after a # are not reliable.
  • Error pages in single-page apps. An app that answers 200 for every address produces soft 404s (check 4).

To test, choose “View page source” (not the Elements panel of the developer tools) and look for your headline and main text. If they are missing, JavaScript builds them. Then use the live test and “View tested page” to see how Google rendered it. Google adds that server-side or pre-rendering is still a great idea, because “not all bots can run JavaScript”. Our article on AI crawlers and JavaScript covers those other bots.

In SEOgrinder: the task “The page is only assembled in the browser” appears when the HTML your server delivers holds almost no text, headings or internal links. It points out the risk for crawlers that run no JavaScript. Whether Google renders your page correctly, the live test shows.

Google can only index what it finds. According to the Page indexing report help, it learns about a page through a sitemap, a crawl request, or a link to it somewhere. Googlebot crawls URLs it found on pages it has crawled before, so a page that nothing links to may stay unknown, especially on a site that is new and has few external links (sitemaps overview).

  • Look at your sitemap. Open https://your-site.example/sitemap.xml, or the address named in robots.txt, and look for the page. Google asks for full, absolute addresses, and only those you want to see in search results (build a sitemap). Pages that answer 404, redirect or carry noindex do not belong in it.
  • Submit it. The Sitemaps report in Search Console shows when Googlebot read the file and any errors. robots.txt must not block the file.
  • Link to the page from at least one page that is already indexed, such as the home page or a related article.
  • Request indexing, sparingly. For a new website, Google calls requesting indexing of the home page the best first step. The URL Inspection tool is for “just a few URLs”, there is a quota, and asking again for the same URL “won't get it crawled any faster” (recrawl help).

A sitemap helps Google discover addresses, but it “doesn't guarantee” that everything in it is crawled and indexed. Google adds that a site of about 500 pages or fewer that is linked comprehensively might not need one.

In SEOgrinder: the “Indexing” card says “This URL is in the sitemap” or “This URL is not in the sitemap”. The task list can show “No sitemap found”, “Sitemap lists a page that carries noindex” and a task that counts sitemap addresses not answering 200. With the website crawl, a task such as “One page has no internal link” shows pages that nothing links to.

Check 7: Has Google had enough time?

Google gives no date. Its recrawl help says: “Crawling can take anywhere from a few days to a few weeks.” The Page indexing report help adds that “it can take a week or so” for Google to start crawling and indexing a new page or site, that indexing “is never instant, even when you submit a crawl request directly”, and that Google doesn't guarantee that all pages make it into its index.

Search Console shows two waiting statuses. “Discovered – currently not indexed” means Google found the page but has not crawled it yet, typically because it expected the crawl to overload the site. “Crawled – currently not indexed” means Google fetched the page and did not add it. Google calls this “a common message for many sites” that “doesn't necessarily indicate an issue that needs attention”, and says not to expect every URL on a site to be indexed.

If checks 1 to 6 are clean and the page is more than a few weeks old, Google names no further reason for “Crawled – currently not indexed”. Our view, not Google's: look at whether the page says something your other pages do not, and whether important pages link to it.

In SEOgrinder: it cannot read Google's clock. In a local installation connected to Search Console, it can ask URL Inspection about the scanned page and show Google's stored answer in the report, for example “Google does not know this address yet”. The version at seogrinder.com does not connect to your Search Console account.

What a scan can and cannot tell you

SEOgrinder is our tool, and we build it. A scan from outside reads what your page says and how your server answers: status, noindex, robots.txt, the soft 404 behaviour of the server, the delivered HTML and the sitemap. It cannot see Google's index, and it cannot tell you why Google crawled a page and left it out. Search Console and the search for the exact address answer the index question. A green report does not promise that the page will appear or where it will rank, and nobody can.

Common mistakes

  • Judging by one search. Results differ by person and place. Search for the exact address, or use URL Inspection.
  • Blocking in robots.txt and adding noindex. Google then never sees the noindex rule. Use one tool per goal.
  • Removing noindex in one place only. It can sit in a plugin setting, a meta tag and an HTTP header at once.
  • Requesting indexing again and again. It does not speed anything up.
  • Stopping after the first finding. Several causes can apply to one page, so run all seven checks.

FAQ

Why is my new website not showing up on Google?

One possible reason is that Google has not crawled it yet, which can take a week or so. Submit a sitemap, request indexing of the home page, and run the seven checks.

Why does Search Console say “URL is on Google” when I cannot find the page?

“URL is on Google” means the page is eligible to appear, not that it appears for every search. Search for the exact address. If it shows up, indexing is fine and the question is about ranking.

My page was on Google and then disappeared. Which check applies?

Start with checks 1 to 3. Google removes indexed URLs that return a 4xx status, and it says a drop in indexed pages without a matching rise in errors can mean you are blocking existing pages via robots.txt, noindex or a login. Also look for a removal request.

Your next step

Enter the address of the missing page into the free scan of SEOgrinder. In the “Page on Google” tab, read the “Indexing” card and fix every red line; the task list shows what to do first. Press “Check again” after your change (reports can be cached for up to 24 hours), then submit the sitemap and give Google time. For a brand-new page, see our article on how to rank on Google fast. For everything beyond indexing, use our SEO audit checklist.

More from the blog