Send ads nowhere.

StevenBlock is a systemless ad blocker for rooted Android. It points ad, tracker and malware domains at 0.0.0.0 through one clean hosts file, so they’re blocked system-wide with no VPN and no background service.

Free and open source. Install the zip from your root manager, reboot, done.

Works with
  • Magisk
  • KernelSU
  • KernelSU Next
  • SukiSU
  • APatch

Blocked before the first byte

Before an app connects to a server, it asks Android for that server’s address, and Android checks the hosts file first. StevenBlock fills the file with known ad, tracker and malware domains, each pointed at 0.0.0.0, an address that leads nowhere. Those requests fail instantly. Everything else loads as usual.

📱 An app asks for pagead2.googlesyndication.com
📄 Listed in the hosts file 0.0.0.0 pagead2.googlesyndication.com
⛔ Goes nowhere The ad never loads.
📱 An app asks for en.wikipedia.org
📄 Not in the hosts file Android moves on to DNS.
✅ Loads normally The page opens as usual.
  • 🧱 SystemlessThe file is mounted over /system/etc/hosts at boot. Your system partition is never modified, so removing StevenBlock brings the original back.
  • 🔋 Nothing left runningThere’s no VPN and no background service. Android reads the file by itself, so nothing sits in memory draining your battery.
  • 📶 Your VPN slot stays freeStevenBlock doesn’t occupy Android’s VPN slot, so you can keep using any VPN you like.

Small footprint, complete control

Blocking happens in a single static file. Lists, rules, updates and checks live in a WebUI you open only when you need it.

A WebUI made for your phone

Switch lists, add rules, update and check status from a fast, polished interface with dark and light themes. It opens right inside KernelSU, KernelSU Next, SukiSU and APatch, and from the Action button on Magisk.

  • 🟢 Active
  • 🟡 Reboot required
  • 🔴 Disabled

Your own domain rules

Allow a domain your list blocks by mistake, or block one it misses. Paste a full URL and the domain is extracted for you.

  • ✅ shop.example.com
  • ⛔ tracker.example.net

Safe, atomic updates

Downloads are validated before they touch your hosts file, backups are kept, and the new file is swapped in a single step. See how updates work

Knows when it’s applied

StevenBlock compares the live /system/etc/hosts with its own file and tells you plainly: applied, waiting for a reboot, overridden by another module, or not active.

With or without a metamodule

On KernelSU, SukiSU and APatch, StevenBlock checks the mount at every boot and mounts its hosts file itself if your root manager didn’t.

Hands-free install

No prompts, no volume keys. The installer detects your root manager, warns about conflicting hosts modules and sets up the default list.

Updates only when there’s something new

Update Current List checks the source first and downloads only when the list actually changed. When it does, you get live progress with size, speed and a cancel button.

Pick your strength

Every list comes straight from its official source and is cleaned before it’s installed. Start with the default, and step up only if you want more.

StevenBlack Main

🟢 Balanced

The classic unified hosts list for ads and malware, with very few false positives. Battle-tested and safe for everyday use.

👥 Best for everyone✅ Default

hBlock

🔵 Mixed

Merges many reputable public blocklists into one broad list, for wide coverage of ads, trackers and malware in a single file.

🌐 Best for broad, all-in-one coverage

HaGeZi, from gentle to strict

Five tiers of one well-maintained project. Each step blocks more than the one before it.

  1. HaGeZi Light

    🟢 Basic

    Basic protection from ads, tracking and telemetry, built to break nothing.

  2. HaGeZi Normal

    🔵 All-round

    All-round protection from ads, tracking, phishing, malware and scams.

  3. HaGeZi Pro

    🟡 Extended

    Extended protection with many more trackers. May need an allow rule now and then.

  4. HaGeZi Pro++

    🟠 Aggressive

    Aggressive blocking for experienced users. Some legitimate sites or app features may break.

  5. HaGeZi Ultimate

    🔴 Maximum

    The most aggressive option. Can restrict app and website features.

