Skip to content

WordPress site not showing up on Google: what to check, in order

Search Google for site:yourdomain.com first. If nothing comes back, the site is either new or keeping Google out, through the "Discourage search engines" box, another noindex, a robots.txt rule, or a home page that does not answer with a 200. Check them in that order.

By
WP Ministry
Published
Tested on
WordPress 7.1.3, PHP 8.3.35

In short

  • Being listed and ranking are different things. If a search for site:yourdomain.com returns your pages, the site is listed.
  • Google's help says a new page typically takes from a day or two to a few weeks to be listed. Asking twice does not shorten it.
  • `wp option get blog_public` printing 0 means the "Discourage search engines from indexing this site" box is ticked.
  • A noindex can also come from an SEO plugin, a coming soon plugin or a header the server sends. One command shows the tag and the header.
  • A robots.txt that says "Disallow: /", a login page, an error or a redirect that never ends each keep Google from reading the site.
  • When every check passes, what is listed is Google's own choice. Nobody outside Google can make it list a page.

To find out why a WordPress site is not showing up on Google, first confirm that it is missing: search Google for site: followed by your domain. If your pages come back, the site is listed, and what you are seeing is a question of ranking. If nothing comes back, either the site is new and Google has not reached it yet, or something is keeping Google out. On WordPress that is one of a short list: the "Discourage search engines from indexing this site" box, a noindex from a plugin or from the server, a robots.txt rule, or a site that answers with an error, a login page or a redirect that never ends.

This page is about being listed at all. Where a listed page ranks for a phrase is a different subject, and nothing here promises anything about it.

For a quick first look, give your address to the site health check. It asks for one page and says whether it answers and whether the page or its headers carry a noindex. The checks below go further, in the order that rules each cause out fastest.

What you see and where to go

What you seeLikely causeWhere to go
A search for site:yourdomain.com returns your pagesThe site is listed. You are looking at ranking, not at a missing site.Check 1
Nothing is listed, and the site went live days or a few weeks agoGoogle has not reached it yetCheck 2
wp option get blog_public prints 0The "Discourage search engines" box is tickedWhat the box does and how to clear it
The box is clear, and a page still carries noindex in a tag or a headerA plugin's setting, a coming soon mode, or a header from the serverCheck 4
/robots.txt says Disallow: /A robots.txt file or a plugin is blocking crawlersWhere robots.txt is and how to change it
/wp-sitemap.xml answers 404WordPress is not serving its own sitemapThe sitemap at wp-sitemap.xml
The home page answers with an error, a login page or endless redirectsThe site does not answer Google properlyCheck 7
Search Console shows a manual action or a security issue, or Google lists pages you never wroteThe site was flagged or hackedCheck 8
Search Console says "Crawled - currently not indexed" or "Discovered - currently not indexed"Google's own choice of what to listCheck 9

1. Is the site really missing?

Google's help page on missing pages starts here, because a page that sits far down the results is easily taken for one that is not there at all. Listed and ranking are two different things. A site that is listed can still be on the tenth page for the phrase you typed.

  1. Step 1: Search Google for the site's own address

    Type the line below into Google Search, with your own domain and nothing else. Leave out https:// and www: Google notes that site:https://www.example.com and site:https://example.com/ do not return the same results, and the bare domain covers both. Google's help also says to turn off SafeSearch first, which can filter results. If pages of yours come back, the site is listed, and this page is not about your problem. To check one page, put its full address after site:. The operator does not necessarily return every listed address, so use it to answer "is anything listed", not to count.

    text
    site:example.com
  2. Step 2: Inspect the address in Search Console

    If the site is verified in Google Search Console, type the full address of the home page into the inspection bar at the top. The tool answers with one of two headings. "URL is on Google" means the address is eligible to appear in results, which Google says is not a guarantee that it does. "URL is not on Google" means it cannot appear, and the reason is in the "Page indexing" section below the heading: "Crawl allowed?" is about robots.txt, "Page fetch" is about whether the server answered, and "Indexing allowed?" is about noindex. If the tool says "URL is unknown to Google", Google has not seen the address yet.

That first answer comes from Google's index, not from the site as it is now. "Test live URL" asks for the page again and shows what Google receives today. Google notes that the live test does not take manual actions, removals or security issues into account, so a pass there does not close checks 8 and 9.

