BlockAds

BlockAds is a free, open-source ad blocker for Android.

It blocks ads, trackers, and malware system-wide using local VPN-based DNS filtering — no root required, no data collection.

Built with Jetpack Compose and Material 3 for a modern, premium experience.





Download

Get it on F-Droid

Get it at IzzyOnDroid
--- ## Screenshots
--- ## Features * Dual Routing Modes: System-wide ad blocking via VPN (no root needed) OR Root Proxy Mode (via iptables) * Privacy-first Optional Crash Reporting & Manual Local Logs Export * Comprehensive Onboarding Flow (Permissions, Battery Optimization, Opt-in telemetry) * WireGuard Profile Import * HTTPS Filtering with userspace TCP/IP stack — per-app MITM, cosmetic CSS, JS scriptlets * CA cert install verification (auto-refresh after returning from Settings) * 284-domain curated passthrough list keeps banking, payments and gov apps working * Multiple built-in filter lists (StevenBlack, AdGuard DNS, EasyList, and more) * Region-aware defaults — auto-enables filters for your language * Real-time DNS query logs with search & filtering * Security protection — blocks phishing, malware, and malvertising domains * Dark / Light / System theme with Material 3 dynamic colors * 7 accent color options + Material You dynamic theming * Quick Settings tile & home screen widget * Custom block/allow rules and whitelisting * Per-app filtering (bypass VPN for selected apps) * DNS-over-HTTPS (DoH) support with multiple providers * Auto-update filter lists on schedule (6h / 12h / 24h / 48h) * Export / Import settings backup * Auto-reconnect on boot * Multi-language support (English, Vietnamese, Japanese, Korean, Chinese, Thai, Spanish) * 100% local — all data stays on your device --- ## Community Join our community: [![Reddit](https://img.shields.io/badge/Reddit-Join%20Community-orange?logo=reddit)](https://www.reddit.com/r/BlockAds/) [![Telegram](https://img.shields.io/badge/Telegram-Join%20Chat-blue?logo=telegram)](https://t.me/blockads_android) ## Sponsor If you enjoy BlockAds, consider supporting the project! Your sponsorship helps us maintain and improve the app. [![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?logo=github-sponsors)](https://github.com/sponsors/pass-with-high-score) ## Build Instructions ### Requirements * [Android Studio](https://developer.android.com/studio) Ladybug or newer * JDK 17 or higher * Android SDK 36 (min SDK 24) * [Go](https://go.dev/doc/install) 1.21 or higher * [gomobile](https://pkg.go.dev/golang.org/x/mobile/cmd/gomobile) ### Steps 1. Clone the repository: ```bash git clone https://github.com/pass-with-high-score/blockads-android.git cd blockads-android ``` 2. Initialize gomobile (one-time setup): ```bash go install golang.org/x/mobile/cmd/gomobile@v0.0.0-20240404231514-09dbf07665ed export PATH=$PATH:$(go env GOPATH)/bin gomobile init ``` 3. **(Optional)** Build the Go tunnel AAR/JAR (with Android 15 16KB page size support): ```bash ./scripts/build_tunnel.sh ``` Or ``` ./gradlew buildGoTunnel ``` *Note: A pre-built version is already included in `app/libs/`.* 4. Open the project in Android Studio 5. Sync Gradle and run the app on a device or emulator 6. Build from command line: ```bash ./gradlew assembleDebug ./gradlew bundleRelease # requires signing key ``` --- ## How It Works BlockAds routes DNS queries locally either through a VpnService (Vpn Mode) or via iptables redirection (Root Proxy Mode). These queries are matched against loaded filter lists using a memory-efficient Trie data structure. Matching queries are blocked locally, while all other traffic passes through normally — no data leaves your device. When HTTPS Filtering is enabled, a userspace TCP/IP stack (gVisor netstack via tun2socks) terminates each TCP/UDP flow in Go, looks up the owning app UID via Android's `ConnectivityManager.getConnectionOwnerUid()`, and only MITMs flows from selected browsers. Cert-pinned apps and the 284-domain curated passthrough list bypass MITM cleanly. Cosmetic CSS rules and EasyList `##+js(…)` / AdGuard `#%#//scriptlet(…)` scriptlets are injected into HTML responses via a tiny in-memory local asset host. --- ## License This project is licensed under the **GNU General Public License v3.0**. You are free to use, modify, and distribute it under the terms of the license. See the full [LICENSE](LICENSE) file for details. --- ## Credits * Developed and maintained by [Nguyen Quang Minh](https://github.com/nqmgaming) * Built with [Jetpack Compose](https://developer.android.com/jetpack/compose), [Koin](https://insert-koin.io/), and [Compose Destinations](https://github.com/raamcosta/compose-destinations) --- ## Contributing Pull requests and issue reports are welcome. Help us improve BlockAds! ### Help us translate BlockAds Want to see BlockAds in your language? Open an issue or submit a PR with your translations. --- ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=pass-with-high-score/blockads-android&type=Date)](https://www.star-history.com/#pass-with-high-score/blockads-android&Date)