// LEARN / INDEXING

Fix soft 404 errors on WordPress

7,950 organic clicks/mo, 557,000 impressions/mo, and 16,100 indexed pages mean Google is already testing your WordPress site hard. If soft 404s are leaking through, the fix starts in `Indexing › Pages`, not in guesses.

Donut chart titled "Why Google won't index your pages" showing 14 indexing reasons by share

What soft 404 means

A soft 404 error is a URL that looks dead to Google but still returns 200 OK or some other non-404 response. The page may be empty, near-empty, templated junk, or a search-result-like shell with no real value.

On WordPress, the common pattern is simple: the server says “success,” but the content says “nothing here.” That mismatch is exactly why you see a gsc soft 404 signal instead of a clean indexable page.

The audit numbers on enzymes.bio make the scale obvious: 591,000 not indexed against 16,100 indexed pages. With 0 external backlinks, Google has no outside signal to compensate for weak templates or empty URLs. If a page is thin, duplicate, or functionally missing, Google often labels it a soft 404 rather than indexing garbage.

Find it in GSC

Start in Indexing › Pages. Walk the rows literally, because the row label matters more than the dashboard summary.

Look for:

  • Crawled - currently not indexed
  • Discovered - currently not indexed
  • Duplicate, Google chose different canonical than user
  • Alternate page with proper canonical tag
A lot of soft 404 wordpress cases sit inside Crawled - currently not indexed before they ever become obvious sitewide. If the URL is crawled, returns 200, and has almost no unique content, Google can drop it without giving you a friendly error.

Use Performance › Search results to compare impressions and clicks on those URLs. If a page has impressions but no clicks, or clicks collapsed after a template change, you may be looking at a soft 404 pattern rather than a ranking issue. Cross-check Settings › Crawl stats for spikes in wasteful crawling.

See also indexing issue troubleshooting and Google Search Console coverage errors.

Diagram explaining soft 404 pages, Google crawl behavior, and Search Console index-state buckets

Why WordPress causes it

Empty custom post types

A CPT archive can return 200 OK while showing no meaningful entries, no intro copy, and no internal links. Google reads that as a thin page, especially when the URL is discoverable but not useful.

Empty taxonomy terms

Tag pages, category pages, and filtered archives often create thousands of near-duplicates. If a term has zero posts, the template still renders, so the page exists technically but fails editorially.

Broken search and filter pages

Internal search results, facet URLs, and parameter combinations can all return indexable HTML with no stable purpose. These are classic what is soft 404 examples on WordPress.

Theme templates that lie

Some themes output a polished header, sidebar, and footer even when the body is empty. That can keep the status at 200 while the main content area is effectively blank.

Fix the page source

The first sprint fix is to make dead pages honestly dead. If a URL has no real replacement and no search value, return 404 or 410. Do not keep a 200 status just because the theme is easier to render.

If the page should exist, add enough unique content to beat the thin-page threshold. That usually means a clear intro, crawlable body copy, internal links, and one job for the URL. Empty templates are not content.

For WordPress, the simplest code-level pattern is to block empty archives from looking like content pages.

Use the pattern below as a model, then test the actual response code with curl.

<?php
// functions.php
add_action('template_redirect', function () {
    if (is_category() || is_tag() || is_tax()) {
        global $wp_query;
        if ($wp_query->post_count === 0) {
            status_header(404);
            nocache_headers();
            include get_query_template('404');
            exit;
        }
    }
});
?>

Validate the response

curl -I https://example.com/category/empty-term/

# Good fix: real dead page
# HTTP/2 404

# Bad fix: soft 404 still leaking
# HTTP/2 200

curl -s https://example.com/category/empty-term/ | grep -iE 'no results|nothing found|page not found'

Handle taxonomy and archives

  1. 01

    Audit all archives

    List every category, tag, author, date, product, and custom taxonomy archive. Any archive with zero or near-zero value should be noindexed, redirected, or turned into a real landing page.

  2. 02

    Kill empty term URLs

    If a term has no posts, do not keep it indexable. Either remove internal links to it, send it to 404, or merge it into a parent topic with actual demand.

  3. 03

    Repair thin templates

    Add unique intro copy, descriptive H1s, related links, and enough body text to make the page distinct. A template that only swaps the heading is not enough.

  4. 04

    Check canonicals and robots

    Make sure the canonical points to the strongest version, not the junk page. If the URL should never index, confirm noindex is present and the page is not blocked before Google can see that directive.

