Web

A dead link is three different problems wearing one name.

A 404, a fragment that resolves to nothing and an href of # all look identical in a report and need different fixes, which is why link audits produce so much noise and so little repair.

The three shapes

A dead destination returns an error or a redirect to somewhere irrelevant. It is found by requesting the URL.

A dead fragment resolves to no id on a page that exists. It is found by comparing the fragment against the destination's ids, and it is invisible to a plain status-code crawl.

A placeholder href is not a link at all: a bare #, an empty string, a JavaScript call that does nothing, or an example domain left from a documentation sample. Found by reading the markup.

What a static check finds in a document

Given markup or markdown, the check can extract every link and classify the obviously dead ones without any network access.

  • Bare hash hrefs and empty strings, which ship as dead links to the top of the page.
  • Example domains such as example.com and localhost, which are placeholders rather than destinations.
  • Internal fragments that match no heading or id in the same document.
  • Duplicate slugs, which break the second link to either heading.
  • Link text that describes a destination in vague terms, which is an accessibility issue rather than a dead link.

What needs a crawl

Anything about the destination itself: whether an external URL still resolves, whether it redirects repeatedly, whether it now returns a paywall, whether a page you link to has been removed.

External link rot is the largest category by volume and the slowest to check, because it depends on somebody else's server and somebody else's patience. Rate-limit the crawl, cache results, and re-check on a schedule rather than on every build.

Internal pages are cheaper: crawl your own site, collect ids and status codes, and compare against the link graph.

Making the report actionable

Group by cause rather than by URL. One template emitting a placeholder href produces forty findings and one fix; forty separate dead links are forty fixes.

For each finding record the destination, the link text, the page it is on and the failure shape: status, fragment or placeholder. That is enough for somebody to repair it without re-running the audit.

Assign a recurring cause to the template owner, not to the content author. Most link rot is a pipeline problem.

A cadence that stays useful

Check placeholders and fragments on every publish, since that is cheap and catches the generated defects immediately.

Crawl external links weekly or monthly depending on volume, and re-verify everything before a campaign launch, when the landing pages matter most.

Retire findings rather than accumulating them. A link audit with two hundred open items and no owner is a monthly ritual, not a control.

What this covers

  • Placeholder hrefs

    Bare hashes, empty strings and example domains caught before publishing.

  • Same-page fragments

    Anchors matched against headings and ids in the document.

  • Internal destinations

    A crawl of your own pages with status codes checked.

  • External rot

    Scheduled re-checks of outbound links, rate-limited and cached.

  • Cause grouping

    Findings grouped by template or pattern so one fix closes many.

Questions this page usually raises

What is the difference between a broken link and a broken anchor?
A broken link has a destination that fails; a broken anchor has a destination that loads but no matching fragment. Anchors are invisible to status-code crawlers.
Can a checker test external links without visiting them?
No. External validity requires a request, which is why the console reports placeholders and same-document fragments and leaves outbound checks to a crawl.
How often should outbound links be re-checked?
Monthly for a content site, and always before a campaign. Link rot accelerates on anything referencing pricing, policies or product documentation.
Do broken links affect search rankings?
Indirectly, through crawl behaviour and reader trust. The measurable loss is usually the conversion that did not happen after a click landed on an error.
Does checking a page upload it?
No. The document is parsed locally, so unpublished pages and client material stay on your machine.

Broken link checker

Run the checks, then decide who has to sign it.

The automated pass is free, needs no account and uploads nothing. Escalate to a named reviewer only where being wrong is expensive.