📊 The WebUI shows each list’s live entry count and last-update date, read straight from the list’s own header.

⚠️ Pro++ and Ultimate are strict on purpose. If a site or app breaks, allow the domain in Domain Rules or step down a tier.

Everything in one place

The WebUI opens right inside KernelSU, KernelSU Next, SukiSU and APatch. On Magisk, the Action button opens it in your browser through a private local server.

📋 Pick a list, watch it install

  • 🎚️ Every card shows the list’s strength, live entry count and last-update date.
  • ⬇️ Progress follows each step, from download to install, with size, speed and a cancel button.
  • 🔁 Close the WebUI mid-download and come back later. The task keeps running and its progress is still there.

🧩 Allow or block a single domain

  • 🔗 Paste a full URL and StevenBlock extracts the domain for you.
  • 🎯 Rules match the exact domain only, because hosts files don’t support wildcards.
  • ♻️ Your rules stay in place when you switch lists or update.

⚡ One tap for the essentials

  • 🔄 Update Current List downloads only when the source changed.
  • 📊 Check Status shows your list, rules, root manager and whether the hosts file is really applied.
  • ⏻ Disable Blocker pauses blocking but keeps your list and rules for later.

📜 Logs that explain themselves

  • 🕒 Every action is logged with a timestamp and a level: INFO, WARN or ERROR.
  • 💬 Failures are described in plain words, never as raw error output.
  • 🧹 Clear the log whenever you like. Only recent entries are kept anyway.

A bad download never touches your hosts file

Every list switch and update runs through the same careful pipeline. If any step fails, nothing changes, and you’re told exactly why.

  1. 1

    ⬇️ Download

    Straight from the list’s official source, with timeouts and automatic retries. You can cancel at any point.

  2. 2

    🔍 Validate

    The file can’t be empty, an error page or suspiciously small, and its size has to match what the server announced.

  3. 3

    🧹 Optimize

    One fast pass strips comments and duplicates, drops invalid domains and points every entry at 0.0.0.0.

  4. 4

    💾 Back up

    Your current hosts file is copied aside first, and the most recent backups are kept.

  5. 5

    ⚛️ Swap

    The new file is written next to the old one and moved into place in one step, so a half-written file can’t happen.

  6. 6

    ✅ Verify

    The result must contain the localhost entries and exactly the number of domains expected.

↩️ Something failed? The previous hosts file is restored automatically, and the reason appears in the WebUI and the log.

How it compares

Every way of blocking ads on Android has trade-offs. Here’s an honest look at the common approaches.

🛡️ StevenBlock

Systemless hosts file

System-wide
✅ Apps using Android’s resolver
VPN slot
✅ Stays free
Battery
✅ No background service
Customization
✅ Curated lists and domain rules
Root
⚠️ Required

🔐 VPN-based blockers

Local VPN that filters traffic

System-wide
✅ Traffic routed through the VPN
VPN slot
❌ Occupied
Battery
⚠️ A service runs all the time
Customization
✅ Usually extensive
Root
✅ Not required

🌐 Private DNS

A filtering DNS provider

System-wide
✅ Apps using Android’s resolver
VPN slot
✅ Stays free
Battery
✅ Negligible
Customization
⚠️ Depends on the provider
Root
✅ Not required

🧭 Browser extensions

Blocking inside one browser

System-wide
❌ Only inside that browser
VPN slot
✅ Stays free
Battery
✅ Minimal
Customization
✅ Extensive, including cosmetic filtering
Root
✅ Not required

💡 A hosts file blocks whole domains. It can’t hide page elements or block ads served from the same domain as the content, so a browser with its own blocker makes a great companion to StevenBlock.

Up and running in a minute

One zip, one reboot. The installer handles the rest on its own.

  1. 1

    Download the zip

    The download button always gives you the latest StevenBlock.zip.

  2. 2

    Install it from your root manager

    Open Modules, tap Install from storage and pick the zip.

  3. 3

    Let it set itself up

    It detects your root manager, warns about conflicting hosts modules, cleans up older versions and downloads the default list.

  4. 4

    Reboot

    Your new hosts file is active after the restart.

  5. 5

    Open the WebUI

    Tap WebUI on the StevenBlock card, or Action on Magisk.

