Skip to content

Discoverability

How to find and fix broken internal links

Every one is a visitor hitting a dead end and a crawler spending budget on a page that is not there. A 500 is worse than a 404 — it means the route exists but the code behind it is failing, which no visitor will report to you.

What 13x checks

This is rule discoverability.broken-links in the public registry: No broken internal links. It runs on every audit, against the pages we actually fetched, and its result is derived from the response rather than estimated.

Surface
Discoverability
Score weight
10 of the readiness score
Scope
Reported as skipped when the page renders only with JavaScript
Applies
To every site

Registry version 2026-07-30. Every rule is published, and the audit is deterministic — the same page produces the same finding every time.

The fix

The same text the audit hands you when this check fails on your own site.

These internal links do not resolve. Each one is a visitor hitting a dead end and a crawler wasting budget.

For each: either fix the href, restore the page, or add a 301 to wherever the content moved.

Distinguish the two cases:

- 404 — the URL is wrong or the page is gone. If it ever had traffic or inbound links, redirect it rather than leaving it dead. - 5xx — the route exists and the code behind it is failing. This is a bug, not a link problem, and nobody will report it to you. Check the server logs for that path.

To keep them from coming back, add a link check to CI:

bash code
npx linkinator https://example.com --recurse --skip "^(?!https://example.com)"

Does your site have this problem?

13x checks this and 112 others against your live URL in about 30 seconds. No account, and every finding comes with the fix for your framework.

No signup. Results in 30 seconds.

More discoverability checks