Source, target, chain, and context
How to Audit Broken Links
A useful audit records more than 404s: it preserves link location, final response, error class, replacement relevance, and repeatability.
Audit steps
- Collect crawlable
a[href]from server/rendered HTML and normalize absolute targets without dropping query/fragment. - Record source, anchor/element, target, every redirect hop, final status, and response type.
- Confirm with GET; repeat external 401/403/429/5xx/timeouts later and in a normal browser.
- Detect soft 404: 200 with absence messaging, empty main content, or an irrelevant redirect.
- Group by target and source template; prioritize navigation, calls to action, high traffic, and systemic errors.
- After repair, repeat the identical crawl and user journeys.
Classification
| Situation | Level | Decision |
|---|---|---|
| Intentional 404/410 with no internal links | No issue | Do not mask it |
| One external timeout/403 without reproduction | Verify | Repeat with browser/GET |
| Editorial 404 or internal redirect chain | High | Update the source |
| Menu/CTA/template widely targets 4xx/5xx or soft 404 | Critical | Repair the shared source |
Evidence to save
- Date/user-agent, crawl scope, and exclusions.
- Source URL, anchor/element/DOM location, and raw target.
- GET status, chain, final URL, MIME, and error evidence.
- Internal/external, template frequency, traffic/business priority.
- Decision, changed source, owner, and repeat status.
Robots blocking, login, geo/WAF, consent, rate limits, and HEAD policy cause false positives. A Search Console 404 without an internal link is not itself a broken site link. A fragment requires target-DOM validation, not status 200 alone.
Next step
Repair confirmed cases using the guide or use the service with recrawling.