AnyTool
Your files never leave your device. All processing happens locally in your browser.

How can I find broken links in my HTML or a URL list without a server, and why can’t a browser fully check external links?

Open AnyTool&rsquo;s Broken Link Finder, paste your page&rsquo;s HTML source (View Source / Ctrl+U) or a plain list of URLs, optionally add your base URL, and it EXTRACTS every link (from HTML via a DOMParser walk of every <code>&lt;a href&gt;</code>, or line-by-line from a URL list) and VALIDATES each URL&rsquo;s FORMAT — flagging malformed URLs, a missing protocol, spaces / whitespace, an <code>http://</code> link on an <code>https://</code> site, <code>javascript:</code> / empty / <code>#</code>-only hrefs, <code>localhost</code> or private IPs, un-filled <code>{{templates}}</code>, overly-long URLs and duplicate targets. Each link is rated valid / suspicious / invalid with the exact reasons, and you get a summary, filters, an &ldquo;Open ↗&rdquo; to verify each link manually, and a CSV export — all 100% in your browser, nothing uploaded. It also offers an OPTIONAL reachability probe, but it&rsquo;s clearly caveated: a browser CANNOT reliably tell a real 404 from a CORS block, so most cross-origin checks are inconclusive. For a true site-wide broken-link crawl that reads real HTTP status codes, use a server-side crawler (Screaming Frog, paid SEO suites, W3C Link Checker).

  • Paste page HTML or a URL list → every link is extracted, no crawling
  • Validates URL FORMAT: malformed, no-protocol, spaces, http-on-https, javascript:/#/empty, localhost, placeholder, overly-long, duplicate
  • Each link rated valid / suspicious / invalid + a filterable table + CSV export
  • Open ↗ each link to verify it actually loads — format validation ≠ reachability
  • 100% client-side; a browser can&rsquo;t reliably check external links (CORS) — use a server crawler for a true crawl

What is

Broken link (dead link / 404)

A broken link is a hyperlink that points to a page or resource that no longer exists or cannot be reached — most commonly returning an HTTP 404 (Not Found) or 410 (Gone), but also 5xx server errors, timeouts, or a malformed URL that never resolves at all. Broken links hurt SEO in three ways: they waste crawl budget (search-engine bots spend limited crawl allowance hitting dead ends instead of your real pages), they waste link equity (the ranking authority a link would pass is lost when its target is dead), and they damage user experience (visitors who hit a 404 tend to bounce). Note that a browser cannot reliably detect a real 404 on an external URL because cross-origin requests are blocked by CORS; dedicated link checkers detect them server-side by reading the actual HTTP status code.

SEO & Web

Related terms

404 errorDead linkCrawl budgetLink equityHTTP status codeCORSLink checkerScreaming Frog

Frequently Asked Questions

They waste crawl budget on dead ends, lose the link equity the link would pass, and hurt user experience — visitors who hit a 404 bounce.

Broken links harm SEO in three connected ways. First, crawl budget: search engines allocate a limited number of crawls per site, and every broken link sends the bot to a dead end instead of a real page — if 5% of your internal links are broken, roughly 5% of your crawl budget is wasted. Second, link equity: the ranking authority (&ldquo;link juice&rdquo;) a link would pass is lost when its destination is dead, so a high-authority page with two broken outbound links out of ten leaks about 20% of the equity it could distribute. Third, user experience: a visitor who clicks through and lands on a 404 usually hits the back button, driving up bounce rate, which can signal to search engines that the page isn&rsquo;t satisfying intent. Google says isolated 404s are normal and not a direct penalty, but the indirect fallout — wasted crawl budget, leaked equity and poor UX — is what erodes rankings over time.

Not reliably — a browser can&rsquo;t. CORS blocks cross-origin reads and a failed fetch is indistinguishable from a real 404. It validates format and lets you open each link to verify.

