Skip to content

zachlagden/Zachs-Lists

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zach's Lists

Custom blocklists. Built fast. Updated automatically.

License Stars Last Commit Issues

React TypeScript Rust Flask MongoDB Tailwind

Try it live · Documentation · Report Bug · Request Feature


What is Zach's Lists?

A modern blocklist aggregator that lets you build your own curated DNS blocklists from multiple sources. Stop using one-size-fits-all blocklists — create exactly what you need.

  • Combine 40+ blocklist sources into one unified list
  • Filter with smart whitelisting (regex, wildcards, subdomains)
  • Export in hosts, plain text, or Adblock format
  • Automate with weekly rebuilds that keep your lists fresh

Powered by a Rust backend that processes millions of domains in seconds.


Features

Feature Description
Custom Curation Pick and choose from dozens of blocklist sources to build your perfect list
Rust-Powered Parallel downloads and processing means lists built in seconds, not minutes
Auto Updates Set it and forget it — weekly automatic rebuilds keep everything fresh
Multi-Format Export as hosts file, plain text, or Adblock syntax for any blocker
Smart Whitelisting Powerful pattern matching: exact, wildcard, subdomain, and full regex
Real-time Progress Watch your list build live with WebSocket-powered progress tracking
Public Lists Browse and use community-curated blocklists, or share your own
GitHub Login One-click authentication — no passwords to remember

Quick Start

Getting started takes less than a minute:

1. Sign in

Head to lists.zachlagden.uk and sign in with your GitHub account.

2. Configure

Add your blocklist sources (one URL per line) and set up your whitelist patterns.

3. Build & Use

Hit "Build Now" and grab your personalized blocklist URL:

# Pi-hole / AdGuard Home (hosts format)
https://lists.zachlagden.uk/u/yourname/all_domains.txt?format=hosts

# uBlock Origin / AdBlock Plus
https://lists.zachlagden.uk/u/yourname/all_domains.txt?format=adblock

# Plain domain list
https://lists.zachlagden.uk/u/yourname/all_domains.txt?format=plain

That's it. Your blocklist will auto-update weekly.


How It Works

 +------------+      +------------+      +-----------+      +-------------+
 |  Sources   |  ->  |  Download  |  ->  | Whitelist |  ->  |  Generate   |
 | (40+ URLs) |      | (Parallel) |      |  (Filter) |      | (3 formats) |
 +------------+      +------------+      +-----------+      +-------------+

1. Sources — You define which blocklists to combine. Popular choices, niche lists, whatever you need.

2. Download — The Rust worker fetches all sources in parallel (10 concurrent downloads). Smart caching means unchanged sources aren't re-downloaded.

3. Whitelist — Your whitelist patterns filter out false positives. Support for exact matches, *.wildcard.com, @@subdomain matching, and /regex/ patterns.

4. Generate — Deduplicated domains are output in three formats: hosts file (Pi-hole native), plain text, and Adblock syntax.


Why Zach's Lists?

Feature Zach's Lists Traditional Lists DIY Scripts
Custom sources
Whitelist filtering ⚠️
Auto updates ⚠️
Real-time progress
Multiple formats ⚠️ ⚠️
Performance N/A ⚠️
Web UI

The bottom line: Traditional blocklists give you no control. DIY scripts require maintenance. Zach's Lists gives you the flexibility of custom lists with the convenience of a managed service.


Tech Stack

Frontend

  • React 18 + TypeScript — Type-safe, component-based UI
  • Tailwind CSS — Custom cyberpunk-inspired theme
  • Socket.io — Real-time job progress updates
  • Framer Motion — Smooth animations and transitions

Backend

  • Flask 3 + MongoDB — Flexible REST API with document storage
  • APScheduler — Automated weekly rebuilds
  • GitHub OAuth — Secure, passwordless authentication
  • GeoIP2 — Analytics and geographic insights

Worker

  • Rust + Tokio — Async runtime for maximum performance
  • 10 concurrent downloads — Parallel source fetching
  • 7-day intelligent caching — Only download what's changed
  • ~4M domains processed in seconds

Compatibility

Works with any DNS blocker or browser extension that accepts blocklists:

Platform Formats
Pi-hole hosts, plain
AdGuard Home hosts, plain, adblock
uBlock Origin adblock
AdBlock Plus adblock
Blocky plain
NextDNS plain
ControlD plain

If it accepts a URL to a blocklist, it'll work with Zach's Lists.


Screenshots

📸 Click to expand

Dashboard

Your command center — usage stats, recent jobs, and quick actions

Configuration Editor

Add sources, configure whitelists, and trigger builds

Real-time Job Progress

Watch your list build live with per-source progress

Browse Public Lists

Discover community-curated blocklists


Star History

Star History Chart

Self-Hosting

Want to run your own instance? Full deployment instructions (Docker + manual) are available in the documentation:

Self-Hosting Guide →


Support

If Zach's Lists helps keep your network clean, consider supporting development:

Sponsor on GitHub

Your support helps cover hosting costs and keeps the project actively maintained.


License

This project is licensed under the MIT License — see the LICENSE file for details.


Website · Docs · Report Bug · Request Feature

Made with ☕ and 🦀 by Zach Lagden

About

Self-hosted blocklist aggregator and generator with a Rust-powered processing engine

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published