Delete every email from one sender, in two clicks.
No sign-in · No inbox access · No data collected · Open source
Open any email in Gmail, click Similar, and Sweep finds every other message from that sender and selects the lot — every match, not just the ones on screen. Then you press Gmail's own Delete.
It also adds the thing Gmail has never had: pagination at the bottom of a message list.
Most inbox cleaners ask you to sign in with Google so their servers can read your mailbox. Sweep can't do that even in principle. It has no server and makes no network requests — it drives the Gmail page already open in your browser, performing the same actions you could perform by hand.
The only permission it requests is storage, used to remember your filter choices locally.
From the Chrome Web Store: Add to Chrome — free
From source:
- Download or clone this repository
- Open
chrome://extensions - Turn on Developer mode (top right)
- Load unpacked → select this folder
- Reload any open Gmail tab
Open an email. A split button appears in the conversation toolbar.
Similar (left half) — one click: searches from:<sender>, waits for the results, ticks
select-all and expands it to every match.
▾ (right half) — opens the filter panel:
| Filter | Options |
|---|---|
| Older than | 7 days · 1 month · 6 months · 1 year · 2 years |
| Read state | Any · unread only · read only |
| Larger than | 1 · 5 · 10 · 25 MB |
| Has an attachment | on / off |
| Inbox only | skip archived mail |
| Keep starred | on by default |
| Keep important | on / off |
The exact search is previewed live, e.g. from:news@acme.com older_than:6m -is:starred.
Choices persist between uses; the sender is always re-read from the open email.
Then Search (just look) or Search & select all (auto-select).
Sweep never deletes anything. It hands Gmail a finished selection and stops — you press Delete. Everything goes to Trash, recoverable for 30 days, and Sweep has no way to delete permanently or empty Trash.
It shows no messages of its own; Gmail's own banners and ticked rows already report what
happened. Failures are logged to the console under [Sweep].
Gmail only shows 1–50 of 1,234 and the Older / Newer arrows at the top of a list. Sweep
mirrors that at the end of the list — centred above the Terms · Privacy · Program Policies
footer — on the inbox, any label, any category and any search.
It pages via Gmail's own URL scheme (a trailing /pN on the hash), so it doesn't depend on
Gmail's markup to work.
- The "Select all N conversations that match this search" step is matched by English text. On a non-English Gmail interface only the current page gets selected. Everything else is language-independent.
- Gmail caps bulk actions at roughly 1,000 conversations. Repeat for larger cleanups.
- Gmail's basic HTML view (
?ui=html) is unsupported. - Gmail's markup changes without notice. Sweep uses the most stable hooks available and fails silently rather than acting on the wrong thing.
| Path | Purpose |
|---|---|
manifest.json |
MV3 manifest — one content script, one permission |
content.js |
Sender detection, query builder, filter panel, auto-select, pagination |
content.css |
The injected toolbar button (panel and pager live in shadow roots) |
icons/ |
16 / 48 / 128 px, generated by tools/make_icons.py |
docs/ |
Landing page and privacy policy (GitHub Pages) |
assets/src/ |
Store artwork sources; assets/store/ holds the rendered PNGs |
CHROMEWEBSTORE.md |
Store listing copy, permission justifications, data disclosure |
LAUNCH.md |
Launch and growth plan |
STORE-SUBMISSION.md |
Every answer given to the Chrome Web Store form |
python3 tools/make_icons.py # regenerate icons
./tools/make_assets.sh # render store artwork at exact sizes
./tools/package.sh # build dist/sweep-<version>.zip for upload
node --check content.js # syntax checkAfter editing content.js, click the ⟳ reload icon on the extension's card in
chrome://extensions and then reload Gmail. Refreshing Gmail alone re-injects Chrome's
cached copy of the old script.
No data is collected, stored, transmitted or sold. Verify it yourself:
grep -nE "fetch|XMLHttpRequest|WebSocket|sendBeacon|storage\.sync" content.js
# no matchesFull policy: docs/privacy.html
MIT
Gmail is a trademark of Google LLC. Sweep is an independent project and is not affiliated with, endorsed by, or sponsored by Google.