# How to find and fix broken links on your site

A broken link is a link whose target no longer answers. Three kinds exist on a real site, they are found in different places, and they are not equally urgent: the ones pointing at your dead pages from other sites are the ones that cost you money. Here is how to find all three and what to do with each.

Updated 2026-09-15 · Source: https://porteur.ai/guides/how-to-find-and-fix-broken-links

## The three kinds, and which one actually costs you

| Kind | Where it lives | What it costs | How urgent |
| --- | --- | --- | --- |
| Internal | A link on your page to another page of yours that 404s | Visitors hit a dead end, crawl is wasted on a URL that answers nothing | Fix this month |
| Outbound | A link on your page to another site that has gone | The page reads as unmaintained, and a reader loses the source | Fix when you touch the page |
| Inbound to a dead page | Another site links to a URL of yours that no longer exists | A link you earned points at nothing | Fix this week |

The third kind is the one worth an evening. Somebody wrote about you, the URL changed, and the link now lands on a 404. A single redirect recovers it.

> A 404 is not an error to be eliminated. A page that should not exist returning 404 is correct. What matters is whether anything, or anyone, still points at it.

## Find the internal broken links

1. **Run a link check on the pages that matter** Start with the home page and the pages in your navigation. A broken link checker reads every link on a page and reports the status of each, with the anchor text so you can find it in your source.
2. **Crawl the whole site when it is bigger than a page or two** A desktop crawler follows every internal link and lists the 404s with the page each was found on. The free tier of a crawler covers a small site comfortably.
3. **Read the Page indexing report** In Search Console, the Not found (404) list shows URLs Google tried. Open one with URL Inspection and look at the referring page: that is the link to fix.
4. **Check the things that are not in the body text** Navigation, footer, breadcrumbs and buttons break too, and they break on every page at once.

The usual causes on a small site: a slug renamed without a redirect, a page deleted while the menu still links to it, a relative path written wrong in a template, and a trailing slash added by a link but not accepted by the server.

## Find the outbound links that have gone

Sites die, companies rename, documentation moves. A guide written two years ago usually has one or two dead sources, and readers notice.

- A link checker on the page reports external targets as well as internal ones. Check the pages you cite sources from first: the guides and the comparisons.
- A crawler configured to check external links does the same for the whole site, more slowly.
- Watch for the silent case: a link that answers 200 but now shows something else entirely, usually a parked domain. A status check cannot see that; a reader can.

The fix is a judgement, not a redirect: point at the page that replaced it, point at an archived copy where the source matters, or remove the link and the sentence that depended on it.

## Find the links other sites point at your dead pages

1. **List your 404s** Search Console's Page indexing report, the Not found list. Export it.
2. **Open the Links report** Search Console, Links, Top linked pages. It shows a sample of up to 1,000 rows of the pages other sites link to, with the count.
3. **Cross the two lists** Any URL that appears in both is a link you earned pointing at nothing. These are worth a redirect today.
4. **Check a link index for what Search Console omits** The Links report shows a sample, and only what Google knows. A backlink checker on your own domain fills gaps, and the free tiers cover a small site.
5. **Redirect each to the nearest live equivalent** A 301 to the page that replaced it. Not to the home page: Google reads a redirect to an unrelated page as a soft 404 and the link is lost anyway.

A worked example. Yourproduct.com renamed /features/imports to /product/imports last year. Two write-ups and a directory still link to the old path. One redirect rule, and three earned links start working again.

## The fix, case by case

| The situation | What to do |
| --- | --- |
| The page moved | 301 the old URL to the new one, and update the internal links to point at the new one directly |
| The page was deleted and something similar exists | 301 to the closest equivalent, only if a visitor would call it equivalent |
| The page was deleted and nothing replaces it | Return 410, or leave the 404, and remove the internal links to it |
| The link was simply typed wrong | Fix the href. No redirect needed |
| An outbound source has gone | Replace with the new location, an archived copy, or remove the claim that needed it |
| The URL never existed and only bots request it | Leave it. A 404 is the correct answer |