2. Is the site new?

If the site went live recently, waiting may be all that is left to do. Google's help page on missing pages says that crawling and then indexing a new page typically takes from a day or two to a few weeks in total, and that many things affect it. It also says not to assume a problem until at least a week has passed since you submitted a sitemap or asked for indexing.

What you can do in that time is short:

  • Ask once. In Search Console's URL Inspection tool, select "Request indexing" for the home page. Google's documentation says that asking again for the same address does not get it crawled any faster, and that a request does not guarantee the page will be included.
  • Give Google the sitemap. Check 6 shows whether the site has one.
  • Get a link from a site Google already knows. Google says it discovers new sites from existing ones.

Then run checks 3 to 7 anyway. A new site with the "Discourage search engines" box still ticked looks exactly like a new site that is waiting, and only one of them will ever be listed.

3. Is WordPress telling Google to stay away?

WordPress has one setting that asks every search engine to leave the whole site out. In the dashboard, go to Settings, then Reading, and find "Search engine visibility". The box beside it is labeled "Discourage search engines from indexing this site", with the note "It is up to search engines to honor this request." While the box is ticked, the At a Glance box on the dashboard's first screen also says "Search engines discouraged".

With SSH access and WP-CLI, one command reads the setting. Run it from the site's main folder.

bash
wp option get blog_public

0 means the box is ticked. 1 means it is not.

To check from outside, open the home page, view its source in your browser, and search for noindex. With the box ticked, WordPress writes this line into the head of every page:

text
<meta name='robots' content='noindex, nofollow' />

The box writes that tag. It does not add a blocking rule to robots.txt, so a look at robots.txt alone will not find it. What "Discourage search engines from indexing this site" does covers the setting in full, including what to do after you clear it.

4. Is something else adding a noindex?

A noindex reaches Google in two forms, and Google's documentation says they have the same effect: a robots meta tag in the page, or an X-Robots-Tag header sent with it. The box in check 3 is one source of the tag. Others leave blog_public at 1:

  • An SEO plugin's setting. Yoast SEO's documentation, for one, describes two: a choice on each post or page, and a switch that takes a whole content type, such as every page or every product, out of search results.
  • A coming soon or maintenance plugin, if it marks the site noindex while its mode is on.
  • A header set in .htaccess, in the server's configuration, at a CDN, or by a plugin.

This command asks for a page and prints only the X-Robots-Tag header and the robots tag, if they are there. Run it in a terminal on a Mac or a Linux computer, or on the server, with your own address in place of example.com.

bash
curl -s -D - https://example.com/ | grep -i -o -E 'x-robots-tag:.*|<meta name=.(robots|googlebot)[^>]*>'

A WordPress site with nothing in the way prints one line:

text
<meta name='robots' content='max-image-preview:large' />

The word to look for is noindex, in either line. In the header, Google treats none the same way. This is a site whose tag is clean and whose server is sending the header:

text
X-Robots-Tag: noindex, nofollow
<meta name='robots' content='max-image-preview:large' />

Run it for the home page, and again for one post or page that is missing. A plugin's setting for one kind of content shows only on that kind, so the home page can be clean while every page under it is not.

Without a terminal, search the page source for noindex as in check 3. A header is not in the page source: the site health check reads both. In Search Console, "Indexing allowed?" in the URL Inspection tool reports either form, and Google's help for the Page indexing report lists such pages under "URL marked 'noindex'".

Once the tag or header is gone, Google has to crawl the page again before anything changes. You can ask for that with "Request indexing".

5. Is robots.txt blocking the site?

robots.txt tells crawlers which addresses they may request. Google's documentation says the file must be at the root of the host it applies to, so there is one address to read:

bash
curl -s https://example.com/robots.txt

Opening https://example.com/robots.txt in a browser shows the same thing. With no file of that name in the site's main folder, WordPress answers the address itself, and this is what it says:

text
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://example.com/wp-sitemap.xml

That keeps crawlers out of the dashboard and nothing else. If the command prints nothing, and a browser shows the home page at that address, the site is set to Plain permalinks: there WordPress does not answer at /robots.txt, and redirects the request to the home page. Nothing is blocked in that case.

A rule that blocks the site looks like this:

text
User-agent: *
Disallow: /

Disallow: / under User-agent: * closes every address to every crawler. The same line under User-agent: Googlebot closes it to Google alone. WordPress does not write that rule, with the box in check 3 ticked or clear. It comes from a real file named robots.txt in the site's main folder, which replaces WordPress's own answer, or from a plugin that changes the answer.

A blocked page cannot be read, so Google never sees what is on it. Google's documentation adds that the address of a blocked page can still appear in results, with no description under it. In Search Console, "Crawl allowed?" says "No", and Google's help for the Page indexing report lists such pages under "URL blocked by robots.txt". Where robots.txt is in WordPress and how to change it has the steps.

6. Can Google find the pages?

Google finds a new page in two ways: through a link from a page it already knows, or through a sitemap. A new site that nothing links to yet has only the second. WordPress makes a sitemap by itself, at /wp-sitemap.xml, and names it in the robots.txt answer shown above. This prints the status code that address answers with:

bash
curl -s -o /dev/null -w '%{http_code}\n' https://example.com/wp-sitemap.xml

200 means the sitemap is there. 404 means WordPress is not serving one. One cause is already on this page: while the box in check 3 is ticked, WordPress switches its sitemap off. 301 is what a site set to Plain permalinks answers: WordPress redirects the address and serves the home page, and the sitemap is at /?sitemap=index.

A missing sitemap does not by itself keep a site out of Google, because Google also follows links. The WordPress sitemap at wp-sitemap.xml covers the other causes of a 404, which sitemap a site with an SEO plugin has, and how to give it to Google.

7. Is the site answering properly?

Google says it only indexes pages that are served with a 200 status code, and that it does not crawl a page that needs a login. So the next question is what the site answers when something that is not your browser asks for it.

Ask for the home page and follow where it leads

bash
curl -s -o /dev/null -L -w '%{http_code} %{url_effective} after %{num_redirects} redirects\n' https://example.com/

The command follows every redirect and prints the last status code, the address it ended at, and how many redirects it took to get there. A site that answers properly prints a line like this:

text
200 https://example.com/ after 0 redirects
What it printsWhat it meansWhere to go
200, your own address, no redirects or oneThe home page answers. Go on to the next check.
200, and the address at the end is wp-login.phpA plugin sends every visitor who is not logged in to the login page, and WordPress marks its login page noindexSwitch that plugin's private or coming soon mode off
401The server asks for a username and password before WordPress runs. Password protection left on from before launch does this.Remove the password protection in the hosting panel or in .htaccess
403The server refuses the requestHow to fix the 403 Forbidden error
500 or another code that starts with 5The server or WordPress failsHow to fix the 500 internal server error, or the 503 error
301 or 302 after 50 redirectsA redirect loop: curl gives up after 50How to fix ERR_TOO_MANY_REDIRECTS
200 at an address you did not expect: http://, www, or another domainWordPress's saved address is not the one you thinkThe next check

Without a terminal, the redirect checker shows the same thing: every hop, its status code and where it ends.

One caution. This shows what the site answers to you, from where you are. What it answers Google's crawler is something only Google can show: in Search Console's URL Inspection tool, select "Test live URL" and read "Page fetch".

Compare the address WordPress has saved

WordPress keeps two addresses, shown under Settings, then General, as "WordPress Address (URL)" and "Site Address (URL)". These commands print them, the site address first:

bash
wp option get home
wp option get siteurl

The site address is the one WordPress tells Google to list: it is written into each page's canonical tag and into every entry of the sitemap. WordPress also redirects the www form of the domain to the form without, or the reverse, to match it. Ask for www.example.com on a site saved as example.com, and one redirect later you are at example.com. That is as it should be. It goes wrong when the saved address is one that does not work: https:// on a host with no certificate, a www name that has no DNS record, or the address of a staging copy. Google is then pointed at an address that fails. How to change your WordPress URL has the ways to correct it, including when the dashboard is out of reach.

The saved form also decides where to look in Search Console. A URL-prefix property covers only addresses that begin with exactly that prefix, http or https included. A site listed under https://www.example.com/ shows as empty in a property made for https://example.com/.

8. Was the site hacked or flagged?