A browser genuinely cannot reliably check whether an external link is broken, and this tool is honest about that. Cross-origin requests are blocked by the browser&rsquo;s Same-Origin Policy / CORS, so JavaScript can&rsquo;t read the HTTP status of another site&rsquo;s URL; a <code>no-cors</code> fetch returns an OPAQUE response with status <code>0</code> and no readable headers, so a failed request cannot be told apart from a real 404. We also use no server proxy, which keeps your URLs private. What the tool does reliably instead is EXTRACT your links, VALIDATE their URL format (catching the malformed, mis-typed and placeholder URLs that are broken on their face), flag the suspicious ones, and give you an &ldquo;Open ↗&rdquo; link to verify each one manually. The optional reachability probe attempts a real fetch but reports cross-origin failures as &ldquo;blocked (CORS)&rdquo; — inconclusive, not proof of a 404.

They crawl server-side, outside the browser sandbox, sending HEAD/GET requests to each URL and reading the real HTTP status code (404, 410, 5xx).

Dedicated link checkers such as Screaming Frog SEO Spider, paid SEO suites Site Audit, Xenu&rsquo;s Link Sleuth and the W3C Link Checker run server-side (or as a desktop app), outside the browser&rsquo;s cross-origin sandbox, so they are not bound by CORS. They crawl your pages, extract every link, then send an HTTP request — usually a HEAD (or a GET when HEAD is rejected) — to each target URL and read the actual response status code, classifying anything in the 4xx range (like 404 Not Found) or 5xx range (server errors) as broken. They can also report the source page (&ldquo;inlinks&rdquo;) so you know exactly where to fix each dead link. Because they read the true status, they can confirm reachability in a way a browser tab cannot — which is why, for a true site-wide crawl, this tool points you to them.

Malformed URLs, a missing protocol, spaces/whitespace, http on an https site, javascript:/empty/#-only, localhost, un-filled {{templates}}, overly-long URLs and duplicates.

The format validation flags the classic signs of a link that will break or is broken on its face: a MALFORMED URL the browser can&rsquo;t parse; a MISSING PROTOCOL (a bare &ldquo;example.com/path&rdquo; that may be treated as a relative path); SPACES or other whitespace inside the URL (browsers may not follow it); an <code>http://</code> link on an <code>https://</code> site (mixed content, often blocked); <code>javascript:</code> pseudo-URLs, empty hrefs and bare <code>#</code> placeholder links that go nowhere; <code>localhost</code> or private-IP links that work only on your machine and are dead in production; un-filled placeholders or template leftovers (<code>undefined</code>, <code>null</code>, <code>{{product_url}}</code>, <code>example.com</code>); overly-long URLs; and DUPLICATE targets. Each issue is explained in plain language and rolled into an overall valid / suspicious / invalid rating so you can fix the obvious problems before running a full crawl.

Detailed Explanation

Broken-link finding: in-browser format check (AnyTool) vs online crawlers
CapabilityAnyToolTypical online / desktop crawlers
ProcessingRuns entirely in your browserCrawl your site server-side / desktop
Your linksNever uploaded, works offlineSent to / read by the tool
Staging / private URLsSafe — nothing leaves the deviceExposed, including query strings
InputPaste HTML or a URL listA URL / site the tool crawls
Extract linksYes (DOMParser / URL list)Yes (via crawl)
Format validationYes — malformed, http-on-https, placeholder, etc.Varies
Read real HTTP status (404)No (a browser can&rsquo;t — CORS)Yes (its main feature)
HonestyClear that external checks are inconclusiveImplies authoritative status
Cost / signupFree, no signupOften paid or gated

AnyTool extracts your links and validates their FORMAT locally and uploads nothing, which is safe for staging or private URLs, and lets you open each link to verify. A browser cannot reliably read whether an external link returns a 404 — cross-origin requests are blocked by CORS and a failed request is indistinguishable from a real 404 — and there is no server proxy, so this is not a live crawler; for a true site-wide broken-link crawl use a server-side crawler like Screaming Frog, paid SEO suites Site Audit or the W3C Link Checker. Comparison as of July 2026.