Tracker blocklists organized by purpose
Browser extension · Blocklists · Website
Curated domain blocklists organized by data-processing purpose: ads, analytics, personalization, third-party services, advanced tracking, and security. Unlike traditional blocklists that combine everything into a single file, these lists let you choose what to block based on why a domain exists, not just what it is.
Part of the ProtoConsent project. Available on the Chrome Web Store and Edge Add-ons. Blocklists can be used independently.
- Core - Ads + Analytics + Personalization + Third Parties + Advanced Tracking
- Full - Everything in Core plus phishing, scam and malware
- Per-purpose - Individual lists for granular control
Each list comes in two versions:
- Standard - Curated set with lower false-positive risk. Recommended for most users.
- Extended - Broader coverage with more domains, but higher chance of overblocking.
| Format | Standard | Extended | Use with |
|---|---|---|---|
| ABP | Link | Link | uBlock Origin, Adblock Plus, Ghostery |
| AdGuard | Link | Link | AdGuard browser extension |
| Hosts | Link | Link | Pi-hole, AdGuard Home, /etc/hosts |
| Domains | Link | Link | Plain domain list, one per line |
| JSON | Link | Link | Browser extensions, custom tools |
Everything in Core plus phishing, scam and malware domains.
| Format | Standard | Extended | Use with |
|---|---|---|---|
| ABP | Link | Link | uBlock Origin, Adblock Plus, Ghostery |
| AdGuard | Link | Link | AdGuard browser extension |
| Hosts | Link | Link | Pi-hole, AdGuard Home, /etc/hosts |
| Domains | Link | Link | Plain domain list, one per line |
| JSON | Link | Link | Browser extensions, custom tools |
For granular control, subscribe only to the purposes you want to block. Same 5 formats, same Standard/Extended versions.
| Purpose | Standard | Extended | Description |
|---|---|---|---|
| Ads | ABP | AdGuard | Hosts | Domains | JSON | ABP | AdGuard | Hosts | Domains | JSON | Advertising, remarketing and affiliation campaigns |
| Analytics | ABP | AdGuard | Hosts | Domains | JSON | ABP | AdGuard | Hosts | Domains | JSON | Measurement, statistics and usage analytics |
| Personalization | ABP | AdGuard | Hosts | Domains | JSON | ABP | AdGuard | Hosts | Domains | JSON | Content/UX personalization, recommendations, A/B testing |
| Third Parties | ABP | AdGuard | Hosts | Domains | JSON | ABP | AdGuard | Hosts | Domains | JSON | Third-party data sharing beyond the core service |
| Advanced Tracking | ABP | AdGuard | Hosts | Domains | JSON | ABP | AdGuard | Hosts | Domains | JSON | Fingerprinting and cross-site device tracking |
| Security | ABP | AdGuard | Hosts | Domains | JSON | ABP | AdGuard | Hosts | Domains | JSON | Phishing, scam, malware and malicious domains |
See LISTS.md for format details.
ProtoConsent lists may overlap with other blocklists you already use (EasyList, HaGeZi, etc.). uBlock Origin deduplicates rules automatically; AdGuard does not. If you notice performance issues in AdGuard, consider removing lists that overlap.
Most blocklists are organized by source (EasyList, HaGeZi, OISD) or by threat type (ads, malware). ProtoConsent lists are organized by data-processing purpose, aligned with how privacy regulations (GDPR, CCPA) categorize data use:
- Want analytics but not ads? Subscribe to
protoconsent_adsonly. - Running a privacy-first setup? Subscribe to all six.
- Building a consent-aware tool? Use the JSON format with purpose metadata.
The enhanced/ directory contains runtime data for the ProtoConsent browser extension: third-party blocking lists converted to JSON, cosmetic filtering rules, CMP banner signatures, CNAME tracker maps, URL parameter stripping data, regional filters, and a hotfix list for domains removed between extension releases. The extension fetches these from CDN when the user enables Enhanced Protection.
For per-file details, see LISTS.md.
All scripts are in scripts/. Requires Node.js 18+. No dependencies.
| Script | Description |
|---|---|
generate-full-lists.js |
Generates all blocklists. Outputs ABP, AdGuard, hosts, domains, and JSON to lists/. |
validate-lists.js |
Validates all inputs and outputs for correctness. Runs automatically before each commit in CI. |
convert.js |
Fetches upstream blocklists, parses them (ABP, hosts, and plain domain formats), deduplicates, and outputs JSON blocking files. |
convert-cosmetic.js |
Fetches EasyList, extracts element-hiding rules, and outputs a cosmetic JSON file. |
convert-cname.js |
Fetches AdGuard's CNAME tracker lists, merges categories, and outputs an indexed lookup map. |
convert-autoconsent.js |
Fetches Autoconsent rule files, extracts CMP selectors, and builds three output files. |
convert-tracking-params.js |
Fetches AdGuard TrackParamFilter and Dandelion Sprout, extracts $removeparam names, and outputs two JSON files. |
convert-regional.js |
Fetches EasyList and AdGuard regional filters, outputs blocking + cosmetic per region. |
generate-manifest.js |
Reads metadata from all enhanced files and outputs config/enhanced-lists.json. |
node scripts/generate-full-lists.js # generate all blocklists -> lists/
node scripts/generate-full-lists.js --dry-run # show counts without writing
node scripts/validate-lists.js # validate all generated lists
node scripts/convert.js # fetch all blocklists -> enhanced/external/
node scripts/convert.js --list hagezi_pro # fetch one blocklist
node scripts/convert-cosmetic.js # fetch EasyList cosmetic -> enhanced/external/
node scripts/convert-cname.js # fetch CNAME list -> enhanced/external/
node scripts/convert-autoconsent.js # build CMP signatures -> enhanced/protoconsent/
node scripts/convert-tracking-params.js # fetch tracking params -> enhanced/external/
node scripts/convert-regional.js # fetch all regional -> enhanced/regional/
node scripts/convert-regional.js --region es # fetch one region
node scripts/generate-manifest.js # rebuild config/enhanced-lists.jsonGPL-3.0-or-later - see LICENSE.
The generated JSON files contain data derived from upstream sources under their respective licenses (see LISTS.md and CREDITS.md). CMP detection and hiding selectors from Autoconsent are used under the MPL-2.0 license.
