{"adoption": {"forks": 99, "observed_at": "2026-08-28T04:05:35.142120+00:00", "stars": 1777}, "canonical_url": "https://ross.abutalabs.com/products/blockads-android", "card": {"archived": false, "artifact_type": "application", "description": "Block ads system-wide on Android using local VPN-based DNS filtering. No root needed. No data collection.", "domain": ["privacy", "security", "android-tools", "self-hosted"], "enriched": true, "function": ["security", "privacy", "networking", "caching"], "health_score": 98, "homepage": "https://blockads.pwhs.app", "language": "Kotlin", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["pass-with-high-score/blockads-android"], "name": "pass-with-high-score/blockads-android", "platform": [], "pushed_at": "2026-08-23T15:02:53+00:00", "repo": "pass-with-high-score/blockads-android", "stars": 1777, "tags": ["adblocker", "dns-filtering", "local-vpn", "no-root", "wireguard", "jetpack-compose", "https-filtering", "material3", "golang", "firewall", "android", "mobile"], "topics": ["blockads", "jetpack-compose", "kotlin", "android", "dns", "firewall", "vpn", "block-ads", "golang", "go-mobile", "adblocker", "dns-filter", "no-root", "privacy", "root", "https-filtering", "wireguard"], "urls": [], "use_cases": ["block ads system-wide on android without root", "filter dns queries locally to remove trackers", "block phishing and malware domains on my phone", "use an ad blocker that works in every app and browser", "import a wireguard profile alongside dns filtering", "per-app bypass for apps that break with ad blocking", "view and search dns query logs on android"], "what_it_is": "BlockAds is a free, open-source Android app that blocks ads, trackers, and malware system-wide using local VPN-based DNS filtering, with no root required and no data collection. It also offers a root proxy mode via iptables, optional HTTPS filtering with per-app MITM, WireGuard profile import, and multiple built-in filter lists.", "when_to_avoid": ["you need ad blocking on ios, desktop, or non-android platforms", "you require a network-level blocker covering all devices on your lan rather than a single phone", "you cannot grant vpn permission and your device is not rooted", "you need content-blocking features beyond dns and https filtering, such as full browser extension support"], "when_to_choose": ["you want root-free, system-wide ad and tracker blocking on android", "you prioritize privacy and want all filtering done locally with no data collection", "you need dns-over-https, https filtering, and custom block/allow rules", "you want a modern material 3 ui with widgets, quick tiles, and region-aware filter defaults"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/blockads-android", "repo": "pass-with-high-score/blockads-android", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:25:13.878087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18782d1a74886cb6b1747d0a8c620c4beb62e53b4a56476035b30e9de1b57ccd", "fetched_at": "2026-08-28T04:05:35.142120+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pass-with-high-score/blockads-android"}, {"content_hash": "8c899a171bcd6c2a3aa8cf045f69d274a9b7166f63cfad734428290fd5f82c33", "fetched_at": "2026-08-29T11:03:31.246790+00:00", "kind": "homepage", "missing": false, "url": "https://blockads.pwhs.app"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:25:13.878087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18782d1a74886cb6b1747d0a8c620c4beb62e53b4a56476035b30e9de1b57ccd", "fetched_at": "2026-08-28T04:05:35.142120+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pass-with-high-score/blockads-android"}, {"content_hash": "8c899a171bcd6c2a3aa8cf045f69d274a9b7166f63cfad734428290fd5f82c33", "fetched_at": "2026-08-29T11:03:31.246790+00:00", "kind": "homepage", "missing": false, "url": "https://blockads.pwhs.app"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:25:13.878087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18782d1a74886cb6b1747d0a8c620c4beb62e53b4a56476035b30e9de1b57ccd", "fetched_at": "2026-08-28T04:05:35.142120+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pass-with-high-score/blockads-android"}, {"content_hash": "8c899a171bcd6c2a3aa8cf045f69d274a9b7166f63cfad734428290fd5f82c33", "fetched_at": "2026-08-29T11:03:31.246790+00:00", "kind": "homepage", "missing": false, "url": "https://blockads.pwhs.app"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:25:13.878087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18782d1a74886cb6b1747d0a8c620c4beb62e53b4a56476035b30e9de1b57ccd", "fetched_at": "2026-08-28T04:05:35.142120+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pass-with-high-score/blockads-android"}, {"content_hash": "8c899a171bcd6c2a3aa8cf045f69d274a9b7166f63cfad734428290fd5f82c33", "fetched_at": "2026-08-29T11:03:31.246790+00:00", "kind": "homepage", "missing": false, "url": "https://blockads.pwhs.app"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:25:13.878087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18782d1a74886cb6b1747d0a8c620c4beb62e53b4a56476035b30e9de1b57ccd", "fetched_at": "2026-08-28T04:05:35.142120+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pass-with-high-score/blockads-android"}, {"content_hash": "8c899a171bcd6c2a3aa8cf045f69d274a9b7166f63cfad734428290fd5f82c33", "fetched_at": "2026-08-29T11:03:31.246790+00:00", "kind": "homepage", "missing": false, "url": "https://blockads.pwhs.app"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:25:13.878087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18782d1a74886cb6b1747d0a8c620c4beb62e53b4a56476035b30e9de1b57ccd", "fetched_at": "2026-08-28T04:05:35.142120+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pass-with-high-score/blockads-android"}, {"content_hash": "8c899a171bcd6c2a3aa8cf045f69d274a9b7166f63cfad734428290fd5f82c33", "fetched_at": "2026-08-29T11:03:31.246790+00:00", "kind": "homepage", "missing": false, "url": "https://blockads.pwhs.app"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:35.142120+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:25:13.878087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18782d1a74886cb6b1747d0a8c620c4beb62e53b4a56476035b30e9de1b57ccd", "fetched_at": "2026-08-28T04:05:35.142120+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pass-with-high-score/blockads-android"}, {"content_hash": "8c899a171bcd6c2a3aa8cf045f69d274a9b7166f63cfad734428290fd5f82c33", "fetched_at": "2026-08-29T11:03:31.246790+00:00", "kind": "homepage", "missing": false, "url": "https://blockads.pwhs.app"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:25:13.878087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18782d1a74886cb6b1747d0a8c620c4beb62e53b4a56476035b30e9de1b57ccd", "fetched_at": "2026-08-28T04:05:35.142120+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pass-with-high-score/blockads-android"}, {"content_hash": "8c899a171bcd6c2a3aa8cf045f69d274a9b7166f63cfad734428290fd5f82c33", "fetched_at": "2026-08-29T11:03:31.246790+00:00", "kind": "homepage", "missing": false, "url": "https://blockads.pwhs.app"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:25:13.878087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18782d1a74886cb6b1747d0a8c620c4beb62e53b4a56476035b30e9de1b57ccd", "fetched_at": "2026-08-28T04:05:35.142120+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pass-with-high-score/blockads-android"}, {"content_hash": "8c899a171bcd6c2a3aa8cf045f69d274a9b7166f63cfad734428290fd5f82c33", "fetched_at": "2026-08-29T11:03:31.246790+00:00", "kind": "homepage", "missing": false, "url": "https://blockads.pwhs.app"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:25:13.878087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18782d1a74886cb6b1747d0a8c620c4beb62e53b4a56476035b30e9de1b57ccd", "fetched_at": "2026-08-28T04:05:35.142120+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pass-with-high-score/blockads-android"}, {"content_hash": "8c899a171bcd6c2a3aa8cf045f69d274a9b7166f63cfad734428290fd5f82c33", "fetched_at": "2026-08-29T11:03:31.246790+00:00", "kind": "homepage", "missing": false, "url": "https://blockads.pwhs.app"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 14, "rhythm": 91}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 204, "days_push": 10, "days_rel": 61, "gap_med": 0.5, "n_releases_24m": 45}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}