Broken Link Checker for a Single Page
Scan a page's links and flag which ones return a broken or error status, with bulk concurrent checking and HEAD-request efficiency.
Enter a page URL above and click Scan Page.
Fetched through a small server-side proxy, with lightweight HEAD requests used where possible. Nothing is stored.
How it works
- 1
Enter the page URL
Paste the full URL of the page whose links you want to check.
- 2
Choose your scan options
Skip external links to check only your own site's links, or include image sources alongside regular links.
- 3
Click Scan Page
The page is fetched, every link extracted, and each one checked concurrently with a live progress indicator.
- 4
Review broken links first
Broken links are shown at the top by default, with their status code, link text, and whether they're internal or external.
- 5
Expand redirects and working links
Redirecting and fully working links are available in collapsed sections below the broken list, for a complete picture when needed.
About the Broken Link Checker for a Single Page
A page with even a handful of broken links looks unmaintained to both visitors and search engines, and the older a page gets, the more likely a link on it points somewhere that has since moved or disappeared entirely. This tool fetches a page's actual HTML, extracts every real link on it, and checks each one concurrently, surfacing exactly which links are broken, which redirect, and which still work, in one pass rather than clicking through every link by hand.
How links are actually extracted from the page
Rather than asking you to paste a list of URLs, this tool fetches the page's live HTML and parses it directly, finding every anchor tag's href attribute, resolving relative links, like /about or ../pricing, against the page's own URL so every checked link is a real, absolute address. Links that aren't actually navigable, javascript: handlers, mailto: and tel: links, and empty anchor placeholders, are automatically filtered out, since checking their HTTP status makes no sense, they were never meant to be fetched as a URL in the first place.
Why HEAD requests are tried first
Checking whether a link works only requires its status code, not its actual content, and an HTTP HEAD request asks a server for exactly that, headers and a status code, without transferring the page's full body. This tool tries a HEAD request for every link first, since it's meaningfully lighter and faster at scale than downloading full content for dozens of links just to read a status code, and only falls back to a full GET request for the small number of servers that don't implement HEAD correctly, some return a 405 Method Not Allowed rather than actually answering it. This two-step approach checks a full page of links noticeably faster than a naive GET-everything approach would.
Internal versus external, and why the distinction matters
Every checked link is tagged internal or external based on whether its domain matches the page being scanned. A broken internal link is entirely within your control to fix directly, while a broken external link, one pointing to a source that has moved or been taken down elsewhere, needs either updating to a working replacement or removing outright, since it's outside your ability to fix at the source. The skip external links option limits checking to internal links only, both faster and more considerate of the pages you're actually testing against, useful when you specifically want to audit your own site's internal link health without generating traffic toward every external site you happen to link to.
What counts as broken, versus a redirect
Any link returning a 4xx or 5xx status code, or failing to resolve to any response at all, is grouped under broken, these are the links that genuinely need fixing. A link returning a 3xx redirect status still technically works, the destination is just not exactly where the link points, grouped separately since a working redirect is a much lower priority fix than an actual broken link, though updating a link to point directly at its final destination rather than through a redirect is still good practice where it's easy to do.
Runs through a small server-side proxy
Both fetching the page itself and checking each link happen through a small server-side proxy, since reading cross-origin responses isn't possible directly from a browser tab. Links are checked with limited concurrency to avoid overwhelming the page or the sites it links to, and nothing about the page or its links is logged or stored beyond completing the scan. If you want to check a single URL's full response headers and redirect chain in more detail, our HTTP Header & Status Code Checker is built for that, part of the same Technical SEO Tools collection this tool belongs to.
Frequently asked questions
Does this check a whole site or just one page?
This checks the links found on a single page you provide, rather than crawling an entire site.
What counts as a broken link?
Any link returning a 4xx or 5xx status code, or failing to resolve at all, is flagged as broken. A 3xx redirect is grouped separately, since it still technically works.
Why does the tool try a HEAD request before a GET request?
A HEAD request returns just the status code and headers without downloading the full page content, meaningfully faster when checking many links. It falls back to GET only for the small number of servers that don't support HEAD correctly.
What's the difference between internal and external links in the results?
Internal links point to the same domain as the page being scanned and are fully within your control to fix. External links point elsewhere and may need replacing or removing rather than direct fixing.
Can I check image sources too, not just links?
Yes, enabling the include images option also checks every <img> tag's src attribute alongside regular links.
Is there a limit to how many links are checked?
Yes, up to 150 links per scan, a page with more is checked up to that limit and flagged as truncated, keeping scans reasonably fast and considerate of the sites being checked.
Does this generate a lot of traffic toward external sites I link to?
Checking uses lightweight HEAD requests where possible and limited concurrency, but enabling skip external links avoids checking external links entirely when you only want to audit your own site's internal link health.
Is the scanned page or its links logged anywhere?
No, the page and its links are only used to complete the scan through the proxy, nothing is logged or stored afterward.