A tiny ESP32-C3 board can act as a DNS filter for your home. When any device asks for a known ad or tracking domain, the board answers "nowhere" (0.0.0.0) and the ad doesn't load. Everything else passes through as normal. This guide gives you the project link, the parts list and the full setup.
The code is esp32-c3-adblock, an MIT-licensed project by Zed (GitHub: M-Abozaid), whom Tom's Hardware describes as an Egyptian full-stack developer who goes by ZedAxis. It's free for anyone to use.
What you need
An ESP32-C3 board with 4 MB flash, such as the ESP32-C3 SuperMini. It doesn't need PSRAM. Indian stores list it at around Rs 240 including GST (for example Probots). Prices and stock change.
A stable 5V USB power source. The README warns that cheap USB-C adapters can brown out the radio. A USB port on your router or a decent phone charger works.
A USB data cable and a computer.
PlatformIO, free (the VS Code extension or the command-line tool). Use a current version. The old distro package (4.3.4) fails.
Python 3, to build the blocklist.
Access to your router's settings, to change DNS.
Step by step
Get the code.
git clone https://github.com/M-Abozaid/esp32-c3-adblock.git
cd esp32-c3-adblockSet your passwords. Copy the example secrets file:
cp src/secrets.example.h src/secrets.hOpen `src/secrets.h` and set real values for `WEB_USER`, `WEB_PASS` and `OTA_PASS`. Wi-Fi details are optional here. Don't keep the `CHANGE_ME_...` placeholders, because they're public.
Build the blocklist. The default list combines StevenBlack base and Hagezi Light, about 100,000 domains, chosen to stay safe for WhatsApp and social apps.
python3 tools/build_blocklist.py data/blocklist.binFlash the firmware and the blocklist. Plug in the board, then run:
pio run -t upload
pio run -t uploadfs
pio device monitorThe last command shows the boot log, so you can check it started.
Connect it to your Wi-Fi. If the board can't join a network, it opens an open hotspot named
C3-AdBlock-XXXX. Join it from your phone, pick your home Wi-Fi and enter the password.Open the dashboard. Go to
http://c3adblock.localon your network. Anyone can view it, but changes need the username and password from step 2. You can see allowed and blocked counts, block devices and add custom domains.Test it on one device first. Find the board's IP address in your router's client list. Then check a known ad domain:
nslookup doubleclick.net <board-ip>On Mac or Linux you can use `dig @<board-ip> doubleclick.net`. A blocked domain returns `0.0.0.0`.
Point your network at it. Set one device's DNS to the board's IP and use it for a day. If everything works, set the board's IP as the DNS server in your router's DHCP settings so every device picks it up. Write down your old DNS settings so you can switch back. The README also suggests running the board as a secondary resolver behind your main DNS.
Keep the list fresh. A prebuilt list is rebuilt weekly, and the device can pull updates from a URL on a schedule.
Good to know
It won't block every ad. DNS blocking works on domain names. When a site serves ads from the same domain as its content, as YouTube does, a DNS filter can't separate them. The caption on the original reel said the same.
Some devices may skip it. A device or browser that uses its own encrypted DNS setting won't use the board until you change that setting.
Capacity: about 250,000 domains if you keep over-the-air firmware updates, or about 537,000 if you give those up. At 537,000 there is about one hash collision, which means one domain may be blocked by mistake.
Security is basic. The dashboard uses plain HTTP and Basic Auth, and the setup hotspot is open. Keep it on a trusted home network.
It runs warm. The board sits around 45 to 55 °C, so don't seal it in a closed box. A 3D-printable case is in the repo's
hardware/folder.There's no one-click web flasher yet. It's planned, but for now you need PlatformIO.
Tom's Hardware calls it a lightweight option and not a full replacement for Pi-hole or AdGuard Home, which have richer logs and statistics.
Sources
Found this useful? Follow @kevinsingh.me on Instagram for a new AI tool every day, and subscribe so you don't miss the next one.

