How a scan runs
You give the tool one page. The server downloads it (up to the first 1 MB of HTML), collects the href of every <a> element, and tests each unique destination. Links are made absolute against the page's final URL, so relative paths work, and the #fragment is removed so two links to the same page with different anchors count once.
- Skipped:
mailto:,tel:,javascript:, bare#anchors, empty hrefs, and any scheme that is not http or https. - Not collected: images, scripts and stylesheets. Only anchor links are checked.
- Order: the first 24 unique links in document order are checked, with up to 6 requests in flight at once and an 8-second timeout each. The page itself has a 10-second timeout and may redirect up to 10 times.
HEAD first, GET only when needed
Each link is first requested with HEAD, which asks for headers and no body. If the server answers 405 (Method Not Allowed) or 501 (Not Implemented), the same URL is retried with GET. Redirects are followed one hop at a time, up to 10, and each hop is checked against the server's safety rules before it is requested. A link that redirects to a working page shows its final status, not the 301, while a redirect into a private or internal address is reported as an error and not followed.
Why the cap is exactly 24
The backend runs on a serverless platform that allows about 50 outbound requests per invocation on its free tier. One request fetches your page, and the worst case for each link is two requests (HEAD, then GET), so 1 + 24 × 2 = 49 with no redirects. Because every redirect hop is also a request, the page fetch and all link checks share one pool of 49 requests. If a page has many redirecting or HEAD-refusing links the pool can run out; the remaining links are then marked SKIP with "not checked (request limit)" and are not counted as broken. Re-run to try again. The result always shows links found, links checked and a truncated notice when the page has more.
Reading the results
| Shown | Counted as | Typical cause |
|---|---|---|
| 200 to 399 | Healthy | Page loads, or redirects to one that does |
| 404 or 410 | Broken | Page deleted or URL mistyped |
| 403 or 429 | Broken | Site blocks bots or rate-limits; often fine for people |
| 500 to 599 | Broken | Server error, possibly temporary |
| ERR with "Timed out" or "Request failed" | Broken | DNS failure, refused connection, TLS error or slow server |
| ERR with "Too many redirects" or "Redirect blocked" | Broken | Redirect loop or chain longer than 10 hops, or a redirect to a disallowed address |
| SKIP "not checked (request limit)" | Not counted | The run used up its request allowance before reaching this link |
Broken links are sorted to the top. Any link whose host is blocked by the server's safety rules, such as a private address or non-standard port, appears as ERR with the reason.
Mistakes to avoid
- Treating every 403 or 429 as dead. Large sites often refuse automated requests, so open the link in a browser before editing it.
- Assuming a clean result covers the page. Links beyond the first 24 are not tested, so on a long page with a navigation menu the menu can use up the whole budget before the article body is reached.
- Ignoring redirects. A 301 is counted healthy here, but a long-lived link to a redirecting URL is worth updating to the final address. The HTTP headers checker shows the full chain.
For a fix-it workflow once you have the list, see the guide to finding and fixing broken links.