Primary Block Lists
# The Block List Project
**Curated, community-maintained domain blocklists for network-level content filtering**
[](https://github.com/blocklistproject/Lists/actions)
[](https://www.python.org/downloads/)
[](LICENSE)
[](https://github.com/blocklistproject/Lists/issues)
[](https://github.com/blocklistproject/Lists/graphs/contributors)
[Discord](https://discord.com/invite/x9KeVQggkc) β’ [Patreon](https://www.patreon.com/bePatron?u=8892646) β’ [Ko-fi](https://ko-fi.com/P5P521OPP) β’ [Documentation](docs/)
The Block List Project provides free, open-source domain blocklists for network-level content filtering. Our curated lists help you control what gets blocked on your network β from ads and trackers to malware and adult content.
Choose the appropriate format for your software:
| Software | Format to Use | Example |
|---|---|---|
| Hosts file | Original | 0.0.0.0 example.com |
| Unbound, pfBlockerNG | No IP (domains) | example.com |
| dnsmasq | DNSMASQ | server=/example.com/ |
| AdGuard, uBlock Origin | AdGuard | ||example.com^ |
| List | Original/Pi-Hole Native | No IP | DNSMASQ | AdGuard | Description |
|---|---|---|---|---|---|
| Abuse | Link | Link | Link | Link | Deceptive/abusive sites |
| Ads | Link | Link | Link | Link | Ad servers |
| Crypto | Link | Link | Link | Link | Cryptojacking/crypto scams |
| Drugs | Link | Link | Link | Link | Illegal drug sites |
| Link | Link | Link | Link | Facebook/Meta services | |
| Fraud | Link | Link | Link | Link | Fraud sites |
| Gambling | Link | Link | Link | Link | Gambling sites |
| Malware | Link | Link | Link | Link | Malware hosts |
| Phishing | Link | Link | Link | Link | Phishing sites |
| Piracy | Link | Link | Link | Link | Piracy/illegal downloads |
| Porn | Link | Link | Link | Link | Adult content |
| Ransomware | Link | Link | Link | Link | Ransomware C2/distribution |
| Redirect | Link | Link | Link | Link | Malicious redirects |
| Scam | Link | Link | Link | Link | Scam sites |
| TikTok | Link | Link | Link | Link | TikTok domains |
| Torrent | Link | Link | Link | Link | Torrent sites |
| Tracking | Link | Link | Link | Link | Tracking/analytics |
| Link | Link | Link | Link | Twitter/X domains |
| List | Original | No IP | DNSMASQ | AdGuard | Description |
|---|---|---|---|---|---|
| Basic | Link | Link | Link | Link | Starter protection list |
| Smart TV | Link | Link | Link | Link | Smart TV telemetry |
| Vaping | Link | Link | Link | Link | Vaping/e-cigarette sites |
| Link | Link | Link | Link | WhatsApp domains |
π Note about the βEverythingβ List
The combined βeverythingβ list (which merged all stable lists) has been removed as of July 2026 due to exceeding GitHubβs 100MB file size limit. The files grew too large for the repository:
everything.txt: 125 MBeverything-ags.txt: 102 MBeverything-nl.txt: 125 MBeverything-dnsmasq.txt: 130 MBAlternative: To achieve similar coverage, subscribe to multiple individual lists in your DNS solution. Most tools support multiple blocklist subscriptions and will automatically merge them.
All lists are available in four formats, automatically generated from a single source:
| Format | Use Case | Syntax | File Extension |
|---|---|---|---|
| Original (hosts) | Pi-hole, hosts file, RPZ | 0.0.0.0 example.com |
.txt |
| No IP (domains) | Unbound, routers, simple lists | example.com |
-nl.txt |
| DNSMASQ | dnsmasq DNS server | server=/example.com/ |
-dnsmasq.txt |
| AdGuard | AdGuard Home, browser extensions | ||example.com^ |
-ags.txt |
The project automatically syncs with 14 trusted upstream blocklists across 8 categories:
Current Sources: ShadowWhisperer, zachlagden, Hagezi, and more.
See UPSTREAM_MONITORING.md for configuration details.
Every change triggers:
We welcome and encourage community contributions! There are several ways to help:
Add a malicious domain:
Remove a false positive:
Important: Only edit source .txt files in the root directory. Files in adguard/, alt-version/, and dnsmasq-version/ are auto-generated β never edit these directly.
# 1. Fork and clone
git clone https://github.com/YOUR_USERNAME/Lists.git
cd Lists
# 2. Install dev dependencies
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pre-commit install
# 3. Create feature branch
git checkout -b add-malicious-domain
# 4. Edit the source file
echo "0.0.0.0 badads.example.com" >> ads.txt
# 5. Test and validate
pytest
python build.py --validate
# 6. Commit and push
git add ads.txt
git commit -m "Add badads.example.com to ads list"
git push origin add-malicious-domain
# 7. Open Pull Request on GitHub
Our CI automatically validates PRs with:
See CONTRIBUTING.md for detailed guidelines.
# Clone and setup
git clone https://github.com/blocklistproject/Lists.git
cd Lists
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install with dev dependencies
pip install -e ".[dev]"
# Setup pre-commit hooks
pre-commit install
# Verify installation
pytest
# Build all lists
python build.py
# Build specific list(s)
python build.py --list ads
python build.py --list ads --list malware --list phishing
# Validate without building
python build.py --dry-run --validate
# Build with verbose output
python build.py --verbose
We use modern Python tooling for code quality:
# Run tests with coverage
pytest -v --cov=src --cov-report=html
# Lint and format (Ruff - 10-100x faster than flake8/black)
ruff check . # Check for issues
ruff check . --fix # Auto-fix issues
ruff format . # Format code
# Type checking
mypy src/
# Run all pre-commit hooks
pre-commit run --all-files
Pre-commit hooks automatically run on every commit:
Optional configuration for custom deployments:
# Project paths (defaults to current directory)
export PROJECT_ROOT=/path/to/Lists
export WORKSPACE_DIR=/path/to/Lists
# Temporary files location (defaults to /tmp)
export TEMP_DIR=/custom/tmp
# GitHub API access (for scripts that fetch issues)
export GITHUB_TOKEN=your_github_token_here
Lists/
βββ *.txt # Source blocklists (hosts format) - EDIT THESE
βββ *.ip # IP-based blocklists
βββ adguard/ # AdGuard format (auto-generated)
βββ alt-version/ # Domain-only format (auto-generated)
βββ dnsmasq-version/ # dnsmasq format (auto-generated)
βββ build.py # CLI build tool
βββ pyproject.toml # Project configuration
βββ requirements.txt # Python dependencies
βββ .pre-commit-config.yaml # Pre-commit hooks
β
βββ config/
β βββ lists.yml # List definitions and upstream sources
β
βββ src/ # Python package
β βββ config.py # Configuration and path management
β βββ logger.py # Structured logging
β βββ exceptions.py # Custom exception types
β βββ domain_lookup.py # Unified domain search
β βββ normalize.py # Format parsing and normalization
β βββ merge.py # Deduplication logic
β βββ validate.py # Domain validation and TLD checking
β βββ format.py # Output format generators
β βββ pipeline.py # Build orchestration
β
βββ scripts/ # Utility scripts
β βββ monitor_upstream.py # Upstream source monitoring
β βββ remove_domain.py # Domain removal automation
β βββ review_issues_batch.py # Issue triage automation
β βββ fetch_issues.py # GitHub issue fetching
β βββ process_maintenance.py # Dead domain checking
β βββ ... # Additional utilities
β
βββ tests/ # Test suite (151+ tests)
β βββ test_config.py
β βββ test_normalize.py
β βββ test_validate.py
β βββ test_merge.py
β βββ test_format.py
β βββ test_pipeline.py
β
βββ .github/workflows/ # CI/CD automation
βββ build.yml # Build and test pipeline
βββ upstream-monitor.yml # Upstream source monitoring
βββ triage.yml # Automatic issue triage
βββ scheduled-triage.yml # Daily issue processing
βββ stale.yml # Stale issue cleanup
βββ weekly-report.yml # Weekly statistics
βββ dead-domains.yml # Dead domain detection
| Module | Purpose |
|---|---|
src/config.py |
Environment-aware configuration, YAML loading, path management |
src/validate.py |
Domain syntax validation, TLD verification, critical domain protection |
src/pipeline.py |
Build orchestration, coordinates all build steps |
src/domain_lookup.py |
Unified domain search across all list formats |
src/logger.py |
Structured logging with console and file output |
src/exceptions.py |
Custom exception hierarchy (ConfigurationError, ValidationError, etc.) |
Located in scripts/ directory:
| Script | Description |
|---|---|
monitor_upstream.py |
Monitor upstream sources and create PRs for updates |
remove_domain.py |
Automated domain removal with exclusion support |
review_issues_batch.py |
Automated issue triage and batch processing |
fetch_issues.py |
Fetch and cache GitHub issues |
process_maintenance.py |
Scan for and remove dead domains |
Run with: python scripts/<script-name>.py
Import errors:
pip install -e ".[dev]" --force-reinstall
Pre-commit hooks not working:
pre-commit clean
pre-commit install
pre-commit autoupdate
Test failures:
pytest tests/test_validate.py -v # Run specific test
pytest -vv --tb=long # Verbose with full tracebacks
pytest --lf # Re-run last failed tests
Build errors:
python build.py --validate --verbose # Validate with detailed output
python build.py --list <name> --verbose # Build specific list with logging
We rebuilt the entire project infrastructure from the ground up:
For Users:
For Contributors:
Technical Improvements:
See docs/Optimize.md for the full technical deep dive.
Special thanks to Cloud 4 SURE for helping cover infrastructure costs.
Support the project:
This project is licensed under the Unlicense β completely free and open source with no restrictions.
These files are provided βAS ISβ, without warranty of any kind, express or implied. In no event shall the authors or copyright holders be liable for any claim, damages or other liability arising from the use of these files.
All trademarks are the property of their respective owners.