🌐 No internet during install? StevenBlock finishes anyway and downloads your list after the next boot.

Private by design

An ad blocker shouldn’t become a new way to watch you. StevenBlock keeps everything on your device.

  • 🏠 Local onlyThe browser WebUI is served on 127.0.0.1, never on your network, and only while you use it.
  • 🔑 Token-protectedEvery session gets a fresh random token. Requests without it are rejected, so other apps can’t control StevenBlock.
  • 🧱 Locked-down backendThe WebUI can only run a fixed set of commands, and every input is validated again on the device.
  • 📵 Zero telemetryNo analytics, no accounts, nothing sent anywhere. The only network traffic goes to the official blocklist sources.
  • 🔤 Nothing from third partiesFonts, icons and code ship inside the module. The WebUI makes no outside requests.
  • 🎯 Lists can only blockEvery entry is rewritten to 0.0.0.0, so even a tampered list can’t redirect you anywhere.

Questions, answered

The things people ask most often. Still stuck? The community is happy to help.

✈️ Ask in the Telegram group
Does StevenBlock work without root?

No. It needs Magisk, KernelSU, KernelSU Next, SukiSU or APatch, because it replaces the system hosts file. Without root, Android’s Private DNS or a VPN-based blocker are the usual alternatives.

Can I use it together with AdAway or Magisk’s Systemless hosts?

Please don’t. Only one module can provide /system/etc/hosts, so two hosts-based blockers fight over the same file. Turn off Systemless hosts in Magisk and don’t use AdAway’s root mode alongside StevenBlock. The installer and Check Status both warn you when they spot a conflict.

Ads still show in Chrome on KernelSU, SukiSU or APatch. Why?

These managers can hide module changes from apps that aren’t granted root, through an option called umount modules. If it’s active for your browser, the browser sees the original hosts file. Open your root manager, go to Superuser, select the browser, choose Custom and uncheck umount modules. Then fully close and reopen the browser.

Do browsers with Secure DNS bypass the hosts file?

They can. Chromium-based browsers have a Secure DNS option that resolves domains on its own instead of through Android, which can skip the hosts file. In Chrome, open Settings, then Privacy and security, and turn off Use secure DNS. Android’s own Private DNS setting doesn’t bypass the hosts file, so you can keep it.

Why does the YouTube app still show video ads?

Those ads come from the same servers as the videos themselves. A hosts file blocks whole domains, so blocking them would block the videos too. Every hosts-based blocker has this limit. For ad-free YouTube, use a client with built-in ad blocking. StevenBlock keeps handling everything else.

Why do changes need a reboot?

The hosts file is mounted over /system/etc/hosts at boot. StevenBlock swaps in a complete new file in one step, but the mount keeps showing the previous one until the next boot. Your current protection keeps working in the meantime, and Check Status shows when the new file is applied.

A website or app broke. What now?

First, disable the blocker, reboot and try again to confirm StevenBlock is the cause. If it is, find the blocked domain and add it as an Allow rule, remembering that rules match the exact domain only. On Pro++ or Ultimate, stepping down a tier is often the quickest fix.

Do I need a metamodule on KernelSU, SukiSU or APatch?

No. Recent releases of these managers mount module files through a metamodule, and some metamodules mount a copy made during installation. StevenBlock checks at every boot that /system/etc/hosts really is its current file, and mounts it directly when it isn’t.

Will it drain my battery?

No service runs for blocking. It’s a static file that Android reads on its own. Downloading and processing a list takes a few seconds and only happens when you switch or update, and the browser WebUI server stops by itself when you’re done.

How do I uninstall it?

Remove StevenBlock in your root manager and reboot. It deletes its own data on the way out, and because /system was never modified, your original hosts file is back after the restart.

Join the community

Questions, list suggestions or a site that broke? The Telegram group is the fastest place to get help and hear about updates.