Broken links are links that point to a page that no longer answers: the server replies 404 Not Found or 410 Gone, fails with a 5xx server error, or does not reply at all. The visitor clicks "Pricing 2020" and lands on "Page not found"; Googlebot follows the same link and wastes a fetch. Neither tells you. This guide is the map of the topic: what broken links are, what the status codes behind them mean, whether they affect SEO, and how to find and fix each kind.
Quick answer
- Run the broken link checker on a page. It requests up to 150 links (100 on your site, 50 to other sites) and lists the status of each.
- For a list of URLs, such as your sitemap or old addresses after a redesign, paste up to 1,000 into the bulk URL checker.
- 404 or 410 on your own site: restore the page, or 301-redirect it to the closest live page, then update the link to the final address.
- 5xx: the target is broken server-side. Fix the target first; the link is fine.
- No response (timeout, DNS): the target is down or gone. For external sites, replace the link, link an archived copy or remove it.
- Redirects: not broken, but change internal links to the final URL so visitors skip the hop.
- Re-run the check, and repeat it monthly and after every redesign or migration.
What are broken links?
A link is broken when following it does not end on a working page: the answer is a 4xx such as 404 or 410, a 5xx server error, no answer at all, or a soft 404 (a 200 page that says "not found"). Broken links come in three kinds, and each is fixed in a different place:
| Kind | Example | Where the fix happens |
|---|---|---|
| Broken internal link | Your menu links to /pricing-2020/, which you deleted | Your site: restore, redirect, and update the link |
| Broken external (outbound) link | Your blog post cites a report that the publisher moved | Your content: replace, archive or remove the link |
| Broken backlink | Another site links to your old /pricing-2020/ | Your server: a 301 redirect to the right page |
Link rot: why links break over time
Link rot is the slow decay of links as the pages they point to move or disappear. Products get retired, posts are renamed, a CMS changes its URL structure, a partner site closes. The pages that pointed at them do not change, so the links quietly rot.
The scale is larger than most people expect. Pew Research Center's 2024 study "When Online Content Disappears" found that 38% of web pages that existed in 2013 were no longer available by October 2023, that 23% of news web pages and 21% of government web pages contained at least one broken link, and that 54% of Wikipedia pages had at least one dead link in their references.
Do broken links affect SEO?
Yes, but not as a penalty. Google's documentation says a URL that returns a 404 is dropped from the index and does not harm the rest of your site; 404s are a normal part of the web. The damage from broken links is indirect, and it adds up:
- Lost link value. A link from another site to a page that now returns 404 passes nothing. If the page had backlinks, a 301 redirect to its closest equivalent keeps them working.
- Wasted crawling. A fetch that ends in an error is not spent on a page you want indexed; this matters on large shops more than small sites.
- Weaker internal linking. Internal links tell Google which pages matter; a link to a dead page leads nowhere.
- Visitors who leave. A broken "size guide" link costs a sale; a broken source link costs trust.
The 404s that need attention are URLs with backlinks, traffic or internal links pointing at them. A 404 for a URL that never existed, such as someone else's typo, needs no fix, and redirecting it to the home page only creates a soft 404.
404 errors and SEO goes through what Google says about 404s, a triage table of which ones to fix and which to leave, and a one-hour workflow for Search Console's "Not found (404)" list.
HTTP status codes a site owner meets
Every server answer starts with a three-digit status code, and the first digit says what kind of answer it is. For broken links, four classes matter:
| Class | Examples | For a link it means |
|---|---|---|
| 2xx | 200 OK | The link works |
| 3xx | 301, 302, 307, 308 | The link works via a redirect; update it to the final URL |
| 4xx | 404 Not Found, 410 Gone, 403 Forbidden | Broken: the page is missing or refused |
| 5xx | 500, 502, 503, 504 | Broken for now: the server behind the link failed |
Google drops URLs that answer 4xx from its index, slows its crawling when a site answers 5xx or 429, and follows up to 10 redirect hops, according to its documentation on how HTTP status codes affect Google Search. To check one URL, open the Network panel in the browser's developer tools and reload, or run curl -sI https://example.com/page in a terminal.
The full reference, HTTP status codes for site owners, lists every code you will meet from 1xx to 5xx, including 304, 429 and Cloudflare's 52x errors, with what browsers and Google do with each. A 429 in a link check usually means the other server is rate-limiting your checker, not that the link is dead: 429 Too Many Requests explains how to tell, what to do when your own site sends them, and whether they hurt SEO.
The 404 error
A 404 Not Found is the answer a server gives when it has no page at the requested address. It is the most common reason a link is broken, and it has three causes: the page moved without a redirect (add a 301), the page was deleted (301 it to a close equivalent, or let it answer 404), or the link was always wrong (fix the link).
Not every 404 needs fixing. A 404 for an address that never existed is the correct answer; the ones worth your time have backlinks, traffic or links from your own pages. The 404 error: what it means and how to fix it covers what visitors can try, how to find the 404s on your site and the fix for each cause, including the whole-site 404s that follow a broken permalink setup.
404, 410 or a redirect?
When you remove a page on purpose, you choose its answer. A 301 to an equivalent keeps visitors and links; 410 Gone says the removal is deliberate; 404 is the simple default. For indexing, Google's documentation groups 404 and 410 together, so the choice is mostly about intent. 404 vs 410 vs redirect: what to do with removed pages gives the decision rules per URL, the server snippets and a workflow for a whole list of removed pages.
Soft 404s
A soft 404 is a page that says "not found" or shows nothing, while answering 200 OK. Google spots them from the content and reports them in Search Console as "Soft 404". The usual sources are out-of-stock products, empty categories and search pages, and removed pages redirected to the home page. Soft 404s: pages Google treats as missing shows how to find them and the fix for each cause.
A 404 page that helps
Visitors will reach missing pages however careful you are. The 404 page should keep the site's navigation, say plainly that the page is missing and offer search and useful links, while still returning a real 404 status.
getReport tests this by requesting a random address on your site and checking the status and content of the answer. Custom 404 pages that help covers what to put on the page and how to make the server return it with the right status.
500 Internal Server Error and other 5xx errors
A 500 Internal Server Error means the server tried to build the page and failed. Unlike a 404, the link is usually right; the page behind it is broken. 502 and 504 mean a proxy or CDN could not get an answer from your server, and 503 means the server says it is temporarily unavailable.
For search, the effect depends on how long it lasts: Google slows its crawling and keeps pages indexed at first, and drops URLs that keep failing. 500 Internal Server Error: causes and fixes shows how to find the cause in the error log, the usual WordPress culprits, errors that only appear under load, and how to answer planned maintenance with a 503. The gateway errors have their own guides: 502 bad gateway, 503 service unavailable and 504 gateway timeout. A 403 is different: the page exists but refuses the request, often only for bots, and 403 forbidden works through each layer that can send it. In a link check, treat a 5xx on another site as a reason to re-check, not to remove the link.
How to find broken links
On a page: the broken link checker
The broken link checker runs a normal getReport report and shows the SEO module's link findings. The collector reads every <a href> on the page, drops anchors (#top), mailto: and tel: links and duplicates, and requests each unique URL with a HEAD request, up to 100 links on your host and 50 to other sites. Servers that refuse HEAD (a 405 or 403) get one GET of the first kilobyte, so a site that blocks HEAD does not show up as broken. Redirects are followed and counted, and a request that takes longer than eight seconds counts as no response.
Two findings come out of it:
The table under the findings is the part you will actually work from. It lists every link with its anchor text (so you can find it in the editor), the final status, the URL it redirects to with the number of hops, internal or external and nofollow, and the response time.

