It reads the page's rendered HTML, extracts every <a href>, resolves relative paths against the final URL, drops fragment, mailto:, tel: and javascript: links, and de-duplicates the rest. Links on the same hostname (ignoring www.) count as internal. Up to 60 links are checked per run — all internal ones first, then external ones in page order — eight at a time, each with an 8-second timeout and a browser-like User-Agent. Every link gets a HEAD request; if the server refuses it (403, 405, 501) the tool retries with GET and discards the body. Redirects are followed and the final URL is recorded.
A link counts as broken when the final response is a 4xx or 5xx, or the request fails outright — DNS failure, TLS error, connection refused, or timeout. Responses of 401, 403, 429 and 999 are reported separately as unverified: they almost always mean the host blocks automated checkers, not that the page is gone. The score falls by twice the broken share of what was checked, so one dead link in 60 barely registers while one in four is a real problem.
How to fix what it finds
- 404 / 410 — if the target moved, update the
hrefor add a 301 from the old URL to the new one. If it is genuinely gone, remove the link or point it at the closest replacement. - 5xx or timeouts — the target host is failing, not your markup. Re-run later; if an external site keeps failing, replace the link. On your own site, check the server logs for that path.
- Internal redirects — update the
hrefto the final URL shown under the link so visitors and crawlers skip the extra hop. - Unverified (401 / 403 / 429) — open the link in a browser. If it loads, nothing needs changing; the host just refuses automated requests.