Find broken links before your visitors do
Last updated:
Every broken link on your site will be found by someone. The only question is whether that someone is you, running a check on a quiet afternoon, or a visitor mid-purchase, a customer following the link in your documentation, or a search crawler deciding what your pages are worth. Links rot quietly — pages move, domains change, images are renamed, partners reorganise — and nothing on the page itself announces the decay. This article covers when to run a broken-link check, what the statuses it reports actually mean, the order in which to fix what it finds, and the honest limits of checking one page at a time.
When to run a broken-link check
The highest-value moments are the ones where URLs change in bulk. After a redesign, templates are rebuilt and navigation is rewritten, and a link that was correct for years can quietly point at a path the new design no longer serves. After a migration — new CMS, new platform, new URL structure — every internal link is effectively a new claim about where content lives, and some of those claims will be wrong. After a domain change, old addresses, partner links and embedded images all depend on redirects someone had to remember to write. Run the check as part of the launch, not after the first complaint.
The quieter moments matter too. Deleting or merging content orphans every link that pointed at it; changing a media library or an image naming scheme breaks pictures months after anyone remembers the change; and other sites reorganise without telling you, so external links that worked at publication time decay on their own schedule. A sensible rhythm is a check of your homepage and key landing pages after every structural change, plus a periodic pass — monthly is plenty for most sites — over the pages your visitors and search engines actually use. The Broken Link Checker on this site runs one page at a time, which fits that rhythm exactly: the pages that matter, checked deliberately.
What the statuses actually mean
A link check reduces to one question per link: what does the server answer when the link is followed? OK means a direct success (2xx). Redirect means the link works only via one or more 3xx hops — fine today, but each hop is a promise someone must keep. Broken means a 4xx answer, most often 404 Not Found: the promised page is not there. Server error means a 5xx answer: the page may exist, but its server failed to deliver it. Timeout and unreachable mean no usable answer at all arrived — slowness, a dead host, a DNS failure. And skipped means the checker deliberately did not fetch the target because it resolves to a private or blocked address.
Search engines read the same answers. Google’s own documentation of how HTTP status codes affect its crawlers says a 2xx response lets the content be considered for indexing, that crawlers follow redirects (up to 10 hops by default) and treat the final target as the page that counts, and that URLs returning 4xx are not indexed — and are removed from the index if they were in it — while persistent 5xx errors slow crawling down and can eventually drop pages too. That is why a broken internal link is worse than a cosmetic flaw: the crawler follows it, gets nothing, and both the link’s value and the target’s place in the index evaporate.
Fix in this order: internal 404s, redirect chains, images
Internal 404s first. A broken link to your own site is entirely within your control, it sits in front of visitors you already earned, and it tells crawlers a page you link to — presumably because it matters — does not exist. Fix it at the source: restore the page if it was removed by accident, correct the URL if it drifted, or repoint the link at the page that genuinely replaced the old one. Reserve redirects for addresses other people may have bookmarked or linked; the link on your own page should simply be right.
Redirect chains second. A single redirect after a move is normal. A chain — an old URL redirecting to a newer URL redirecting to the current one — costs a round trip per hop on every click, and each hop is another rule that can be lost in the next migration. Update the link itself to the final address; when you need to see the hops, the HTTP status chain tracer lays them out one by one. Images third. A broken image rarely blocks the reading of a page, so it waits behind the first two — but do fix it: restore the file, correct the path, or remove the tag, because a page peppered with missing-image boxes reads as abandoned, and sometimes the “image” is actually a chart or a product photo the text depends on.
One page at a time — and why that scope is honest
The checker paired with this article examines one page per run and at most 300 links on it, and says so on its face. That scope is a deliberate trade. A single page can be fetched, parsed and fully checked quickly enough to be part of an edit-publish loop: change the page, run the check, fix what it finds, publish. It also keeps the accounting exact — links found, links checked, links listed but never fetched (mailto:, tel: and in-page fragments are not HTTP requests, and are reported as such rather than dressed up with invented statuses), and a result labelled partial whenever a run stops before covering everything, instead of a silent truncation dressed as completeness.
Whole-site discovery is a different job with different tools: your CMS knows every page you publish, your server logs show every 404 real visitors and crawlers already hit, and Search Console reports the errors Google itself encountered. Use those to decide which pages deserve a check, then check them one at a time and fix what you find. What a single-page checker must never do is pretend to be a crawl — and what you should never do is let the absence of a whole-site tool stop you from checking the handful of pages that carry your traffic.
Make it a habit, not an event
The sites with the fewest broken links are not the ones with the biggest annual cleanup; they are the ones where checking is attached to change. Any time a URL structure, a template, a menu or a media folder changes, the pages that link onward get a check before the change is considered done. Any time content is deleted, the question “what linked here?” gets asked while the answer is still easy. That habit costs minutes per change and prevents the archaeology of a thousand-link report later.
And when a check does find damage, fix the link, not just the symptom: update the source page, keep one clean redirect for the old address if the outside world uses it, and re-run the same page to watch the verdict change. Broken links are one of the few website problems that are completely mechanical to detect and completely within your power to repair — the only real failure mode is meeting them second, through a visitor who found them first.