Short answer
If a page is deleted and there is nothing to replace it with, leave a 404 — or a 410 if you want it to drop out of the index sooner. This is a normal response, and Google states plainly that having 404s does not demote a site. A 301 redirect belongs only where a specific replacement with the same meaning exists: another product page, a merged article, a new URL for the same section.
The mistake I see most often is redirecting deleted pages to the homepage "so there are no errors". Google calls that a soft 404 and drops those URLs from the index exactly like ordinary 404s — except you also lose the visitor, who landed somewhere they never intended to go.
What each server response actually means
| Response | Meaning for Google | When it fits |
|---|---|---|
| 404 Not Found | The page is gone; it might come back | Deleted page with no replacement, typo in a URL, old URL from someone else's link |
| 410 Gone | The page is gone and will not return | Removing a whole section, discontinued products, closed locations |
| 301 Moved Permanently | Content moved permanently to a new URL | A replacement with the same meaning exists: URL change, merged pages |
| 302 / 307 | Temporary move, the old URL stays primary | Maintenance, an A/B test, a temporary placeholder |
| 200 with "page not found" text | The page exists and has content | Never — this is the classic soft 404 |
That last row is the most common technical fault on the sites I audit. The CMS or theme serves a pretty "Nothing found" page with status 200, and Google sees thousands of distinct URLs carrying the same empty content. Formally these are duplicate pages; practically they are noise that eats crawl budget. It takes a minute to check: open a deliberately non-existent URL such as yoursite.ee/check-404-adlab and look at the status code in the Network tab of your browser's developer tools.
When to redirect and when to 404: the only workable test
There is a single test: does the deleted page have an honest replacement for what the visitor came for? Not "something similar" — something that answers the same query.
- Product discontinued but a newer model exists → 301 to the new model.
- Product discontinued with no equivalent → 404 or 410, with the category and site search shown on the 404 page.
- Article merged into another one, text moved → 301 to the merged article.
- Service no longer offered → 404, and remove the link from the menu.
- Section renamed, content unchanged → 301 to the new URL.
- Page temporarily unavailable → 200 or 503, never 404 or a redirect.
The check is simple: imagine someone arriving from a search result. If after the redirect they see what they were looking for, the redirect is justified. If they see the homepage or a random category, you have merely hidden the 404 and made the experience worse.
Another sign the redirect is unnecessary: you cannot name the destination page without saying "well, wherever everything else goes". That means there is no replacement — leave the 404.
What 404s actually break, and how to fix it
The status code itself is harmless. Three things around it are not.
Internal links to dead URLs. Menus, footers, old articles and "related products" blocks keep pointing at deleted pages. The crawler follows them, link equity drains into nothing, and visitors hit a wall. It is the same discipline as internal linking, just with the sign reversed: there you add links, here you remove them.
Entries in sitemap.xml. A sitemap must contain only URLs that return 200. A deleted page has to leave the sitemap the same day — otherwise you are literally inviting Google to crawl what no longer exists. I covered how to build one in the article on sitemap.xml and robots.txt.
External links to the deleted URL. If other sites link to the page, a 404 zeroes out that equity. This is the one case where a 301 is defensible even without a perfect replacement: better to route the link to a closely related page than to lose it entirely. You can find these URLs in the Links report in Search Console — sort by linking domains and cross-check the status codes.
What you should not do is chase zero in the "Not found (404)" report in Search Console. Google keeps crawling old URLs for months or years, including some you never had — that is normal. What matters is not the total but two subsets: URLs your own links still point to, and URLs that used to bring traffic.
How I handle bulk deletions
In catalogues and content cleanups, pages are not deleted one at a time but by the hundred. The order I have settled on across my projects:
- Export the list of URLs to be deleted and cross-check it against 12 months of Search Console data — which of them earned impressions and clicks. Pages with live traffic go into a separate bucket: deleting them needs a justification, not automation.
- For pages with traffic, find the replacement manually. If one exists, 301. If not, 404, with the understanding that the traffic will go.
- Cover the rest with 410 using a single rule rather than a thousand lines of config. A list of thousands of individual redirects is exactly what turns into chains and conflicts that later cause pages to stay out of the index and that nobody wants to untangle.
- Clean up the internal links with a crawler: as long as a single link on the site points to a deleted URL, it stays alive for the crawler. While there, check whether any orphan pages appeared — after a bulk deletion, catalogue relationships tend to break where you did not expect.
- Update sitemap.xml and wait. Dropping out of the index takes anywhere from a few days to a couple of months, depending on how often the crawler visits those URLs.
An honest limit: this routine is written for sites of a few thousand to a few tens of thousands of pages. On a project with a few hundred pages half the steps are overkill — you are faster going through the list by hand. On catalogues in the millions, step 4 is not solved by automation and needs separate work on the site structure.
What a 404 page should look like
The status code is half the job; the other half is what the person sees. The working minimum I put in place on projects:
- an honest 404 in the response header (verify it, do not trust the template);
- a plain sentence with no technical jargon and no joke that ages badly;
- links to the main sections and a working site search;
- header and menu left intact — the visitor must be able to continue;
- no automatic redirect to the homepage after a few seconds.
And one rule that saves a lot of nerves: never block the 404 page in robots.txt. If the crawler cannot fetch it, it never learns the page is gone and keeps the URL in the index for longer. The same goes for the pages you are deleting — leave them crawlable rather than blocked. If a site is being built from scratch and you want this handled from day one, that belongs in web development, not in cosmetics applied to a finished template.
