M-Abozaid/esp32-c3-adblock

Pi-hole-class DNS ad-blocker on a $2 ESP32-C3 (no PSRAM): 537k domains as 40-bit FNV-1a hashes in flash, binary-searched. UDP DNS sinkhole + web dashboard....

View on GitHub ↗Jump to charts ↓

M-Abozaid/esp32-c3-adblock has 3k+ stars and 300+ forks on GitHub, is written in C++, and was last pushed on Oct 6, 2026. Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 13 minutes ago
Added to GitGenius on October 13th, 2026
Created on June 19th, 2026
Open Issues & Pull Requests: 30 (+0)
GitHub issues: Enabled
Number of forks: 342
Total Stargazers: 3,236 (+1)
Total Subscribers: 19 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 4.6 days
Mean response time: 13.6 days
90th percentile: 51.2 days
Tracked items: 13

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 13
New in 7 days: 5
Closed in 7 days: 1
Avg open age: 25 days
Stale 30+ days: 0
Stale 90+ days: 0

Recent activity

Opened in 7 days: 3
Closed in 7 days: 1
Comments in 7 days: 2
Events in 7 days: 3

Top labels

No label distribution available yet.

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

esp32-c3-adblock is a DNS ad-blocker that runs on a $2 ESP32-C3 microcontroller with no external RAM required.

The project solves the problem of fitting a large ad-blocking domain list into a tiny, cheap device by storing domains as sorted 40-bit hashes in flash memory instead of keeping domain strings in RAM. A binary search across these hashes retrieves matches in roughly 10 milliseconds while using only about 50 kilobytes of RAM. This approach allows the device to block over 500,000 domains using less than 1 megabyte of flash storage, whereas conventional approaches that store domain strings in RAM would require expensive external memory modules.

The tool suits anyone building a low-cost, low-power DNS sinkhole for home networks or IoT deployments. It works best on ESP32-C3 boards, though the same hash-in-flash technique also compiles for classic ESP32 boards with 4 MB of flash. The project is designed to plug directly into a router's USB port via a USB-C dongle, requiring only a stable power source. After initial flashing via USB, both firmware and blocklists update over WiFi. Developers can supply their own blocklists and configure the device through a web dashboard.

The codebase is written in C++ and built with PlatformIO. The project has been featured in multiple technology publications and includes community contributions such as support for classic ESP32 boards beyond the primary C3 target.