Guides · 4 min read · Updated 2026-09-08

How to find broken links on a website (and which ones to fix first)

Broken links cost rankings, trust and sales. How to find every 404, 5xx and dead redirect on your site, see which pages link to them, and fix them in the right order.

A broken link is a link whose target no longer returns a page: a 404, a 410, a server error, a domain that lapsed, or a redirect that ends in one of those. Search engines follow them, waste crawl budget on them, and drop the link equity they carry. Users hit them and leave. On any site older than a year there are hundreds, and most are trivial to fix once you can see them all at once, with the page that contains each one.

What counts as broken

  • 404 Not Found and 410 Gone. The obvious ones. 410 is the honest version: it says the page is gone on purpose.
  • 5xx server errors. Often intermittent. A link to a page that 500s under load will look fine when you click it by hand.
  • Redirects to errors. A link goes to an old URL, which 301s to a newer URL, which 404s. Browser tools show the first hop and call it fine.
  • Soft 404s. The server returns 200 with a “page not found” message. Users see a broken link; crawlers see a thin page.
  • Timeouts and refused connections. Domains that expired, servers that went away. Common in outbound links from old blog posts.
  • Links to localhost, file://, or staging hostnames. Left behind by developers. Truelint flags these separately because they never resolve for anyone else.

Why they matter more than they look

Link equity. Every internal link passes ranking signal to its target. A link to a 404 passes it into nothing. If a page with a hundred inlinks is deleted without a redirect, those hundred votes vanish.

Crawl budget. Googlebot has a per-site budget. Dead URLs it keeps re-checking spend it. Sites with thousands of 404s linked internally get their new pages discovered later.

User trust. A broken link on a product page reads as neglect. Conversion studies consistently show sites with visible errors convert worse even when the errors are unrelated to the purchase.

Outbound reputation. A link to a domain that lapsed and was bought by a spammer now points your readers, and Google, at spam.

Finding them

Crawl the whole site, not a sample. Link checkers that test the pages you give them miss the archive posts nobody visits, which is where dead links accumulate. A crawler starts at the home page and follows every link, so it finds every internal link and every outbound link on every reachable page.

Record the source of each link. A list of 404 URLs is useless without knowing where they’re linked from; the fix is on the linking page. Truelint’s detail pane for any URL shows every inlink with anchor text and position (body, navigation, footer), so “fix the footer link” and “fix 400 blog posts” are visibly different jobs.

Follow redirects to the end. Check the final status of each chain, not the first hop.

Check external links too. They’re slower to crawl, so tools skip them by default. Turn it on for an annual pass.

Re-check intermittent errors. A 5xx on one crawl may be a 200 on the next. Truelint retries server errors and distinguishes a persistent failure from a transient one, but a second crawl a day later settles it.

Fixing them in the right order

  1. Internal links to 404s on templates. A dead link in the navigation or footer is on every page. One fix, thousands of pages.
  2. Internal links to 404s from pages with traffic. Sort the 404 list by number of inlinks; the top entries are the ones users actually hit.
  3. Deleted pages that had inlinks or backlinks. Rather than fixing every link to them, add a 301 to the closest surviving page. Then fix the links anyway, so nothing depends on the redirect.
  4. Redirect chains ending in errors. Fix the final hop, then repoint the links to the final URL.
  5. Outbound links to dead domains. Remove or replace. Check the domain first; if it’s been bought by something unrelated, removing is safer than leaving it.
  6. Soft 404s. Return a real 404 status. This is a server change, not a content change.
  7. Everything else. Old blog posts with dead outbound links can wait, but they’re quick once you have the list.

What not to do

  • Don’t redirect every 404 to the home page. Google treats mass redirects to an unrelated page as soft 404s, and users are confused. Redirect to the closest relevant page or return a real 404.
  • Don’t leave 404 pages returning 200. A pretty “not found” page with a 200 status is a soft 404 and will be indexed.
  • Don’t noindex a 404. It’s already excluded; the status code does the work.
  • Don’t fix links by editing the redirect map alone. The link still goes through a hop. Fix the link.

Preventing the next batch

Add a crawl to your deploy pipeline. truelint crawl https://staging.example.com --out staging.crawl followed by an export of the error rules takes under a minute for a mid-sized site, and it catches the dead link before it ships. For content sites, schedule a monthly crawl and compare with the previous one; the comparison shows only what newly broke.

Doing it in Truelint

Crawl the site with external links enabled. In the Issues pane, the response-code errors list every 4xx and 5xx target with a count; click one to see the affected URLs, then open any URL’s detail pane for its inlinks. Export “Current view” for the developer, or the “Redirect chains” and “All inlinks” reports from the Export menu for the full picture.