Google's help page on missing pages names two Search Console reports to open.

  • Manual actions. Google issues one when a person there has decided that pages on the site break its spam policies. Its help says the affected pages or the whole site are ranked lower or left out of results, with nothing shown to visitors. A site with none shows a green check mark.
  • Security issues. This lists signs that the site was hacked, or that it could harm a visitor. Affected pages can appear with a warning in search results, or behind a full-page warning in the browser.

If you bought or inherited the site, look at both even if nothing seems wrong: Google's help says a site can arrive with actions already filed against it. Open the Removals tool as well. A removal request that someone made earlier hides an address from results for about six months, and the tool lists every request and lets you cancel it.

The site: search from check 1 is also evidence. Results in a language you do not publish in, or for products you do not sell, are a sign of pages someone else added.

9. None of the above: what Google chooses to list

If the site is listed for its own address, carries no noindex, is open in robots.txt, answers with a 200 and has nothing in either report, then Google can reach the pages. What is left is Google's decision, and Google is plain that it makes no promise: its documentation says it does not guarantee to crawl, index or serve a page even when the page meets every requirement.

Two statuses in Search Console's Page indexing report describe pages in that position.

"Crawled - currently not indexed". Google's help says only that the page was crawled and not indexed, that it may or may not be indexed later, and that there is no need to resubmit the address. It gives no reason and no remedy.

"Discovered - currently not indexed". Google knows the address and has not crawled it. Its help explains the usual case as a matter of load on the site, and says nothing there about quality: "Google wanted to crawl the URL but this was expected to overload the site", so the crawl was put off. That is why the report shows no last crawl date for these pages.

What a site owner can do:

  • Make the pages easy to reach. Google's help asks that every page can be reached by following links from the home page, and that the site has a sitemap.
  • Keep the server answering quickly and without errors. Google says its crawlers slow down when a site answers with server errors, and the second status is about load.
  • Look at the pages themselves. Among the reasons Google gives for a page not being indexed is that the quality of its content is low. Its help also says it does not index duplicate copies of a page, so pages that say nearly the same thing are better merged than resubmitted.

What nobody can do is make Google list a page. Requesting indexing again does not move a page up the queue, and Google says it accepts no payment to crawl a site more often.

When to get help

  • Ask the host when the home page answers 401, 403 or a 5xx code and you did not set that up, or when a header you cannot find is being added in front of the site.
  • Hand it over when a check above points at a cause and you would rather not change the setting, the file or the plugin yourself. A one-time fix from WP Ministry covers one issue on one site and starts with a free diagnosis, which gives you a written cause and a fixed quote.

What can be fixed is a site that keeps Google out. Whether Google then lists a page, and where, stays Google's decision.

Common questions

How long does a new WordPress site take to show up on Google?

Google gives a range and no promise. Its help says crawling and indexing a new page typically takes from a day or two to a few weeks in total, and not to assume a problem until at least a week after you submitted a sitemap or asked for indexing. Use the wait to run checks 3 to 7, so that time is the only thing in the way.

My site shows up for its own name but not for what I sell. Is it listed?

Yes. A site that appears for any search is in Google's index. Not appearing for a particular phrase is about ranking, which Google says is decided by hundreds of factors. Nothing on this page changes it.

I cleared the box. Why is the site still missing?

Google has to crawl the pages again before it sees that the noindex is gone. Google's documentation says crawling can take from a few days to a few weeks. Check with the command in check 4 that the tag is gone from the page a visitor gets, and clear any cache in front of the site if it is not. Then select "Request indexing" for the home page, once.

Do I have to submit my site to Google?

No. Google says the great majority of pages in its results were never submitted and were found by its crawlers. A sitemap and an indexing request tell Google the pages exist. They do not put them in the results.

Do I need an SEO plugin for Google to list my site?

No. WordPress by itself gives a search engine a sitemap, a robots tag and a robots.txt answer, as checks 3 to 6 show. WordPress SEO without a plugin lists what it does and does not do.

Does a site: search show every page Google has?

No. Google says the operator does not necessarily return every address that is indexed, and that a search with no other word in it does not rank the results. It answers whether anything is listed. For one address, the URL Inspection tool is the fuller answer.

More on this subject

Quick Fix, done for you

Quick Fix is $49. One issue, one site, up to about an hour. No fix, no fee. 30-day warranty. It starts with a free diagnosis.