Broken Link Checker, Free Dead Link Scanner Tool

🌐 Network and Web Free Forever

Broken Link Checker

Enter any page and get every link on it checked from our server, sorted into working, redirected, and broken. No account, no signup, no limits.

Crawling checks linked pages too, up to 25 pages.

Try:

Why some links show as blocked rather than broken. A lot of large sites reject automated requests outright, returning 403 to anything that is not a real browser. The link works perfectly when a person clicks it. Those are listed separately so you do not go removing links that are fine.

Redirects are not errors, but they are worth reviewing. Each one adds a round trip, and a redirect that has been in place for years usually means an internal link somewhere is still pointing at an old URL. Update the source rather than relying on the redirect forever.

On crawling. Depth 1 checks the page you entered plus everything it links to internally. Depth 2 goes one level further. Runs are capped at 25 pages and 500 URLs so a check finishes in a reasonable time and does not hammer the sites being tested.

About This Tool

How the broken link checker actually reaches hundreds of other servers from your browser

A browser cannot loop through two hundred links on a page and quietly ask each destination server whether it is still alive. Cross origin restrictions block JavaScript running on convertnow.tools from reading the response of a request sent to, say, a news site or a government archive, unless that site explicitly opts in with permissive headers. Almost none do. So this tool does not try to check links from inside your browser at all. It hands the job to our own server.

That distinction matters for what actually leaves your machine. When you run a check, the page URL you typed is sent to our WordPress backend at /wp-json/convertnow/v1/. Our server fetches the page, and later fetches each extracted link, and your browser only ever talks to us. We are not a client side tool pretending otherwise, and every URL you submit passes through our infrastructure to do the work a browser sandbox cannot.

The four stage pipeline

Here is the exact sequence, matching what the script does on click.

Step 1 Server side fetch A GET request to /wp-json/convertnow/v1/fetch?url=... pulls the target page’s raw HTML server to server. Server to server requests are not subject to CORS at all, since the same origin policy is a browser enforcement mechanism, not a network level rule.
Step 2 Link extraction The HTML comes back to your browser, where it is parsed with the native DOMParser. Every <a href> is pulled out, anchors and mailto or tel links are skipped, and each href is resolved to an absolute URL against the page’s final address, meaning the address after any redirects. Duplicates are dropped and the list is capped at 200 links.
Step 3 Batched server checks Links are grouped into batches of 20 and posted to /wp-json/convertnow/v1/check-batch. On the server, PHP’s curl_multi functions check every link in a batch concurrently rather than one at a time, which is what keeps a 150 link page from taking several minutes.
Step 4 Classification and render Each result comes back with an HTTP status, a redirect flag, and a final URL where relevant. Links are sorted into working, redirected, or broken, and the results panel lets you filter by internal versus external and by status.
// batched check request, adapted from the tool source fetch(API_BASE + ‘/check-batch’, { method: ‘POST’, headers: { ‘Content-Type’: ‘application/json’ }, body: JSON.stringify({ urls: chunk.map(function (l) { return l.url; }) }) }) .then(function (res) { return res.json(); }) // redirected && ok -> “redirect”, ok -> “ok”, else -> “broken”

The batching detail is not cosmetic. Checking 200 links sequentially, one request after another, would mean 200 round trips at whatever latency each destination server has, which realistically stacks up to minutes. Running them concurrently in groups of 20 turns that into roughly ten short bursts.

What counts as broken

The classification follows the HTTP status code definitions in RFC 9110, the current HTTP semantics specification. A link is not broken just because the code is not 200.

ResultWhat triggered itTypical cause
Working2xx response, no redirect hopPage loads normally
Redirected3xx response followed to a final 2xxMoved permanently or temporarily, URL restructuring
Broken4xx or 5xx, timeout, or DNS failureDeleted page, expired domain, server error, typo in the href
Redirects are followed, but each hop is re-checked. A chain that goes from your link to a second URL to a third is walked one hop at a time server side rather than blindly trusted, so a redirect that eventually dead ends still gets flagged as broken instead of being reported as a pass just because the first hop returned a 301.

Where this can mislead you

Bot blocking

Some sites return a 403 or serve a CAPTCHA to requests that do not look like a real browser, including automated checkers. A false broken result on a site you know is up is often this, not an actual dead link.

Login walled pages

A link into content that requires authentication will report a redirect to a sign in page or a 401, even though the link itself is technically correct.

Rate limits

Checking many links on the same destination domain in one batch can trip that domain’s own rate limiting, producing 429 responses that look like breakage but resolve if you check again later.

Practical checks worth automating separately

200 link cap per scan 20 links per batch Internal vs external split

For sites with thousands of pages, this tool is a spot check rather than a full crawl. It reads links from one page you give it, not an entire sitemap, so recurring audits of large sites still call for a dedicated crawler.

Why dead links cost you

Pre publish checks on a blog post before it goes live, quarterly link audits on an old resource page that has quietly rotted, checking a client site handover for dead outbound links, verifying a migrated site’s internal navigation after a redesign, and catching affiliate or partner links that expired without anyone noticing. Run it after any content migration, since that is when internal links break most often.

Common Questions

FAQ: Broken Link Checker

Broken links create a poor experience for visitors and waste the limited time search engine crawlers spend on your site, called crawl budget. Too many broken internal links can also prevent search engines from discovering and indexing other pages properly, since crawlers follow links to find new content. Regularly checking for and fixing broken links is considered basic technical SEO hygiene.

This can happen because the tool checks links through a proxy server rather than your own browser, and some websites block requests that look automated or that come from a data center IP address rather than a residential browser, which is common bot protection. This will sometimes show as an error even though the link is perfectly fine for a normal visitor. Always spot check flagged links directly in your browser before making any changes based on this report.

The limit keeps scans fast and keeps usage of the free public proxy service reasonable for everyone. Most individual pages have well under 60 unique links, if your page has more, run the checker again after fixing the first batch, or check high priority sections of the page separately.

No, it scans one page at a time, the specific URL you enter, and checks the links found on that single page only. It does not follow links to other pages on your site and crawl recursively. To audit an entire site you would need to run this tool separately against each important page, or use a dedicated full site crawler.

Internal links point to another page on the same domain as the page you scanned, these are usually fully within your control to fix. External links point to a different domain entirely, these may break due to changes on someone else’s website that you cannot control directly, though you can still update or remove the link on your end.

It’s good practice, though not urgent. A redirect still gets visitors to the right place, but it adds a small delay and, for internal links, an unnecessary extra hop for search engine crawlers. Updating internal links to point directly at the final destination URL is a minor performance and SEO improvement, worth doing during routine maintenance rather than as an emergency fix.

For actively maintained pages with many outbound links, such as resource lists or blog posts citing external sources, checking every few months is a reasonable cadence, since external sites change or disappear over time without any notice to you. For static pages that rarely change, an annual check is usually sufficient.

No, this site does not log or store the URLs you scan or the results. Requests are routed through a public proxy service to fetch page content and check link status live, results exist only in your browser for the current session unless you export them as a CSV file yourself.

Privacy Overview

Cookies let this site remember your preferences and show us which tools people actually use. Full detail sits in our Privacy Policy.