Chrome extension · fully local · MIT

Find broken links without leaving the page.

A lightweight Chrome side-panel toolbox that checks HTTP links on the page you’re viewing, stores results in this browser only, and exports clean tables for Sheets or Excel — no account, no API keys, no cloud crawl.

  • Manifest V3
  • IndexedDB history
  • Side panel + Options
  • ≈ 60 KB package

How it works

Scan here. Keep results here.

The extension reads the live DOM, checks reachable HTTP(S) URLs with throttled GET requests, and highlights broken targets on the page. Same-origin crawls can walk a small BFS when you ask for it.

Domain batches

Scan Entire Domain in chunks (default 50 new pages). Skip URLs already in History for that root domain, or pick a random sample each run.

Side panel live results

Open the extension on any http(s) page. Review links by page, recheck, and jump to markers without a separate dashboard.

Local history only

Completed and failed scans stay in IndexedDB on this device. Delete one scan or wipe everything from Options → History.

Export without uploads

Copy table for Sheets/Excel, or download CSV. Nothing is sent to a server — paste is yours to own.

Respectful checking

Per-host throttle, concurrency caps, and honest handling of 429 / timeouts so rate limits don’t look like “broken.”

Hash & non-HTTP skip

On-page fragments are verified in the DOM. mailto, tel, and other non-page protocols are skipped on purpose.

Entire domain

Scan large sites in batches

Entire Domain is capped per run so Chrome stays responsive. With skip-already-scanned enabled, each new run on the same root domain continues with the next set of pages.

1. Set pages per batch

Default is 50 new pages. Change it under Options → Settings → Pages per batch.

2. Skip known pages

History supplies the “already done” list for that domain. Turn skip off only when you want a full rescan.

3. Discovery or random

Follow links in discovery order, or take a random sample from the queue when you only need coverage, not a full map.

4. Run again

Next Entire Domain scan on the same site picks new pages. When none remain, you’ll get a clear message instead of a stuck spinner.

Install

Load the ZIP in Chrome in under a minute

Chrome Web Store listing may come later. Until then, install from the open-source package — same flow as any developer extension.

  1. Download the package Grab broken-link-checker-v1.1.1.zip from this page or the GitHub Releases tab.
  2. Unzip Extract the folder somewhere permanent (don’t delete it after install — Chrome loads from that path).
  3. Open Chrome extensions Go to chrome://extensions, turn on Developer mode (top right).
  4. Load unpacked Click Load unpacked and select the unzipped extension folder (the one that contains manifest.json).
  5. Pin & open the side panel Pin the icon, open a web page, click the extension, and use Open sidebar for live results. Options → Welcome has the full how-to.

FAQ

Straight answers

Does this upload my browsing data?

No. Scans and history stay in Chrome’s local storage / IndexedDB on your machine. There is no analytics endpoint and no account. See PRIVACY.md.

Why do I see 429 instead of “broken”?

The extension backs off on 429/503, respects Retry-After, and runs a slow auto-retry pass so most busy responses become OK or truly broken. Leftovers stay unverified (not broken). Lower concurrency in Settings or use Recheck unverified.

Can I scan a large site in batches?

Yes. Entire Domain uses Pages per batch (default 50). With Skip pages already scanned for this domain enabled, each new run continues with URLs not yet in local History. Choose discovery order or a random sample under Settings → Domain batches.

Can it crawl my whole site like Screaming Frog?

No. It is a lightweight on-page / same-origin helper. Domain mode uses a bounded BFS with your max-page setting. It does not replace full SEO crawlers, authenticated lab crawls, or CI link checkers.

Will it find links behind login walls or late SPA routes?

Only what the tab can already see. If you are not authenticated, or a route loads after the scan starts, those URLs may be missed. Re-run after the UI settles.

How do I paste into Google Sheets?

In History, expand a scan, use Copy table (or Open in Sheets for a blank sheet), then paste with Ctrl/Cmd+V. Nothing is uploaded automatically.

Is it affiliated with Google?

No. Independent open-source project by Gobinda Tarafdar. “Chrome” is a trademark of Google LLC. This extension is not affiliated with or endorsed by Google.

Support the workshop

Free tool. Stars & tips keep it lit.

Broken Link Checker is MIT-licensed and ships without ads or tracking. A GitHub star helps others find it. A small donation funds coffee and continued polish.

If GitHub Sponsors isn’t available yet, use the donate link on the maker’s site or star the repo — both help.

About the maker

Gobinda Tarafdar

Portrait of Gobinda Tarafdar

Gobinda Tarafdar

WordPress product marketer · stubborn problem-solver · lifelong Harry Potter devotee

By day I am the Product Marketing Specialist at WPBakery, the page builder that quietly powers a sizeable corner of the WordPress universe. Before that, I helped a single plugin cross 400,000+ active users through positioning, user research, and a relentless focus on what actually moves the needle.

When the day-job owl flies home, I tinker on my own little workshop of spells. Broken Link Checker is one of them: a local toolbox so you can catch dead links without handing your crawl to the cloud.

Privacy. Data stays on this device. No analytics. No account. Full policy: PRIVACY.md · License: MIT