> Check the redirects you add do not create a chain. A URL that redirects to a URL that redirects again costs a hop for every visitor and every crawler; point the first straight at the last.

## The routine that keeps a growing library clean

- On every deploy that renames or removes a page: add the redirect in the same change. This is the discipline that prevents most of the work.
- Once a month: run a link check on the home page and the top five pages by traffic, and read the Not found list in Search Console.
- Once a quarter: a full crawl, internal and external links, and a pass over the 404s that have inbound links.
- Once a year: read the redirect rules themselves. Old ones accumulate into chains and some point at pages that have since moved again.

A clean site looks like this: no internal link returns 404, every 404 with an inbound link has a redirect to something real, the sitemap lists only URLs that answer 200, and the 404 page itself offers the sections and a search rather than an apology.

## Questions

### Do broken links hurt SEO?

Internal ones waste crawl and send visitors to dead ends; outbound ones date a page. Neither is a penalty. The real cost is inbound links from other sites landing on a 404, because a link you earned stops counting until you redirect it.

### How do I find broken links for free?

Search Console's Page indexing report lists the 404s Google found, the Links report shows which pages other sites link to, and a free link checker reads every link on a page. A desktop crawler's free tier covers a small site end to end.

### Should I redirect every 404 to the home page?

No. Google treats a redirect to an unrelated page as a soft 404, so nothing is preserved and the index fills with noise. Redirect to a genuine equivalent, or let the URL return 404 or 410.

### What is the difference between a 404 and a 410?

A 404 says the server has nothing at that URL. A 410 says the resource was removed deliberately and will not come back. Google treats both as gone and drops the URL, and acts on a 410 a little faster.

### How often should I check for broken links?

A small site is fine with a monthly check of the important pages and a quarterly full crawl, as long as every rename ships with its redirect. Sites that publish weekly should crawl monthly.

### What about links to my site from pages that no longer exist?

Nothing to do. A link on a page that has gone no longer exists either. The case worth acting on is the reverse: a live page linking to a dead URL of yours.

## Read next

- [Broken link](https://porteur.ai/glossary/broken-link): A broken link sends people and crawlers to an error. See the types, where to find them, and the exact fixes for a small site.
- [Broken backlinks: the links you are losing to pages that are gone](https://porteur.ai/guides/broken-backlinks): Links point to deleted pages, wasting authority. Learn how to find broken backlinks, map redirects, when to restore pages, and what not to redirect.
- [How to fix 404 errors reported in Search Console](https://porteur.ai/guides/how-to-fix-404-errors-in-google-search-console): Decide which 404s to fix, find the ones with links or traffic, choose redirect, restore or 410, clean internal links and sitemaps, and revalidate.
- [Delete or redirect an old page: 301, 404 or 410](https://porteur.ai/guides/delete-or-redirect-old-pages): Decide per page: 301 if a clear equivalent exists, else 404 or 410. Check links and clicks first, avoid home page redirects, and monitor what Google drops.
- [The Links report in Search Console: what it shows and what it hides](https://porteur.ai/guides/search-console-links-report): What Google’s Links report really shows, why counts differ from Ahrefs or Semrush, and two jobs it is good at on a small site.
- [410 Gone](https://porteur.ai/glossary/410-gone): 410 Gone means you deleted a URL on purpose and it will not return. Here is when to use 410 vs 404 or 301, how Google treats it, and what to fix.
- [Broken link checker](https://porteur.ai/tools/broken-link-checker): Every link on one page, up to 150, fetched eight at a time: the ones that 404 with the words they carry, the ones that redirect and where to, as a list.
- [Redirect checker](https://porteur.ai/tools/redirect-checker): Follow a URL's redirects hop by hop: each status and destination, the time each took, the kind of hop, meta and script redirects, one rule to replace it.

Paste your URL and the free check reads the whole site, not one page: the links that answer nothing, the pages other sites still point at, and the three findings worth your next hour. Free check: https://porteur.ai/
