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.

By , founder of Porteur · Updated 15 September 2026 · Markdown

The three kinds, and which one actually costs you

KindWhere it livesWhat it costsHow urgent
InternalA link on your page to another page of yours that 404sVisitors hit a dead end, crawl is wasted on a URL that answers nothingFix this month
OutboundA link on your page to another site that has goneThe page reads as unmaintained, and a reader loses the sourceFix when you touch the page
Inbound to a dead pageAnother site links to a URL of yours that no longer existsA link you earned points at nothingFix 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.

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 situationWhat to do
The page moved301 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 exists301 to the closest equivalent, only if a visitor would call it equivalent
The page was deleted and nothing replaces itReturn 410, or leave the 404, and remove the internal links to it
The link was simply typed wrongFix the href. No redirect needed
An outbound source has goneReplace with the new location, an archived copy, or remove the claim that needed it
The URL never existed and only bots request itLeave it. A 404 is the correct answer

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

Check my site, free

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, no card
  • Read-only, your own accounts
  • Readable by your agent

Read next