- What exactly is a 404 error?
- Why 404s actually matter (it's not just SEO)
- Step 1 — Find all your 404 errors
- Step 2 — Fix with a 301 redirect
- Step 3 — Update the link directly
- Step 4 — Restore or remove the page
- Step 5 — Set up a helpful custom 404 page
- Fixing 404s in WordPress specifically
- How to stop new 404s from appearing
- Your 404 fix checklist
What exactly is a 404 error?
A 404 error means one thing: the URL was requested, the server understood the request, and responded with "there's nothing here." The page doesn't exist.
It's different from a server crash (that's a 500 error) or a permissions issue (403). With a 404, the server is perfectly healthy — it just can't find what was asked for at that specific address.
The number comes from the HTTP protocol. When your browser requests a page, the server responds with a three-digit status code. 200 means success. 404 means not found. The "4" at the front tells you the problem is on the client side — in other words, the URL being requested is wrong or doesn't exist.
Why 404s actually matter — and it's not just SEO
Yes, 404 errors hurt your SEO. But I want to talk about the part that often gets skipped: the real-world cost to your business.
Think about it from a visitor's perspective. They click a link — from Google, from a social post, from an email newsletter — and land on a dead page. What do they do? Most of them leave. They don't hunt around your site hoping to find what they came for. They're gone.
"Every 404 page is a door that got locked after someone already had directions to it. The visitor followed the directions correctly — you just forgot to leave the door open."
On the SEO side, here's what's actually happening with Google. Every time Googlebot crawls a 404 on your site, it wastes a portion of your crawl budget — the finite amount of crawling Google allocates to your site. It also stops passing PageRank through that link. And if Googlebot finds too many dead ends, it can start crawling your site less frequently, which means new content takes longer to get indexed.
For e-commerce sites this is especially brutal. A deleted product page that's still linked from your navigation or sitemap is actively killing sales every single day it's left unfixed.
Step 1 — Find all your 404 errors
You can't fix what you haven't found. There are a few ways to do this, and I'll go through them in order of thoroughness.
The fastest way: use a link checker
The most complete method is running your site through an automated crawler. This is exactly what BrokenLinkChecker.org does — it visits every page on your site, follows every link it finds, and tells you exactly which ones return 404 (and other errors).
Run a scan, filter the results to show only 404s, and you'll have your complete list in minutes. For most sites under 500 pages, this takes under 10 minutes.
Google Search Console
Go to Coverage → Excluded and look for "Not found (404)" in the list. GSC shows 404s that Googlebot has already encountered. The advantage here is that these are definitely the ones Google knows about. The downside is it's not real-time — it can take days or weeks for GSC to catch up with 404s that appeared recently.
Server logs
If you have access to your server's access logs, you can grep for 404 responses directly. This is the most raw, complete picture — every 404 request that hit your server, including from bots, scanners, and real users. It requires a bit of technical comfort but gives you data that no external tool can match.
# Apache — list the 50 most-requested 404 URLs grep ' 404 ' /var/log/apache2/access.log \ | awk '{print $7}' \ | sort | uniq -c | sort -rn \ | head -50 # Nginx equivalent grep ' 404 ' /var/log/nginx/access.log \ | awk '{print $7}' \ | sort | uniq -c | sort -rn \ | head -50
Step 2 — Fix with a 301 redirect (the most important fix)
For most 404 errors, a 301 permanent redirect is the right fix. It tells browsers and search engines: "This URL has permanently moved — go here instead." Google follows 301 redirects and passes nearly all of the original page's PageRank to the destination.
This is especially important when:
- The page was renamed or moved to a new URL
- External websites or backlinks point to the old URL
- You've migrated from HTTP to HTTPS and old URLs are floating around
- You changed your URL structure (e.g.
/category/post→/post)
In your .htaccess file (Apache)
# Single page redirect Redirect 301 /old-page-url /new-page-url # Redirect an entire old directory RedirectMatch 301 ^/old-blog/(.*) /blog/$1
In nginx.conf (Nginx)
location = /old-page-url { return 301 /new-page-url; } # Or for pattern matching rewrite ^/old-blog/(.*)$ /blog/$1 permanent;
Step 3 — Update the link directly (for internal 404s)
If the 404 is caused by an internal link on your own site pointing to the wrong URL, the cleanest fix is simply editing that link. No redirect needed — just correct the typo or update the href to the right address.
This is the right fix when you control both ends: the page with the link and the destination page. It avoids adding unnecessary redirects to your server and gives a faster, cleaner experience for visitors and search bots.
Blue Widget
</a>
Blue Widget
</a>
When working through your broken link report, look at the "source page" column — that tells you exactly which page on your site contains the bad link. Open that page in your CMS, find the link, and update it. Our link checker's source viewer highlights the exact line in the HTML so you don't have to hunt.
Step 4 — Restore, repurpose, or remove the page
Sometimes the right call isn't a redirect — it's dealing with the destination page itself.
Restore the page
If a page was deleted by accident, or if it still has value and was removed prematurely, simply restore it. If the page had external backlinks pointing to it, this is always the best option — you recover all that link equity without any redirect chain.
Repurpose it as a related page
If the original content is gone but you have something similar, redirect to the closest equivalent. For example, if a specific product was discontinued, redirect to that product category. Visitors still find something useful, and SEO value isn't completely lost.
Remove the link
If the linked content is genuinely gone with no equivalent, and there are no significant backlinks pointing to it, just delete the link from your page. A missing link is better than a visible link that leads to a dead end.
| Situation | Best fix |
|---|---|
| Page moved to a new URL | 301 redirect from old URL to new URL |
| Typo in the link's href | Edit the link directly in your CMS |
| Page deleted but content exists elsewhere | 301 redirect to the closest equivalent page |
| Page deleted, has external backlinks | Restore the page OR 301 redirect to most relevant page |
| Page deleted, no backlinks, no equivalent | Remove the internal link entirely |
| External site went offline | Find a new source and update the link, or remove it |
Step 5 — Set up a genuinely helpful custom 404 page
Here's something a lot of people forget: even after fixing your known 404s, you'll always get some. People mistype URLs. Links go stale. It happens. So having a good custom 404 page is not optional — it's your last line of defence.
A helpful 404 page should do a few things. It should acknowledge the problem plainly, without being overly apologetic or cutesy about it. It should give the visitor somewhere useful to go — a search bar, links to popular pages, or a link to your homepage. And it should be on-brand, so it doesn't feel like the site just broke.
One important technical note: your custom 404 page must return an actual HTTP 404 status code. If your server returns 200 with a "not found" message on it, Google treats this as a soft 404 — and your nice-looking error page won't prevent the SEO problem.
Fixing 404s in WordPress specifically
WordPress deserves its own section because it's by far the most common platform I see 404 issues on — and it has a few quirks.
The permalink settings fix
A surprisingly large number of WordPress 404s are caused by a corrupted or misconfigured .htaccess file. Before doing anything else, try this: go to Settings → Permalinks in your WordPress admin and click Save Changes without changing anything. This regenerates the .htaccess file and clears many permalink-related 404s in one go.
Use Redirection plugin for easy 301s
The free Redirection plugin by John Godley is the standard tool for managing redirects in WordPress without touching server config files. It has a clean interface, logs 404s automatically, and lets you set up redirects in seconds. Install it, and you've got a redirect manager that even non-developers can use confidently.
After changing your permalink structure
If you ever switch your WordPress permalink structure — say, from /?p=123 to /post-name/ — every single URL on your site changes. Set up wildcard redirects using the Redirection plugin or a regex rule in .htaccess to map the old patterns to the new ones. Don't skip this step.
How to stop new 404s from appearing
Once you've done the cleanup work, the goal shifts to prevention. Most 404 errors are avoidable — they're the result of skipped steps during content management. Build these habits and you'll dramatically reduce how many appear over time.
Your 404 fix checklist
Use this as a quick-reference every time you do a link audit:
- Run a full site scan and export results to CSV
- Filter by 404 errors and sort by number of inbound links (fix high-traffic ones first)
- For each 404, decide: redirect, update link, restore page, or remove link
- Set up 301 redirects for pages that moved — never point to the homepage as a catch-all
- Update internal links directly rather than relying on redirects where possible
- Verify your custom 404 page actually returns HTTP status 404 (not 200)
- Cross-check Google Search Console → Coverage for any 404s GSC has flagged
- After fixing, request re-indexing of affected pages in GSC
- Log all redirects in a spreadsheet with date and reason
- Schedule the next audit (monthly for most sites, weekly for e-commerce)