Why Google Isn’t Indexing Your WordPress Site (and How to Fix It)

You published the site, you waited, you searched for it — and Google acts like it doesn’t exist. It’s one of the most stressful problems in running a website, partly because the feedback loop is so slow and partly because most advice you’ll find starts by telling you to submit a sitemap you submitted three weeks ago.
The good news: indexing problems fall into a small number of buckets, and there’s a reliable order to check them in. The bad news: one of those buckets is “Google looked at your page and decided not to keep it,” and no plugin fixes that one. Expectations first, then the ladder.
Before you panic: what’s normal
Two things worth internalising before you start changing settings.
A brand-new site takes weeks, not hours. A domain with no history and no links pointing at it gets crawled slowly. Two to four weeks before the homepage and a handful of pages appear is ordinary; deeper pages can take a couple of months. If your site went live last Tuesday, nothing is broken yet.
Indexing is never guaranteed. Google’s own documentation is explicit that it doesn’t index every page it crawls and there’s no way to force it. Sitemaps, Request Indexing, pinging APIs — all requests. Google decides. A thin or near-duplicate page can sit in “Crawled – currently not indexed” forever, and that’s the system working, not a bug.
The useful mental model: remove every technical reason Google can’t index a page, then give it a reason to want to. Most people only do the first half.
Step 1: Find out what’s actually happening
Don’t guess. Two free checks tell you which bucket you’re in within five minutes.
The site: search
Search Google for site:yourdomain.com. The result count is a rough estimate, not a metric, but it answers the binary question. Zero results means nothing is indexed, which points at a site-wide blocker. Homepage but no posts means discovery or quality. Narrow to one page with site:yourdomain.com/your-post-slug/.
Search Console URL Inspection and the Page indexing report
If you don’t have Google Search Console set up, stop and do that now — you’re troubleshooting blind without it. Then use URL Inspection (the search bar at the top) for the state of one specific URL, and the Page indexing report (formerly Index Coverage) for the site-wide picture, which splits URLs into indexed and not indexed with a “Why pages aren’t indexed” table underneath.
Those status names are the actual diagnosis, so it’s worth knowing what they mean rather than what they sound like:
- Discovered – currently not indexed. Google knows the URL exists (usually from your sitemap) but hasn’t crawled it yet — it didn’t consider the page worth spending a crawl on right now. Common on new sites and on sites publishing a lot, quickly.
- Crawled – currently not indexed. Google fetched the page, read it, and chose not to index it. That’s a value judgement almost every time. Re-requesting rarely changes it; improving the page and its internal links sometimes does.
- Excluded by ‘noindex’ tag. Unambiguous and entirely your side — something on your site is telling Google not to index. See step 2.
- Duplicate without user-selected canonical. Google found several near-identical URLs and no clear canonical, so it picked one and dropped the rest. Very common with tag archives, pagination and parameter URLs.
- Duplicate, Google chose different canonical than user. You declared a canonical and Google overruled it — usually because the pages really are too similar to justify both.
- Alternate page with proper canonical tag. Not a problem; the canonical version is indexed instead.
- Blocked by robots.txt / Soft 404 / Page with redirect. Mechanical causes, all fixable, all covered below.
Step 2: Rule out the hard blockers
These make indexing impossible regardless of content quality. Check in this order — the first accounts for a startling share of cases.
The “Discourage search engines” checkbox
Go to Settings → Reading and look for Search engine visibility: Discourage search engines from indexing this site. If it’s ticked, untick it. It gets switched on during development and forgotten at launch constantly — the single most common cause of a completely unindexed WordPress site. Some hosts tick it on staging installs and it survives the clone to production.
robots.txt disallow
Visit yourdomain.com/robots.txt. Disallow: / under User-agent: * blocks everything. The nuance worth knowing: robots.txt blocks crawling, not indexing — and blocking a page stops Google seeing any noindex tag on it. To remove a page from the index, let it be crawled and use noindex; never both.
A noindex tag from your SEO plugin
Yoast, Rank Math, SEO Framework and friends all set noindex per post, per post type and per taxonomy. Check the post’s SEO panel (advanced settings), then the site-wide defaults for that content type. Then view the page source and search for noindex — the output is the ground truth, not the plugin’s UI.
The wrong canonical
Every page should have a self-referencing canonical unless you deliberately want it consolidated elsewhere. A site-wide canonical pointing every page at the homepage — hardcoded by a theme or migration plugin — will quietly de-index everything. Check the source for <link rel="canonical".
Password, staging or maintenance protection
A “coming soon” plugin, HTTP basic auth, or a staging site left password-protected all return content Googlebot can’t read, as do cookie walls that block the page body until interaction. Use URL Inspection’s Test live URL to see the rendered HTML Google actually receives.
Your server or firewall blocking Googlebot
Overzealous security plugins, WAF rules, Cloudflare bot-fighting settings and country blocks can all return 403s to Googlebot. Search Console’s Crawl stats report (under Settings) shows response codes over time — a wall of 403s or 5xx there is your answer.
Symptom → likely cause
| What you’re seeing | Most likely cause |
|---|---|
Nothing in site:, brand-new site |
Too early — wait; get Search Console and a sitemap in place |
| Nothing at all, site months old | Discourage checkbox, Disallow: /, site-wide noindex, or Googlebot blocked |
| Homepage indexed, posts aren’t | Sitemap gaps, weak internal linking, or thin content |
| “Discovered – currently not indexed” | Crawl priority: few links, slow server, low-value URLs competing |
| “Crawled – currently not indexed” | Quality judgement — the page didn’t earn a slot |
| “Duplicate without user-selected canonical” | Archive/parameter/pagination duplicates, or genuinely overlapping posts |
| Was indexed, now isn’t | Recent plugin/theme change, migration canonical, or a quality re-evaluation |
| Indexed but ranking nowhere | Not an indexing problem at all — that’s competition |
Step 3: Discoverability — can Google find your pages?
With nothing blocking, the question becomes whether Google has a good reason to reach each URL.
No XML sitemap submitted
WordPress generates a basic sitemap at /wp-sitemap.xml; Yoast and Rank Math replace it with /sitemap_index.xml. Open yours to confirm it loads and contains the URLs you care about, then submit it under Sitemaps in Search Console. A sitemap is a hint: it helps discovery, but it won’t override a noindex or force indexing.
Orphan pages with no internal links
Internal links are how crawlers travel your site and how they infer which pages matter. A page nothing links to — reachable only via the sitemap — is discovered late, crawled rarely, and reads as unimportant, which is exactly the recipe for “Discovered – currently not indexed.” Orphans are invisible in the WordPress admin, so it takes a report to see them; our own free JnK Linkweave lists every published post with zero inbound internal links, and our guide to finding orphaned pages in WordPress walks through the fix.
Flat or sprawling architecture
Anything more than three or four clicks from the homepage gets crawled less. Hub and category pages linking down to their children, plus contextual links between related posts, fix most of it. Meanwhile a site generating thousands of near-empty tag archives and parameter URLs spends its crawl allowance on junk — noindex the empty archives.
Thin or duplicated content
The uncomfortable one. Auto-generated pages, near-identical location or service pages, 200-word posts and syndicated content Google already has elsewhere are all routinely crawled and dropped. If a large share of your URLs sit in “Crawled – currently not indexed,” we’ve written a dedicated walkthrough for fixing that specific status — but the honest summary is fewer, better pages: consolidate overlapping ones and redirect the rest. Our WordPress content audit walkthrough covers deciding what to merge, improve or delete.
Step 4: Speed it up (within reason)
- Submit the sitemap in Search Console and check it reports discovered URLs rather than an error. Resubmit after a migration.
- Use Request Indexing from URL Inspection for genuinely important pages. It’s one URL at a time and quota-limited to roughly a dozen a day per property — a tool for your ten best pages, not a 500-post site. It guarantees nothing; a re-requested thin page comes back “Crawled – currently not indexed.”
- Ping IndexNow for Bing and others. Rank Math and several caching plugins submit automatically on publish. Google doesn’t use IndexNow, so treat it as Bing traffic, not a Google fix.
- Fix crawl efficiency. A slow server measurably reduces how much Google crawls. Check Crawl stats for average response time; consistently above a second deserves attention.
- Earn a few real links. The strongest lever and the least convenient. A handful of links from sites Google already crawls often does more for a new domain than any amount of resubmitting.
- Tighten the on-page basics — unique titles, real descriptions, proper headings — using our WordPress on-page SEO checklist, so the page makes its case when Google does crawl it.
What not to waste time on
- Paid “guaranteed indexing” services. They’re either exploiting temporary loopholes or doing nothing.
- Resubmitting the same URL daily. It burns quota and changes nothing.
- Chasing “crawl budget” on a 200-page site. It matters at hundreds of thousands of URLs. Below that, it’s a content and linking problem wearing a technical costume.
Related reading
- Our Search Console bot-impressions study — make sure the impressions you are chasing are even human
Frequently asked questions
How long does it take Google to index a new WordPress site?
For a brand-new domain with no backlinks, expect two to four weeks before the homepage and a few pages appear, and sometimes a couple of months for deeper pages. Established sites that publish regularly often see new posts indexed within a few days. If your site is less than a month old and Search Console shows no errors, waiting is usually the correct action.
Why does Search Console say “Crawled – currently not indexed”?
It means Google fetched the page, read it, and decided not to add it to the index. It’s almost always a value judgement rather than a technical fault, so the fix is improving the page itself — making it more substantial or more distinct from similar pages — and adding internal links from related content, rather than requesting indexing again.
Can I force Google to index a page?
No. Sitemaps and the Request Indexing button in URL Inspection are requests, not commands, and Google is explicit that it doesn’t index every page it crawls. What you can control is removing every technical blocker, making the page easy to reach through internal links, and making it good enough to be worth indexing.
The bottom line
Work the ladder in order: confirm what Search Console reports, clear the hard blockers (Discourage checkbox first), then fix discovery — sitemap, internal links, architecture. If you land on “Crawled – currently not indexed” with nothing technically wrong, believe the diagnosis: that’s Google saying the page needs to be better, and it’s the one part you can’t configure your way out of.