Broken Link Checker: Find Dead Links & 404s on Any Website
Pricing
from $0.50 / 1,000 link checkeds
Broken Link Checker: Find Dead Links & 404s on Any Website
Crawl a website and check every internal and external link, image, script and stylesheet. Finds 404s, 5xx errors, dead domains, timeouts and redirect chains, with the pages and anchor text where each link appears. $0.50 per 1,000 links.
Pricing
from $0.50 / 1,000 link checkeds
Rating
0.0
(0)
Developer
Andrew Shamah
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
Broken Link Checker: find dead links, 404s and redirect chains on any website
Crawl a website and check every link on it: internal pages, outbound links, images, scripts, stylesheets and iframes. Get a clean table of broken links (404, 410, dead domains), server errors (5xx), timeouts and redirects, with the pages where each link appears and its anchor text, so you know exactly what to fix. No browser, no login, no proxies: fast, plain HTTP checks.
Price: $0.50 per 1,000 links checked ($0.0005 per link) plus a tiny start fee. Crawling pages is free; you only pay for unique links checked. Invalid inputs are free error rows.
What it finds
| Result | Meaning |
|---|---|
broken | 404, 410 or other 4xx, unknown domain, refused connection, malformed URL |
server-error | 5xx responses |
timeout | No response within 20 seconds |
restricted | 401, 403, 429, 999 (the server blocks automated checks, e.g. LinkedIn; usually not really broken) |
ok | 2xx/3xx after following redirects (each redirect hop is listed in redirectChain) |
skipped | Link points to a private/local network address |
Features
- 🕸️ Whole-site crawl (breadth first) with page and depth limits, include/exclude URL patterns and optional subdomains.
- 🔗 Every link type:
<a>links, images, scripts, stylesheets and iframes (turn assets off withcheckResources: false). - 🌍 External links too: check outbound links (on by default), with at most 2 parallel requests per host so you never hammer anybody.
- 📍 Where to fix it: each link lists up to 10 pages that contain it, how many times it was found, and its anchor texts.
- ↪️ Redirect audit: full redirect chain for every link; optionally report all redirected links as problems for SEO clean-ups.
- 🎯 Only problems mode: save just the broken links for a short to-do list.
- 🤖 Respects
robots.txtand crawl-delay while crawling; HEAD first, GET fallback, so checks are light. - 📊 A per-site REPORT (key-value store) with counts by result.
- ⏱️ Bulk: check many websites in one run (
startUrlsor a pasted list).
Input examples
Check a whole site (up to 100 pages and 2,000 links):
{ "startUrls": ["https://example.com"] }
Only broken links of the blog, internal links only:
{ "startUrls": ["https://example.com/blog/"], "includePatterns": ["/blog/*"], "checkExternalLinks": false, "onlyProblems": true }
Quick check of the links on a few pages (no crawling beyond the start pages):
{ "startUrls": ["https://example.com", "https://example.org/pricing"], "maxDepth": 0 }
Output
One row per unique link:
| Field | Description |
|---|---|
site, url | Website and the checked link |
status, statusCode, isBroken | Result (see table above), HTTP status, true for broken/server-error |
error | Network error, e.g. DNS failure or timeout |
finalUrl, redirected, redirectChain | Where the link ends up and each hop (301 https://...) |
linkType | internal, external or invalid |
resourceType | link, image, script, stylesheet, iframe |
foundOnCount, foundOn, anchorTexts | How often, on which pages and with what text the link appears |
contentType, responseTimeMs, checkedAt | Extra details |
Example row:
{"site": "example.com", "url": "https://example.com/old-page", "status": "broken", "statusCode": 404, "isBroken": true,"linkType": "internal", "resourceType": "link", "foundOnCount": 3,"foundOn": ["https://example.com/", "https://example.com/blog/post-1"], "anchorTexts": ["Read more"],"redirectChain": [], "finalUrl": "https://example.com/old-page", "responseTimeMs": 112}
Cost examples
- 500-link small business site: $0.25
- 2,000 links (default cap per site): $1.00
- Set Max links or a maximum cost per run in the run options to stay within any budget; the Actor stops cleanly when the limit is reached.
FAQ
Why is a link "restricted" and not broken? Some sites (LinkedIn, Cloudflare-protected pages, rate-limited APIs) refuse automated requests with 403/429/999 even though the page works in a browser. They are reported separately so they don't pollute your broken list.
Does it render JavaScript? No. It reads the HTML your server sends, which is what search engines see first. Links injected only by JavaScript are not found.
Will it overload my site? No. Crawling uses up to 5 parallel requests (configurable) and honours crawl-delay; link checks are capped at 2 parallel requests per host.
Is it legal? It requests public pages exactly like a browser or search engine would, and only reads link targets' status codes. Only check sites you are allowed to crawl.
Related Actors
SEO & web suite
- SEO Audit Crawler
- Sitemap URL Extractor
- Bulk Redirect Checker
- Website Metadata / Open Graph Extractor
- Website Screenshot
- Website Image Extractor
- SSL Certificate Checker
- Subdomain Finder
- DNS & Email Security Checker (SPF/DKIM/DMARC)
- WHOIS Domain Lookup
- Domain Availability Checker
- Tech Stack Detector
Documents suite
Jobs suite
- Greenhouse Jobs API
- Lever Jobs API
- Ashby Jobs API
- Workday Jobs API
- Company Jobs API (10 ATS)
- Remote Jobs Aggregator