All Tools View Categories About Contact Privacy

About Broken Link Checker

Every link rots eventually — a page gets renamed, a domain gets retired during a migration, or someone fat-fingers a URL in a CMS field and it ships to production untested. Broken Link Checker audits a pasted link inventory (a simple source,target CSV, the kind most CMS and static-site tools can export) and flags the usual suspects: hosts that are not on your known-good list, internal links still using insecure http://, and links whose target looks malformed or unexpectedly external.

It deliberately does not crawl the web. A browser tab cannot safely fetch arbitrary third-party URLs to check status codes, and doing so from a client-side tool would mean either sending your entire link inventory to a server or hitting rate limits and CORS walls on every request. Instead it reasons about the parts of a URL that are cheap and reliable to inspect — the host, the scheme, and whether the path is absolute, root-relative, or protocol-relative — which is exactly where the most common and most consequential broken-link problems actually live: a domain move that leaves old absolute links behind, an http:// link that slipped past a find-and-replace, or a typo host that nobody will notice until a customer clicks it.

Features

  • Internal vs external classification — by comparing target host against source host, with "www." normalized away on both sides.
  • Unlisted-host flags — paste your canonical/trusted hosts and anything else in the inventory is called out by name with a count.
  • Insecure link detection — http:// targets are tallied separately, with special attention to ones that are otherwise internal (mixed content).
  • Relative and protocol-relative buckets — /path and //host/path links are counted apart from absolute URLs, since they behave differently across environments.
  • Distinct external domains — a ranked list of every external host referenced, and how many times, so a link audit doubles as a third-party dependency inventory.
  • Other-scheme handling — mailto:, tel:, and similar links are recognized and set aside instead of miscounted.

How to Use

  1. Paste your CSV rows in source,target form — export them from a CMS, sitemap crawler, or spreadsheet.
  2. Add your canonical hosts, one per line, in the optional second box (skip this if you only want the internal/external/relative breakdown).
  3. Audit. Stat tiles and a full Markdown report with per-bucket counts and a flagged-host list appear immediately.
  4. Fix anything unlisted or insecure first — those are the entries most likely to be an actual mistake rather than an intentional external reference.

Examples

Example 1 — CMS export before a crawl. Export every hyperlink from your CMS as a CSV, run the audit, and clean up the unlisted hosts before an SEO crawler or Search Console finds them and dings your site for broken outbound links.

Example 2 — Post-migration cleanup. After moving from www.old-brand.com to example.com, paste the inventory and use the canonical-hosts box to confirm nothing still resolves to the retired www host.

Example 3 — Mixed-content sweep. Before enforcing HSTS or a strict Content-Security-Policy, run the audit to generate a list of every internal http:// link that would suddenly break or get silently upgraded.

Example 4 — Third-party dependency review. The distinct-external-domains list doubles as a quick inventory of every outside service your pages link to — useful when doing a privacy or vendor review.

Benefits

  • Prevent 404s before launch — catch bad or unlisted hosts while the fix is still a find-and-replace, not a customer complaint.
  • Find mixed content early — insecure internal links surface before a browser starts blocking or warning about them.
  • Audits at CSV scale — paste thousands of rows and get sorted, counted buckets instead of scrolling a spreadsheet by hand.
  • No crawler required — works from an exported inventory, so there is nothing to rate-limit, authenticate, or get blocked by robots.txt.
  • Private — the entire audit runs in your browser; the link list is never uploaded anywhere.

Frequently Asked Questions

What should the input look like?
CSV lines: source URL, comma, target URL — one link per line, e.g. https://example.com/about,https://example.com/team. A line with a single URL (no comma) is read as a target with no known source. Blank lines are skipped, and a target can itself contain commas since everything after the first comma is treated as the target.
What makes a link "external"?
Any target whose host differs from the source host. A leading "www." is stripped from both sides before comparing, so www.example.com and example.com are treated as the same host and will not be misreported as an internal-to-external move.
How do I know a host is "broken"?
No tool running purely in a browser tab can fetch arbitrary pages — that would require a server-side crawler and raises its own privacy and rate-limit problems. Instead, you paste the list of hosts you know are yours or otherwise trusted; every host that shows up in the inventory but is not on that list is flagged as unlisted. In practice an unlisted host is almost always a typo in a hand-edited URL, a host that was retired during a migration, or a partner/CDN domain nobody remembered to whitelist — all worth a manual look.
What about http:// links?
Any target using the plain http:// scheme is counted as insecure. If that target is also internal (same host as the source), it is a strong signal that SSL termination, an HSTS redirect, or a hardcoded protocol in a template is missing somewhere — mixed content that browsers will flag or silently block on an otherwise HTTPS page.
Which formats are counted as relative?
Targets like /path (root-relative, same site by definition) and //host/path (protocol-relative, which can point at a different host entirely) are both counted in the relative bucket, but a protocol-relative link is also checked against the source host so a //other-domain.com/path link still shows up as external.
Does it handle non-http schemes like mailto: or tel:?
Yes. Links using any scheme other than http/https (mailto:, tel:, javascript:, etc.) are classified as "other" rather than forced into internal/external/relative buckets, since host comparison does not apply to them the same way.