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 Théophile Louvart, founder of Porteur · Updated 15 September 2026 · Markdown
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.
Find the internal broken links
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.
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.
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.
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
List your 404s
Search Console's Page indexing report, the Not found list. Export it.
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.
Cross the two lists
Any URL that appears in both is a link you earned pointing at nothing. These are worth a redirect today.
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.
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 |
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
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.
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.
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.
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.
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.
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.
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
- GlossaryBroken link
- GuideBroken backlinks: the links you are losing to pages that are gone
- GuideHow to fix 404 errors reported in Search Console
- GuideDelete or redirect an old page: 301, 404 or 410
- GuideThe Links report in Search Console: what it shows and what it hides
- Glossary410 Gone
- Free toolBroken link checker
- Free toolRedirect checker