Skip to content

Broken links

mediumstructural-broken-linksreviewed

A broken link is invisible until someone clicks it. How they accumulate, what a 404 costs on a page that otherwise works, and how to catch them.

What it is

This check takes the links found on the scanned page and requests each one, preferring a HEAD request and falling back to GET for servers that refuse it. Anything answering 400 or above, or not answering inside the timeout, is reported with the status it returned.

It is bounded on purpose: a sample of the page's links rather than all of them, each with a few seconds to respond. An unbounded link check against a page with hundreds of outbound links is a denial-of-service attack you accidentally ran on someone else's server.

Why it matters

Broken links are the defect most likely to exist on a site nobody thinks is broken. They accumulate passively: an external site reorganises, a page is renamed, a product is retired, and nothing on your end emitted an error when it happened.

This is also the class of problem a single-page checker structurally cannot find. A link is only broken relative to its destination, so finding them means following them — which is why crawling exists as a category of tool at all.

How to fix it

what to do with each one
Moved  -> update the href to the new location
Gone   -> remove the link, or point it at an archived copy
Yours  -> add a 301 from the old path to the new one, so every other site's link keeps working
Flaky  -> re-check before deleting: a timeout is not always a 404

Related checks

4
lowCustom 404 pageThis check requests a path that cannot exist — a generated one, so it is not something a site could special-case — and looks at two things: the status code that comes back, and how much content came with it. A response that is not 404, or is under a couple of hundred bytes, reads as a server default rather than a page anyone designed.mediumImage alt textEvery <img> should carry an alt attribute: a text description for informative images, or an empty alt="" for images that are purely decorative. This check reads it directly out of the HTML the server sent, so it runs on every scan regardless of whether a rendering engine is available.mediumwww and non-www canonicalizationThis check takes the host you entered, works out its counterpart — adding www. or removing it — and requests that. If the counterpart answers without redirecting to the host you entered, both are serving the site independently.lowrobots.txtrobots.txt is a plain-text file at the root of a site — /robots.txt, never anywhere else — listing which paths crawlers may and may not fetch. It is a convention that well-behaved crawlers follow voluntarily; it is not an access control, and it does not stop anyone determined from reading a page.

This is one of the 75 checks the scanner runs. See what we check for the full list, every severity weight, and how the score is computed from them.

See whether your own site passes broken links.

One page, all 75 checks, free. No account, no card.

Check this on my site