For a list of URLs: the bulk URL checker
The bulk URL checker takes the other direction: instead of the links on one page, it checks a list of addresses you paste, up to 1,000 per run. Each is requested with GET, following up to 10 redirects, and every row is labelled OK, redirect, redirect chain, not found, server error, noindex or unreachable, with the final URL, each redirect hop, the canonical and the title. Filter the table or download a CSV.
Good lists to paste: your sitemap URLs, the old addresses from before a redesign, your most-linked pages, and Search Console's "Not found (404)" examples. It checks addresses and page heads, not whole pages. Checking URLs in bulk for a migration shows the workflow for a site move.
Across the whole site
- Search Console → Pages lists URLs Google found as "Not found (404)", "Server error (5xx)" and "Soft 404".
- Your sitemap: the sitemap validator samples listed URLs and flags any that do not answer 200.
- Server logs show every 404 that real visitors and bots hit, with the referring page.
- A site-wide crawl of every page and link is a funded unlock on getReport; until then, combine these sources with the page and bulk checks.
How to fix broken links, step by step
1. Run the check on the page, not the domain
Paste the exact page you want to clean up. The checker looks at the links on that page. Start with the home page, then the old ones: resource lists, blog posts with many references, footers nobody updated.
2. Read the finding first, the table second
The finding summarises, for example "3 of 11 checked links are broken". Open it for the list with anchor text, then use the table for the rest.

