A 403 does not mean your link is broken
Free, with rate controls, and a CSV of everything at the end.
Half the value of a link checker is what it does with the ambiguous answers, and most of them get it wrong. A 403 or a 429 or a 999 means the far end blocked an automated request. It does not mean your link is dead. Report those as broken and you send someone off editing links that were always fine.
So this separates genuinely dead from blocked-the-checker, and says which is which. The second thing it does properly is show you the full redirect chain instead of just the final destination. A 301 pointing at a 301 pointing at a 404 looks perfectly healthy in a tool that only reports where you ended up.
How to use it
- Open the page you want to check.
- Click the icon. It collects every link on the page first, so you can see how many there are before anything gets requested.
- Set how many to check at once and how long to wait between them, or leave the defaults.
- Start it. Pause or stop at any point without losing what it has already found.
- Export the CSV if you want the whole thing, including which page each link was found on.
Why the speed controls are not a nice-to-have
Fire two hundred simultaneous requests at a site and one of two things happens. Either you get rate limited and half your results come back as failures that are really just you being throttled, or you cause a small nuisance for someone whose server you are not paying for.
Both outcomes are bad and the second one is rude. So you get a concurrency setting and a delay between requests, and the defaults are deliberately polite rather than fast. If a scan takes four minutes instead of forty seconds, that is the correct trade.
What it can access, and why
| Permission | Why it needs it |
|---|---|
| Reads the current tab | Only when you click the icon, to collect the links on the page. |
| Local storage | Remembers your concurrency and delay settings. |
| Requests the linked pages (optional) | A link can only be checked by asking the destination whether it exists. Requested when you start a check, and those requests go to whatever you linked to, never to me. |
Full detail in the privacy policy.
FAQ
Why did a link that works in my browser come back as failed?
Almost always bot protection. Cloudflare, Akamai and a lot of large sites answer an automated request differently from a real browser, and LinkedIn in particular returns a 999 that means nothing except that it noticed. Those are flagged as blocked rather than broken. If you see a genuine 404 on something you can open by hand, that is worth telling me about.
Does it check images and scripts, or only anchor links?
Links you can click, which is what you were asking about. A missing image is a different problem with a different fix and mixing them into one list makes both harder to read.
Can it crawl my whole site?
No, it checks the page you are on. That is a deliberate limit rather than an oversight, because a full-site link crawl on hundreds of pages is a desktop job. Run it on your important templates and you will find most of what matters.
What is in the CSV?
Every link, its status, the full redirect chain if there was one, the anchor text, and the page it was found on. That last column exists because a list of broken URLs with no indication of where they live is not actionable.