GitHub - alex-w-developer/GetBlocked: Lightweight, local-only MV3 Chrome extension for reducing common third-party web tracking.
Pangram verdict · v3.3
We believe that this document is primarily AI-generated with some human-written content
AI likelihood · overall
AIArticle text · 698 words · 3 segments analyzed
Cleaner pages. Fewer trackers. Local-only. GetBlocked! is a lightweight, local-only Chrome extension that helps reduce common third-party website tracking by blocking known tracker requests, cleaning tracking links, and explaining tracking attempts. It is built as a small, inspectable Manifest V3 project for people who want a friendly privacy tool and for contributors who want quick, useful pull requests. What GetBlocked! Does
Blocks a curated starter list of known third-party tracker domains using Chrome declarativeNetRequest. Cleans common tracking URL parameters such as utm_source, fbclid, gclid, dclid, mc_cid, and similar campaign IDs. Detects visible tracking attempts such as pixels, suspicious scripts, tracking iframes, and tracking links. Shows a compact popup report with:
Blocked on this page Tracking links cleaned Visible tracking attempts detected Detected categories
Keeps report data local in chrome.storage.local.
What GetBlocked! Can Block GetBlocked! blocks a curated starter list of known third-party tracker domains and tracking URL parameters. Current coverage includes:
Analytics trackers Ad and retargeting trackers Social media pixels Session replay and heatmap tools Affiliate and attribution trackers Email marketing trackers Tracking URL parameters
The tracker list is intentionally conservative. Rules are limited to third-party requests to reduce website breakage. What GetBlocked! Cannot Do
It does not block every tracker. It does not make users anonymous. It does not stop tracking after logging into an account. It does not stop server-side tracking. It does not fully prevent advanced fingerprinting. It is not meant to replace full-featured ad blockers.
How GetBlocked! Is Different GetBlocked! is:
Lightweight: small ruleset, simple popup, minimal moving parts. Local-only: no external analytics, telemetry, or remote logging. Open source: the rules, popup, and generation scripts are inspectable. Educational: categories and wording are designed to explain common tracking clearly. Beginner-friendly: small PRs can improve the tracker catalog, docs, tests, or UI. Not a replacement for full ad blockers: it focuses on common trackers and clear explanations.
Why All Data Stays Local GetBlocked! does not send browsing data to any server. The extension uses:
declarativeNetRequest for local Chrome-managed request blocking.
chrome.storage.local for page report data. A content script that scans the current page locally for visible tracking signals.
There are no external analytics, telemetry endpoints, remote logs, or bundled remote assets in the extension. Install Locally In Chrome
Download or clone this repository. Open chrome://extensions. Turn on Developer mode. Choose Load unpacked. Select the GetBlocked! project folder. Pin GetBlocked! and open the popup on normal web pages.
The production build avoids debug-only DNR feedback permissions. The popup uses local page signals plus Chrome's production DNR action-count badge as a page-level estimate, while blocking and URL-cleaning rules remain enforced by MV3 declarativeNetRequest. Contribute In 10 Minutes The easiest way to contribute is to add one tracker domain.
Edit shared/tracker-catalog.json. Add one fixture in test/tracker-test-set.json. Run npm run generate:rules. Run npm run test:evidence. Open a PR.
PRs are welcome for tracker-domain additions, broken-site tests, UI polish, docs, and test improvements. You do not need to ask before opening a small, focused PR. How The Tracker Catalog Works Tracker domains are maintained in shared/tracker-catalog.json. Each tracker entry includes:
domain category label notes
Tracking URL parameters are maintained in shared/tracking-params.json. After changing the catalog or tracking parameter list, regenerate the derived extension files: npm run generate:rules This updates:
rules/rules.json, used by Chrome declarativeNetRequest. shared/config.js, used by the content script and popup category detection.
Do not edit generated rules/config by hand unless you also update the generator or source catalog. Run Tests Regenerate rules: npm run generate:rules Run the local ruleset evidence test: npm run test:evidence Useful syntax checks: node --check background.js node --check content-script.js node --check popup/popup.js node --check scripts/generate-rules.mjs node --check scripts/evaluate-test-set.mjs Useful JSON checks: node -e "for (const f of
['manifest.json','rules/rules.json','shared/tracker-catalog.json','shared/tracking-params.json','test/tracker-test-set.json','package.json']) JSON.parse(require('fs').readFileSync(f,'utf8')); console.log('JSON OK')" Manual Browser Check After loading the unpacked extension, start a simple local server from this folder: python -m http.server 8080 Then open: http://localhost:8080/test/manual-test.html?utm_source=demo&utm_medium=test&fbclid=manual
With GetBlocked! enabled, the tracking parameters should be removed from the page URL and the popup should show page-level tracker activity. For a before/after check, compare the browser Network panel with the extension disabled and then enabled. Contributor Links
Contributing guide Adding trackers Broken sites Development guide Good first issues Labels guide Launch copy Security policy
License MIT License. See LICENSE.