Empty category pages trigger soft 404s with no clean fix
Summary
Google flags empty ecommerce category pages as soft 404s even when they return 200, but removing or redirecting them risks slow re-indexing when products return. The right response depends on how long the page stays empty: accept the flags for short stockouts while adding useful content, 302 redirect for medium gaps, and noindex-follow for 3+ months. Tie whatever signal you choose to your inventory system so removal is automatic when stock returns.
What happened
A discussion in r/TechSEO highlights a common ecommerce problem that doesn’t have a clean answer: category pages that return 200 status codes but contain no products. Google Search Console flags them as soft 404s. The site owner agrees with the classification but can’t remove the pages because restocking is planned, sometimes months away.
The poster described a typical pattern. The URL loads with header, footer, navigation, and a “no products found” message. Google sees it as an empty shell. But the client won’t 404 or 410 the pages, redirecting to a parent category would confuse users, and noindex risks slow re-indexing when products return.
One commenter suggested 302 redirecting to a relevant category, or adding useful internal links to categories that do have inventory. Another suggested including restocking information on the page itself.
Why it matters
The problem scales with catalog complexity. A site with a few hundred static categories might have a handful of empty pages. A marketplace with tens of thousands of brand/size/color combinations can see thousands go empty seasonally.
For large-scale sites with hundreds of thousands of URLs, each empty page wastes crawl budget on content with zero value. For smaller catalogs, the primary concern is indexing quality and user experience rather than crawl budget consumption.
Google’s Page Indexing Report documents the “Soft 404” exclusion status, though it doesn’t enumerate the specific detection signals. In practitioner experience, a page with only boilerplate navigation and a “no matches” message tends to trip the classifier regardless of the 200 status code. The URL ends up under “Excluded. Soft 404” in Search Console.
At scale, if a significant share of crawl activity goes to zero-value pages, the pages with actual inventory get crawled less frequently. That delay in discovery means restocked inventory pages take longer to appear in search results.
The re-indexing delay is the bigger concern. A page for “Tours to Iceland, March 2026” that sits empty for months gets deprioritized by Google. When availability returns, re-indexing is slow because the page was treated as low-quality content during its empty period.
What to do
There is no perfect solution here. Each approach has tradeoffs, and the right choice depends on how many pages are affected and how long they stay empty.
For short-term stockouts (days to a few weeks): Accept the soft 404 flags. Keep the pages live with a 200 status. Add content that makes the page genuinely useful: related category links, expected restock dates, email signup for notifications.
The goal is enough real content that Google stops classifying it as a soft 404. A sentence saying “no products found” won’t cut it, but a page with relevant internal links to sibling categories and contextual copy about the category might.
For medium-term gaps (1–3 months): Consider a 302 redirect to the most relevant parent or sibling category. The 302 signals that the move is temporary, and Google generally preserves the original URL in the index in the short term. Google’s redirect documentation classifies 302s as temporary, meaning Google shouldn’t treat the redirect target as the main URL.
In practice, 302s left in place for months often act like permanent redirects for indexing purposes. Monitor the original URL in Search Console to confirm it stays indexed. If the gap approaches three months, reassess whether the redirect is still being treated as temporary. Make sure the redirect target is genuinely relevant to the original category intent.
For long-term gaps (3+ months): A noindex, follow meta tag is the most honest signal. For background on the noindex-vs-robots.txt tradeoff at scale, see noindex vs. robots.txt disallow for millions of stub pages. The page stays accessible to users who land on it via direct links. The follow directive means Googlebot can still crawl links on the page, keeping those URLs discoverable.
Links on long-term noindexed pages tend to lose their ability to pass signals over time. The main benefit is crawlability of linked pages, not equity transfer. Google stops wasting crawl budget on the noindexed page itself. Remove the noindex tag when products return.
Robots.txt blocking as an alternative for long-term gaps. If preserving the URL’s index presence matters more than page-level content signals, blocking the empty URL in robots.txt freezes its index state. Google can’t see the page is empty, but the URL stays indexed rather than being removed. When products return and you lift the block, Google only needs to refresh the content on an already-indexed URL rather than re-index from scratch, which is the core recovery problem with noindex.
The downside: while blocked, Google may surface stale “no products” content in results, any useful content you add to the page stays invisible to Google, and links on the page can’t be followed. Best suited for pages that have no valuable content while empty and where you can automate the block/unblock via inventory feeds.
Approaches to avoid:
-
Canonical to parent category. Canonicalizing a child category to its parent tells Google these two URLs represent the same content. They don’t. Google may consolidate the child to the parent, and when products return, the child page may take significantly longer to re-index separately because Google previously treated it as a duplicate.
Google’s canonicalization documentation explains how Google selects canonical URLs. For more on why Google overrides canonical hints, see Mueller’s list of nine reasons Google ignores rel=canonical.
-
Meta refresh redirects. Meta refresh is an HTML-level directive, not an HTTP-level signal. Google may treat meta refresh redirects (especially with delay > 0) as soft redirects with less predictable signal consolidation. Server-side 301/302 redirects give cleaner control over how Google interprets the intent.
For any approach, automate the toggle. The real failure mode is manual processes. If noindex tags or 302 redirects require a human to remember to remove them when inventory returns, they won’t get removed.
Tie the status code or meta tag logic to your inventory system. When product count for a category drops to zero, trigger the temporary signal. When it rises above zero, remove it automatically.
Watch out for
Noindex recovery is not instant. Removing a noindex tag doesn’t mean Google re-indexes the page on the next crawl. Pages noindexed for extended periods often take longer to re-index after the tag is removed, though Google has not documented a specific mechanism. The timeline varies based on site authority, crawl budget, and how well the page is internally linked. Monitor these pages in Search Console after restocking.
Soft 404 flags don’t always clear after fixes. Even after adding content to an empty page, the soft 404 flag in Search Console can persist until Google recrawls and reprocesses the URL. For individual URLs, use the URL Inspection tool to request re-crawling after making changes. Request Indexing queues a single URL, so it won’t scale to a large catalog.
For sites with many affected category pages, rely on XML sitemaps with updated lastmod timestamps and strong internal linking from high-priority pages to signal that content has returned. Expect a lag before the Search Console report updates regardless of approach.