UnsubSweep

Help

How to install it, use it, and fix it when something goes wrong.

Install

The Chrome Web Store listing is on its way. Until then, install from source. It takes a minute and needs no build step.

  1. Download or clone the repository.
  2. Open chrome://extensions and turn on Developer mode.
  3. Click Load unpacked and choose the repository folder.

Use

  1. In Gmail on your computer, open Manage subscriptions in the left menu (it may be under More).
  2. Click the UnsubSweep icon, then Start sweep.
  3. Leave the tab alone while it runs. Press Stop at any time.

There is no undo. A run goes through every sender on the page, and the extension cannot re-subscribe you. Only press Start when you want to leave every list shown.

Closing the popup does not stop a run. Open it again to see the counts.

What it clicks

  • Each visible Unsubscribe button in the sender list, from the bottom row up. Each sender gets one try per run.
  • In the dialog that opens: Unsubscribe when Gmail offers a one-click unsubscribe, otherwise Cancel, and the sender counts as skipped.
  • Go to website only if you tick the box in the popup, and then at most 5 times per run. That opens the sender's own site in a new tab, where you finish by hand.

It waits about a second between senders, so a long list takes a few minutes.

When a run stops

  • No sender is left that the run has not tried: Swept.
  • You press Stop.
  • The tab leaves the Manage subscriptions list, for example when you open a message.
  • 250 senders in one run. Press Start again to continue.
  • A Gmail dialog stays open after Unsubscribe. The run stops instead of guessing.

What it never does

  • It never opens, reads, moves, labels or deletes your email.
  • It never runs on a tab you did not open the popup from, or on any site other than mail.google.com.
  • It never clicks the Unsubscribe link inside a message.
  • It makes no network requests of its own, stores nothing, and loads no code from the internet. See the privacy policy.

Permissions

PermissionWhy
activeTabAccess to the Gmail tab you opened the popup from, only when you open it.
scriptingAdds the unsubscribe loop to that tab when you press Start.

No host permissions, so Chrome shows no site-access warning on install.

Troubleshooting

  • "Open Gmail first." The active tab is not on mail.google.com.
  • "Open Gmail's Manage subscriptions page first." You are in Gmail but not on that list. Its address ends in #sub.
  • It finds nothing to click. UnsubSweep matches Gmail's English labels. Set Gmail's language to English, or your account may not have the Manage subscriptions page yet.
  • "Could not run on this tab." Reload Gmail and try again.
  • A sender is still emailing you. Unsubscribes can take a few days to take effect on the sender's side.

Something else? Open an issue.

Run the tests

git clone https://github.com/tahmidbintaslim/gmail-auto-unsubscribe.git
cd gmail-auto-unsubscribe
npm ci
npm test

The tests run the extension's own files against a hand-written stand-in for Gmail's page. npm run demo serves the same thing in your browser, and npm run package builds the store zip.

Repository layout

PathWhat
manifest.json, popup.*, unsubscriber.js, content.jsThe free extension. Plain JavaScript, no build.
test/, demo/Tests, fixtures and the browser demo.
ext/The Pro core, in development (WXT, TypeScript, Preact).
web/This website (Vite, GSAP).

Pro core In development

The Pro version signs in with Google and uses the Gmail API in your browser, so it can rank senders and unsubscribe without Gmail's page. It is not released. Mail data still never reaches a server of ours.

cd ext
npm ci
WXT_GOOGLE_CLIENT_ID=your-client-id npx wxt build

Load ext/.output/chrome-mv3 unpacked. You need your own Google OAuth client; ext/README.md has the steps.

Roadmap

  • Now: the free extension on the Chrome Web Store.
  • Next In development: Pro with smart recommendations, sender categories, plain-English rules and a newsletter digest. AI runs on your device or with your own key.
  • Later: a local MCP server, a Claude Skill and a Claude Code plugin, so Claude can tidy your subscriptions when you ask it to.