Compare fix options

The right soft 404 fix depends on the URL’s purpose. A dead URL needs a dead response. A useful URL needs content. A duplicate URL needs consolidation.

| Field | Option A | Option B | |---|---|---| | Empty term archive | 404/410 | Noindex + keep live | | Thin but valuable page | Expand content | Merge into stronger page | | Duplicate filter URL | Canonicalize | noindex,follow | | Internal search results | Block from index | Keep crawlable only |

If you need a broader indexing cleanup, pair this with discovered not indexed fixes and a deeper technical SEO audit.

Prevent repeat soft 404s

The long-term fix is template governance. If you run 35 languages via TranslatePress, every language URL needs the same quality bar. If translated terms, archives, or landing pages are empty, you multiply the problem across the site.

Tie the WordPress build to a simple rule set:

  1. If the URL has no search demand and no links, don’t index it.
  2. If the URL is meant to rank, give it unique copy, links, and a clear intent.
  3. If the URL is dead, return a dead status code.
  4. If the URL is a duplicate, consolidate it.
That matters because enzymes.bio already has 943 orders and $240,809 lifetime revenue. At that volume, a batch of bad archive pages does not just waste crawl budget. It also hides product and category pages that should be earning clicks, especially with a 1.4% sitewide CTR and an average position near 12.4.

FAQ

What is soft 404?

It is a URL that returns a successful status, usually 200, but behaves like a missing page because the content is thin, empty, or irrelevant.

Why does WordPress create soft 404s?

WordPress makes it easy to publish archives, taxonomies, and filtered pages that exist technically but do not contain enough useful content.

How do I find soft 404s in GSC?

Open Indexing › Pages, then inspect Crawled - currently not indexed and Discovered - currently not indexed. Validate those URLs with curl -I.

Should a dead page return 404 or 410?

Either is fine. Use 404 for missing content and 410 when the URL is intentionally gone and should drop faster.

Can I fix soft 404s by adding noindex?

Sometimes, but only if the page is still useful to users or needs to stay live. If it is truly dead, a proper error status is cleaner.

Do soft 404s hurt crawl budget?

Yes. On a site with 16,100 indexed pages and 591,000 not indexed, Google wasting requests on junk URLs is a real rate-limiter.

Use the right signals

Cross-check the page status with Enhancements › Breadcrumbs, Enhancements › Product snippets, and Enhancements › FAQ. If structured data exists on a page that is otherwise empty, the page can still be soft-404ed.

Also inspect Links › External links. Enzymes.bio has 0 external backlinks, which means Google has almost no off-site trust signal to override a weak page. When the content is borderline, the status code and internal architecture do most of the work.

If you want this cleaned up systematically, see WordPress SEO services or request an audit. See all services.

// FAQ

Common questions

What is soft 404?
It is a URL that returns a successful status, usually `200`, but behaves like a missing page because the content is thin, empty, or irrelevant.
Why does WordPress create soft 404s?
WordPress makes it easy to publish archives, taxonomies, and filtered pages that exist technically but do not contain enough useful content.
How do I find soft 404s in GSC?
Open `Indexing › Pages`, then inspect `Crawled - currently not indexed` and `Discovered - currently not indexed`. Validate those URLs with `curl -I`.
Should a dead page return 404 or 410?
Either is fine. Use `404` for missing content and `410` when the URL is intentionally gone and should drop faster.
Can I fix soft 404s by adding noindex?
Sometimes, but only if the page is still useful to users or needs to stay live. If it is truly dead, a proper error status is cleaner.
// FREE-AUDIT

Get a free 30-minute technical SEO audit

Send your URL and one symptom. You'll get a Loom walkthrough back within 48 hours — no sales call.

Request a free audit
In plain English: If a WordPress URL looks empty to Google, either give it real content or make it return a real dead-page status.