3. Fix internal 404s at the target, not only at the link
Decide what the dead address should do (restore, redirect or let it 404, as in the 404 section above), then update the link. The redirect catches every other link you do not know about, including the ones from other sites and from Google's index.
For a redirect on nginx, in the server block:
# Old address → new address, permanent
location = /pricing-2020/ {
return 301 /pricing/;
}On Apache, in .htaccess at the site root:
Redirect 301 /pricing-2020/ /pricing/In WordPress, the Redirection plugin or the redirect manager in Rank Math and Yoast Premium does the same from the admin; no file editing needed. The 301 redirects guide explains when a redirect is the right answer and how to keep it to one hop.
4. Treat 5xx and "no response" as a different problem
A 5xx on your own site is a server problem: see the 5xx section above. "No response" means the domain does not resolve, the server refuses connections, or it took longer than eight seconds; check an external site in a browser before you act.
5. External links: replace, archive or remove
You cannot fix another site's 404. In order of usefulness to the reader:
- Find the same content at its new address (search the site for the title) and update the link.
- Link to the Wayback Machine copy,
https://web.archive.org/web/2024/https://example.com/old-page/, and say "archived copy" in the link text. - Remove the link and keep the words. A sentence without a link is better than a link to nothing.
External links that redirect are normal; updating them is polite, not urgent.
6. Update internal links that redirect
A link that redirects still works, so it is listed as info, not as a warning. It is still worth a minute: each redirect adds a round trip for the visitor, and chains of two or three hops are where things eventually break. Copy the "Redirects to" address into the editor in place of the old one. Internal links that redirect covers search and replace in menus, content and templates.
7. Re-run and keep the link
Run the checker again with the "Re-run" link (reports are cached for 12 hours). Keep the report link; it is your before/after evidence, and you can send it to your developer with the fixes that need code.
Broken internal links
Broken internal links are the ones you control completely, and the most common. They live in the navigation and footer, in templates such as "related products" blocks, in widgets and in body text. A broken menu link is broken on every page, so check the home page and one page per template before the content.
They usually come from a URL change without a follow-up, a deleted page, or a relative link without a leading slash that resolves against the wrong folder. The fix has two ends: decide what the dead target should answer (restore, redirect or 404), then edit every link so it points straight at the live URL.
Broken internal links: find them and fix them at the source shows where they hide, how to find every copy with a search of the CMS, WP-CLI or the source files, and the habits that prevent new ones. For how pages should link to each other, see internal links: how many, where and with what anchor text and orphan pages.
Broken backlinks
A broken backlink is a link from another site to a page on yours that no longer exists. You cannot edit the other site, and you do not need to: a 301 from the dead address to its closest live equivalent makes the link work again and passes its value on.
To find them, export your top linked pages from Search Console's Links report, paste the target URLs into the bulk URL checker and filter for "not found". Broken backlinks: find the links you lost and win them back covers the full workflow, including server logs, choosing a redirect target per URL and how long to keep the redirects. The 301 redirects guide covers the redirects themselves.
How to prevent broken links
- Redirect on every URL change. Make the 301 part of renaming or deleting a page, not a clean-up later.
- Check monthly. Run the broken link checker on your key pages and templates, and the bulk checker on your sitemap URLs. The monthly site health routine fits it into 30 minutes.
- Check after every redesign and migration. Paste every old URL into the bulk checker; the website migration guide has the full checklist.
Platform notes
WordPress. Content links are in the post editor, menus under Appearance → Menus, widgets and footers under Appearance → Widgets or the customizer. Broken-link plugins that crawl the site from your own server can slow shared hosting; run one on demand, fix, then deactivate it. For "?p=123" links, see WordPress permalinks.
Shopify. Edit links in theme sections in the customizer, and in products and collections in the description editor. Shopify's URL redirects screen, reached from the navigation or menus page of the admin, adds 301s for deleted products and collections.
Static sites. Search the source for the old path (grep -r "/pricing-2020/" content/) and add redirects in the host's config (_redirects on Netlify, vercel.json on Vercel, redirects in netlify.toml).
How to verify
- The finding reads "All N checked links work", and the redirect finding lists at most the external redirects you chose to leave.
- Redirects you added answer 301 once, not twice: run the redirect checker on the old address, or the bulk checker on the whole list.
- Search Console → Pages → "Not found (404)" stops growing over the next weeks. Google recrawls old URLs on its own schedule, so the count falls slowly.
Common mistakes
- Redirecting everything to the home page. Google treats a redirect to an unrelated page as a soft 404, and visitors get lost. Redirect to the closest equivalent or let the 404 stand.
- Fixing the link but not adding a redirect. Other pages, other sites and Google's index still point at the old address. The redirect fixes all of them at once.
- Leaving redirect chains after a migration. Old → old-https → new-www → new. Point every old address at the final URL directly.
- Serving "not found" with a 200 status. The page looks missing to people and Google but tells crawlers it exists, which creates soft 404s.
- Blocking HEAD requests on the server. Some security rules reject
HEAD, which makes many link checkers report false errors. AllowHEADfor public pages.
Questions people ask
How do I fix broken links?
For a link to your own page that is gone, restore the page or add a 301 redirect to the closest live equivalent, then update the link to the new address. For a link to another site, replace it with the moved page, an archived copy or a better source, or remove it. For a 5xx, fix the target, not the link. Re-run the check to confirm, and keep the report as evidence.
What causes broken links on a website?
Most broken links come from pages that were renamed, moved or deleted without a redirect, so every link to the old address now ends on a 404. Other common causes are typos in hand-written links, links to staging or draft URLs, relative links without a leading slash, and other sites removing pages you linked to. A 301 on every URL change prevents most of them.
What are broken links?
Broken links are links that do not lead to a working page. The target answers with an error such as 404 Not Found, 410 Gone or a 5xx server error, or does not answer at all because the domain or server is gone. They can point within your site, to other sites, or from other sites to pages you removed, and each kind is fixed in a different place.
What is link rot?
Link rot is the gradual breaking of links as the pages they point to are moved, renamed or deleted. It is slow and silent: the linking page never changes, so nobody notices. Pew Research Center found in 2024 that 38% of pages that existed in 2013 were gone a decade later. Redirecting every URL you change and checking links monthly keeps your own site from adding to it.
How do I fix broken links in WordPress?
Find them with a checker first, then edit the post, page or menu that holds each link and point it at the live address. When a page you removed still has links from other sites, add a 301 redirect with a plugin such as Redirection or the redirect manager in your SEO plugin. Avoid plugins that crawl your site non-stop for broken links; they slow shared hosting, so check on demand instead.
How often should I check for broken links?
Once a month for most sites, and straight after a redesign, a migration or any time you delete or rename pages. Links to other sites break without warning, because their owners move and delete pages on their own schedule. A monthly check of your key pages with the broken link checker, plus a bulk check of your sitemap URLs each quarter, catches most dead links before visitors do.
Are links that redirect broken?
No, a link that ends on a working page after a redirect is not broken, but it is worth updating. Each redirect adds a round trip for the visitor and an extra fetch for crawlers, and chains of several hops slow both down and may be abandoned. Change internal links to the final URL shown in the checker's "Redirects to" column; external redirects can stay if the destination is right.
Can I check broken links on a whole site at once?
Partly. The broken link checker tests up to 150 links on one page at a time, and the bulk URL checker checks up to 1,000 URLs you paste, such as every address in your sitemap. A crawl that follows every link on every page is a funded unlock on getReport. Until then, combine both tools with Search Console's "Not found (404)" list.