Clean Internet Suite — a privacy-first browser extension that quietly cleans up the modern web.
Sieve blocks the stuff that makes the internet feel hostile — scams, gambling, dark patterns, toxic comments, popup hijacks, and endless feeds — and gives you back a bit of control. It runs entirely on your device: no account, no tracking, nothing leaves your browser.
Honestly, I made this because I got tired. The internet I grew up on felt fun and open. Somewhere over the years it turned into scams, nasty comments, endless feeds, and sites that trick you at every click. So I built the tool I wished existed. — monolab
- Bad Language Filter — masks profanity on pages (funny or family-safe styles, plus your own word list).
- Toxic Comment Hider — collapses toxic comments on YouTube, Reddit, X/Twitter, and Disqus, with an optional on-device TensorFlow.js toxicity model.
- Dark Pattern Blocker — neutralises fake countdown timers, guilt-trip copy, pre-checked boxes, and manufactured scarcity.
- Cookie Auto-Reject — automatically rejects cookie-consent banners (built on the MIT-licensed Consent-O-Matic rules).
- Popup & Click Hijack Blocker — blocks popups and click-hijacks by default, with a per-site allow prompt and whitelist.
- Gambling Blocker — blocks gambling and betting sites (with an opt-in Prediction Markets tier).
- Financial Protection — opt-in tiers for crypto scams, trading/exchange sites, and MLM schemes.
- Safety Shield — opt-in blocking for phishing/malware, cryptojacking, piracy, AI-slop content farms, fraud, gore/shock, and dating sites.
- Custom block list + allowlist — a global block list and allowlist that apply across every blocker.
- URL Shortener Resolver — expands or blocks shortened links before you land on them.
- Doomscroll Stopper — a daily time limit on endless feeds, with a gentle pause overlay.
- Guardian self-lock — an optional PIN that gates weakening your protection (turning things off, allowlisting) while strengthening it stays free.
- Protection Dashboard — a today/this-week breakdown of everything Sieve blocked for you.
Sieve is built to be trustworthy by design:
- No account, no sign-up, no telemetry, no tracking. Sieve only downloads files (blocklists, the optional toxicity model, and a settings-page announcement check) — it never uploads anything about you. See PRIVACY.md.
- All processing is local, including the optional toxicity model.
- Settings and stats live only in your browser's local storage.
The repository ships with the prebuilt bundles, so you can load it directly — no build step required.
- Download or clone this repository:
git clone https://github.com/codepurse/Sieve.git
- Open
chrome://extensions(oredge://extensions,brave://extensions). - Enable Developer mode (top-right).
- Click Load unpacked and select the project folder.
- Pin Sieve from the toolbar and open its options to configure the modules.
Tested on Chrome / Chromium browsers (Chrome, Edge, Brave, Opera). A Firefox build target exists (
npm run build:firefox) but is still experimental — the optional on-device toxicity model relies on the offscreen API, which Firefox does not support, so that one feature is skipped there.
The extension itself is plain JavaScript loaded directly by the manifest. You only need Node.js if you want to regenerate the optional bundles.
npm install # install dev/build dependencies
npm run build # rebuild the optional TensorFlow.js toxicity model bundle
node build-cookie-engine.mjs # rebuild the Consent-O-Matic cookie engine + rulesRebuild only if you change the toxicity model or the cookie engine — otherwise the committed bundles are all you need.
To produce clean, store-ready builds (and zips) for each browser, use the
PowerShell build scripts. Each one copies only the runtime files into
dist/<browser>/ — dev-only folders (node_modules/, src/, vendor/,
test/, …) are excluded — verifies the required bundles are present, and
optionally zips the result.
npm run build:chrome # → dist/chrome/ + dist/sieve-chrome.zip
npm run build:firefox # → dist/firefox/ + dist/sieve-firefox.zip
npm run build:all # both of the aboveThe npm scripts run with -Bundle -Zip, so they regenerate the esbuild
bundles first and then package. To run a script directly with different
options:
# copy only (uses the committed bundles, no rebuild, no zip)
powershell -ExecutionPolicy Bypass -File .\build-chrome.ps1
# copy + zip, still using the committed bundles
powershell -ExecutionPolicy Bypass -File .\build-firefox.ps1 -Zip
# regenerate bundles, then copy + zip
powershell -ExecutionPolicy Bypass -File .\build-chrome.ps1 -Bundle -ZipChrome builds from manifest.json; Firefox builds from manifest.firefox.json
(renamed to manifest.json in the output). Build output under dist/ is
git-ignored.
background/ Service worker + blockers (safety shield, financial protection, popup hijack, stats)
common/ Shared helpers (guardian, stats store, list store)
content/ Content scripts (bad language, dark patterns, toxic comments, doomscroll, …)
data/ Blocklists and word lists (gambling, MLM, profanity, cookie rules, …)
rules/ declarativeNetRequest rulesets
options/ Settings page (options.html / .css / .js)
popup/ Toolbar popup
pages/ Blocked-site interstitial + onboarding
offscreen/ Offscreen document for the toxicity model
vendor/ Vendored Consent-O-Matic (MIT) — do not edit by hand
src/ esbuild entry points for the optional bundles
dist/ Packaged builds produced by the build scripts (git-ignored)
Chrome loads manifest.json; the Firefox packaging uses manifest.firefox.json.
build-chrome.ps1 / build-firefox.ps1 produce the per-browser bundles.
Contributions are welcome! Please read:
- Consent-O-Matic (MIT) — cookie-banner rejection rules, vendored under
vendor/. - TensorFlow.js and the toxicity model — optional on-device comment classification.
Released under the MIT License. © 2026 Alfon.