~/dead-link-checker apps ← terminal
// dev tool — 100% client-side · no data leaves your browser
██████╗ ███████╗ █████╗ ██████╗ ██╗ ██╗███╗ ██╗██╗ ██╗ ██╔══██╗██╔════╝██╔══██╗██╔══██╗ ██║ ██║████╗ ██║██║ ██╔╝ ██║ ██║█████╗ ███████║██║ ██║ ██║ ██║██╔██╗ ██║█████╔╝ ██║ ██║██╔══╝ ██╔══██║██║ ██║ ██║ ██║██║╚██╗██║██╔═██╗ ██████╔╝███████╗██║ ██║██████╔╝ ███████╗██║██║ ╚████║██║ ██╗ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝

Dead Link Detector_

Paste HTML source or a URL list · extract every link · check for dead domains, 404s, redirects and errors.
100% in your browser — no proxy, no server, no tracking.

How browser-based link checking works — What you need to know before scanning:
Links on your own domain (same-origin) and CORS-enabled APIs return real HTTP status codes. External links without CORS headers return an opaque response — the server is alive, but the exact status (200/404) is hidden by the browser's security model. Hard failures — dead domains, DNS errors, timeouts — are always detected regardless of CORS.
OK (200) Redirect (3xx) Dead (4xx / 5xx / DNS fail) CORS blocked — server alive, status unknown Timeout / network error
Tip: works perfectly for jasperbernaers.com pages — same-origin links give full status codes.
Absolute URLs only (starting with https:// or http://)
timeout s
concurrency
check
base url
scanning... 0%
All 0 OK 0 Redirect 0 Dead 0 Reachable 0 Error 0
# URL Status Type Anchor text Origin
No links found Check that your HTML contains anchor tags or that your URL list is formatted correctly (one URL per line).
About & FAQ — Dead Link Detector

Dead Link Detector — how it works

Why can't this tool check every external link's exact status code?

Browsers enforce CORS (Cross-Origin Resource Sharing) — a security rule that prevents JavaScript on one domain from reading the response of a request to another domain, unless that other domain explicitly opts in. When you fetch an external URL with no-cors mode, you get an opaque response: you know the server replied, but the browser hides the status code. The only alternative is to route requests through a server-side proxy, which this tool deliberately avoids.

What CAN this tool reliably detect?

Dead domains and DNS failures — if a domain no longer exists, the fetch throws a network error and is flagged red. Same-origin links (links on the same domain as the tool) always return real 200/301/404 status codes. Cross-origin external links are checked with no-cors mode: if the server responds at all, you get a cyan "Reachable" badge (server is up, exact status hidden by the browser). If the server is unreachable, it's flagged red.

How do I get the most accurate results?

For your own site: paste the HTML of one of your pages and set the base URL to your domain — all internal links will return real status codes. For external links, use the results as a triage tool: confirm all "Dead" results first (DNS failures are always real), then manually spot-check any "Reachable" links that look suspicious.

Does my HTML or URL list get sent anywhere?

No. All processing happens in your browser using JavaScript. Your HTML is never uploaded. The only network traffic is the link-checking fetch calls going directly from your browser to the URLs being tested — no proxy, no intermediary server.

What does the concurrency setting do?

Controls how many links are checked simultaneously. Higher = faster scan, but more aggressive on the target server. Default is 5 — a good balance between speed and not getting rate-limited. Lower it to 1–2 if you're scanning a slow or rate-limited site.

Is this tool free?

Yes, completely free. No account, no signup, no limits. One of 60+ free tools at jasperbernaers.com.