Your shopping cart is empty!
A 404 error appears when a page is deleted or moved without a redirect. It wastes crawl budget, destroys link juice, and harms UX. Here is a step-by-step guide on how to find broken links and fix them without losing traffic.
Contents
- What is a 404 error and why it occurs
- How 404s affect SEO: crawl budget, link juice, UX
- Broken links: internal vs external
- How to find 404s: GSC, Screaming Frog, Ahrefs
- How to fix them: redirect, restore, or remove
- Custom 404 page: what it must include
- Case study: 800+ 404 pages after a redesign
- Monitoring and alert setup
- Checklist: 8 checkpoints
- FAQ
What is a 404 error and why it occurs
404 Not Found is the HTTP status a server returns when the requested page does not exist. This is not always a mistake: if a page is intentionally removed, returning 404 (or preferably 410 Gone) is the correct response. The problem arises when internal or external links still point to the non-existent page.
The most common causes of 404 errors:
- Redesign or migration — the URL structure changed but no redirects were configured.
- Deleting products or articles without removing or redirecting their links.
- Changing a page slug in the CMS without preserving the old URL.
- Typos in manually entered URLs in internal links.
- Restructuring site categories without setting up mass redirects.
- Removing images or files that are directly linked within content.
There are two distinct cases: a soft 404 occurs when the server returns a 200 status but the page is empty or just says "Page not found." Google detects these independently and flags them in GSC — they are especially harmful because the bot completes a full crawl of the page before detecting it is empty.
How 404s affect SEO: crawl budget, link juice, UX
404 errors harm SEO through three independent mechanisms:
| Mechanism | How it harms | Severity |
|---|---|---|
| Crawl budget | Googlebot wastes its crawl allowance on non-existent pages instead of indexable content | High for large sites (10,000+ URLs) |
| Link juice loss | External links pointing to 404 pages pass PageRank to no page on your site | High if the 404 had quality backlinks |
| UX signals | Visitors land on an empty page and leave — bounce rate rises, session time drops | Medium (indirect Google signal) |
| Internal PageRank | Internal links to 404 pages pass no link equity and break the site's link graph | Medium |
According to Ahrefs research, 66.5% of audited websites have at least one page with external backlinks returning a 4xx status. This is not rare — it is the norm that most site owners ignore.
A specific risk on larger sites: if Google allocates 5,000 crawls per day to your domain and 1,200 of those go to 404 pages, you are effectively losing 24% of your bot's attention. New or updated pages get indexed slower — or not at all.
Broken links: internal vs external
Broken links are hyperlinks that point to non-existent pages (404) or missing resources. They fall into two types, and the fix strategy differs for each.
| Type | Where they live | How they harm | How to fix |
|---|---|---|---|
| Internal | In your site's content, menu, footer, or sidebar | Break the link graph, block PageRank flow between pages | Update or remove the link in the CMS; set up a redirect |
| External inbound | On other sites linking to you | Loss of link juice from external backlinks | Set up a 301 redirect from the old URL to the current one |
| External outbound | Your links to other sites | Harms UX; may signal outdated content | Remove or replace the link |
Fix priority: first — external inbound (backlinks to your 404s), then — internal (they break the site graph), last — external outbound (minimal SEO impact, but relevant for UX).
For how to properly build your internal link structure and avoid broken links, see our article on internal linking.
"One quality backlink pointing to a 404 page is wasted equity. A 301 redirect takes five minutes and recovers all the PageRank being passed."
How to find 404s: GSC, Screaming Frog, Ahrefs
There are three primary tools for detecting 404 errors. Each surfaces a different slice of the problem — use all three together for complete coverage.
Google Search Console (Coverage / Pages)
- Open Google Search Console → Indexing → Pages.
- In the right-hand column, find the status "Not found (404)".
- Click it — you will see all URLs Google encountered as 404.
- Download the list (Export button) — sort by last crawl date.
GSC only shows 404s that Google actually discovered during crawling. Pages with no links pointing to them may not appear. But any URL that shows up in GSC as 404 is a confirmed problem — the bot already spent crawl budget on it.
Screaming Frog SEO Spider
- Launch Screaming Frog, enter your domain and click Start.
- Once the crawl finishes, open the Response Codes tab.
- Filter by Client Error (4xx) — you will see all 404 and 410 responses.
- For each URL, switch to the Inlinks tab to see which pages link to it.
- Export to CSV for further analysis.
Screaming Frog is the best tool for auditing internal broken links. It catches every link to a 404 — including ones Google has not yet crawled. The free version is capped at 500 URLs.
Ahrefs Site Audit
- Open Ahrefs → Site Audit → your project.
- Navigate to Issues → 4xx page.
- In Broken Pages, filter by HTTP code = 404.
- Here you also see how many external backlinks point to each 404 page — the key metric for prioritisation.
Ahrefs is essential for identifying external backlinks pointing to 404 pages. If a 404 has 50 external backlinks, that is your top fix priority — even if the page has had no traffic for months.
How to fix them: redirect, restore, or remove
Once the list of 404 pages is compiled and prioritised, select the right fix type for each URL:
Option 1: 301 redirect (most common)
Use this when there is a relevant replacement page — for example, a product moved to a new category or an article that was renamed.
- Apache (.htaccess):
Redirect 301 /old-url /new-url - Nginx:
rewrite ^/old-url$ /new-url permanent; - WordPress: the Redirection plugin (free, logs clicks).
- OpenCart: SEO URL module or manual .htaccess entries.
A 301 passes ~90–99% of PageRank — virtually lossless. Google confirms that 301 and 308 redirects transfer link equity in full.
Option 2: Restore the page
If the page had valuable unique content and external backlinks — restore it. This takes more effort but is the most effective option for pages with a strong backlink profile. After restoring, request re-indexing via GSC → URL Inspection.
Option 3: Return 410 Gone
If the page is permanently deleted and no replacement exists — return a 410 status instead of 404. This is an explicit signal to the bot: "this page was intentionally removed, stop crawling it." Google deindexes 410 pages faster than 404s.
Option 4: Remove internal links
If the 404 page has no external backlinks and will never have a replacement — simply remove all internal links pointing to it. Find them via Screaming Frog → Inlinks tab.
Custom 404 page: what it must include
Even a perfectly maintained site will encounter 404 errors — from external links with typos or outdated URLs that visitors type in directly. A well-designed custom 404 page turns a dead end into a retention point.
Required elements of a custom 404 page:
- Clear error message — no technical jargon. "This page was not found" beats "Error 404".
- Site search — the most important element. Lets users find what they need immediately.
- Navigation links to main sections: home, popular categories, blog.
- Popular or recommended pages for the visitor to explore.
- CTA — "Contact us" or "Get a consultation".
Critical: your 404 page must return HTTP status 404, not 200. If your CMS returns 200 on "Page Not Found," that is a soft 404 — Google will flag it separately and may deindex it along with real pages through a quality algorithm filter.
Verify your 404 page status via httpstatus.io or browser Developer Tools (Network tab) — the Status field must show 404, not 200 or 302.
Case study: 800+ 404 pages after a redesign
In March 2024, a building materials e-commerce client came to us after a full redesign and migration from a custom CMS to OpenCart. Two weeks after launch, organic traffic dropped 31%.
What the audit found:
- GSC Coverage reported 847 pages with 404 status — all created during the migration.
- Screaming Frog found 2,340 internal links pointing to these 404 pages.
- Ahrefs: 312 external backlinks from other sites were pointing to 404 pages, with donor DR ranging from 45 to 78.
- The old CMS used URLs like
/catalog/item-123, the new one used/building-materials/item-name. Not a single redirect had been configured.
What we did in 2 weeks:
- Created an old-to-new URL mapping table (900 rows in Google Sheets).
- Configured mass 301 redirects via .htaccess (pattern rules for 80% of URLs, manual rules for the top 50 by backlink count).
- Updated 2,340 internal links directly in the OpenCart database.
- Submitted the updated Sitemap via GSC and requested re-indexing for priority pages.
- Built a custom 404 page with search functionality and category navigation.
Result after 6 weeks:
- Organic traffic recovered and exceeded the pre-migration level by +12%.
- GSC Coverage: 404 count dropped from 847 to 23 (remaining ones are external links with typos in the URL).
- Crawl budget normalised: the bot started indexing new products on the day they were published.
Monitoring and alert setup
A one-time audit is not a solution. 404 errors appear constantly — products get removed, articles get edited, site structures change. Systematic monitoring is the only real fix.
Alerts in Google Search Console
- Open GSC → Settings → Email preferences.
- Enable notifications for Coverage issues.
- GSC will email you when the 404 count spikes significantly.
Limitation: GSC alerts arrive 7–14 days after the problem actually started. By then, crawl budget has already been wasted.
Regular technical audits
- Monthly: full crawl via Screaming Frog or Ahrefs Site Audit.
- Bi-weekly: check GSC → Pages → 404 for new entries.
- Immediately after: any mass page deletions, URL structure changes, or CMS updates.
Automation via Ahrefs
Ahrefs Site Audit supports scheduled automatic crawling (weekly or monthly). After each crawl, you receive an email report listing all new issues, including new 404s. This is the most convenient option for content-heavy sites.
If you need a full technical audit covering crawl budget, internal link equity distribution, and indexing speed — request an SEO site audit from SEO-Factory.
A complete step-by-step algorithm for finding and fixing technical errors — in our technical SEO audit guide.
Checklist: 8 checkpoints
- Check GSC Coverage — Not found (404) — download the URL list
- Run Screaming Frog — filter 4xx — check Inlinks for each URL
- Check Ahrefs Broken Pages — count backlinks pointing to each 404
- Prioritise: fix 404s with backlinks first, then those in menus and footers
- Set up 301 redirects for all 404s that have a relevant replacement
- Update internal links pointing to 404s via Screaming Frog Inlinks
- Set up a custom 404 page (HTTP status 404, not 200)
- Enable GSC alerts and schedule a monthly crawl audit
In Practice
A Kyiv-based IT company with a 300-article corporate blog migrated from Jekyll to WordPress. The platform switch silently changed the URL pattern: /blog/2021/how-to-deploy became /blog/how-to-deploy — the year segment dropped out. No redirects were set up; the developers considered the blog a low priority. Six weeks after launch, Ahrefs Site Audit surfaced 78 dead backlinks from domains with DR 50–90 — authoritative tech publications, GitHub documentation pages, and DevOps aggregators.
Every one of them pointed to old URLs returning 404. GSC Coverage had independently logged 214 error pages, 78 of which carried external links from high-DR donors.
After the audit, the team prioritised the 78 backlinked URLs first, then the remaining 136 blog pages. Screaming Frog identified all internal links still pointing to the old paths; those were updated directly in the WordPress database. For the external backlinks, a single nginx rewrite rule handled the entire pattern: rewrite ^/blog/(\d{4})/(.+)$ /blog/$2 permanent;. The 12 URLs with the most valuable donors got individual 301 entries as a safety net. Seven weeks later, rankings recovered across all 40 affected queries and blog organic traffic climbed +29% above pre-migration levels. Crawl budget measured in GSC dropped by half.
When moving between static site generators and a CMS, the URL pattern shift is systematic — not page by page. One RegExp rule in nginx can fix hundreds of broken URLs at once, but only if the diagnosis happens before launch, not six weeks after.
FAQ
Do 404 errors affect SEO rankings?
Yes, but indirectly. 404s are not a direct penalty, but they waste crawl budget and destroy link juice from external backlinks. A high volume of 404s in GSC signals technical issues and reduces Google's overall trust in the site's technical health.
What is better: a 301 redirect or restoring the page?
If there is a relevant replacement page — use a 301 redirect. If the page had valuable content and external backlinks — restore it. Remove internal links only when there is no relevant substitute and the page had no external backlinks.
How often should you audit a site for broken links?
For active sites — monthly via Screaming Frog or Ahrefs Site Audit. Check GSC Coverage every two weeks. After any redesign or mass page deletion — run a full audit within 48 hours.
Should you fix 404s on pages that receive no traffic?
If they have no external backlinks and have never received traffic — low priority. But if Googlebot crawls them regularly, block them via robots.txt or set up a redirect to stop wasting crawl budget.
We'll find and fix every 404 on your site
Full technical audit: broken links, crawl budget, redirects — with a concrete fix plan and measurable results.


