Broken Link Checker: find dead links across a site
Enter a site or a page. We read up to 10 of its pages and request every link on them, internal and external, then list the links that are broken, fail on the server, time out, or pass through more than one redirect.
We fetch the pages and links as HelloSEOToolsBot. Public hostnames only. Up to 150 links per page. Results are cached for 10 minutes, and each visitor can check 40 pages per hour.
How it works
- Finding pages. In site mode we read the Sitemap lines in robots.txt, /sitemap.xml, and the links on the homepage, the same discovery the Site Audit uses. Pages that robots.txt disallows are left out. We take the homepage and the next 9 pages. In page mode only the page you enter is read.
- Collecting links. Every
<a href>in the page HTML is collected and resolved to a full URL. Links to email addresses, phone numbers, JavaScript, and fragments on the same page are skipped. Duplicates on a page are checked once. - Checking each link. We send a HEAD request first, because it asks for the status without downloading the page. If the server refuses HEAD (403, 405, or 501) or does not answer, we try a GET and read at most 64 KB. Redirects are followed, up to 10 hops.
- External links are included. Links to other sites are checked the same way as links to your own pages.
- What counts as a problem. Broken means the final answer was a 4xx status, such as 404 or 410, except 429, which means the host is limiting requests and is reported as unreachable. Server error means a 5xx status. Redirect chain means the link went through more than one redirect before it settled; a single redirect is fine. Timeout means no answer within 5 seconds. Unreachable means the connection failed, the host has no address, or the redirects looped.
Limitations
- Up to 10 pages per run and 150 unique links per page. Each page has a 20 second budget; links not reached in time are counted as not checked, and the run says so.
- Some hosts refuse HEAD requests, block bots, or answer automated requests with 403, 429, or 999. Those links can show as broken or unreachable here even when they work in a browser. Verify them by hand before you change them.
- No JavaScript rendering. Links that only appear after scripts run are not found.
- Pages on other hosts, including www versus the bare domain and subdomains, are not added to the 10-page scan, although links to them are checked.
- Each visitor can check 40 pages per hour. If the limit is reached during a run, the scan stops and keeps the results so far.
Frequently asked questions
- What counts as a broken link?
- A link is broken when the address it points to answers with a 4xx status, such as 404 Not Found or 410 Gone. A 5xx answer is reported separately as a server error, because the page may come back. Links that never answer are reported as timeouts or unreachable.
- Does the checker include external links?
- Yes. Every http and https link on the page is checked, whether it points to your own site or to another site. Links to email addresses, phone numbers, JavaScript, and fragments on the same page are skipped.
- Why is a link that works in my browser shown as unreachable or 403?
- Some sites refuse automated requests, block unknown crawlers, or do not answer HEAD requests. The checker identifies itself as HelloSEOToolsBot and does not run JavaScript or pass bot challenges, so those links can look broken here. Open them by hand to confirm before you change anything.
- Which pages does the 10-page scan pick?
- It uses the same page discovery as the Site Audit: the Sitemap lines in robots.txt, /sitemap.xml, and the internal links on the homepage, with pages that robots.txt disallows left out. The homepage comes first, then the next 9 pages in sitemap and link order.
API
The link check for one page is available as JSON, free, no key required, cached for 10 minutes:
GET https://helloseotools.com/api/page-links?url=https://example.com/
Response: { ok, page, finalUrl, links[], counts: { total, checked, broken, serverError, redirects, timeouts, unreachable, external, internal }, partial, elapsedMs, checkedAt }. Each link has url, anchor, internal, status, finalUrl, redirected, hops, ms, ok, problem, where problem is one of broken, server-error, redirect-chain, timeout, unreachable, or null. Errors return { ok: false, error }.
Related tools
- Site Audit: scan up to 8 pages of a site with the full report and see which issues repeat.
- Redirect Checker: every hop and status code for up to 100 URLs, with chains and loops explained.
- Full SEO Report: one page, an overall score, six category grades, and every fix with its evidence.