Hهعاقرأ بالعربية
All projects

Solo · 2026

Ghadd

System-wide on-device image filtering for Android.

Ghadd: System-wide on-device image filtering for Android.
Kotlin

An Android accessibility service that covers and blurs immodest imagery anywhere on screen, in any app, using a detector that runs entirely on the device. Because it reads pixels rather than a DOM, it has none of the blind spots a browser extension has.

Browser extensions solved this for the browser. Nothing solved it for the phone, where most of the problem now lives. A DOM-based filter cannot see CSS background images, iframes, picture-in-picture, ads or PDFs, and it only ever covers one app.

Ghadd reads the screen instead. Static images, the primary case, are covered before you can meaningfully look at them, checked, then cleared or blurred. Detection is NudeNet v3 at 320×320, running on-device with no cloud and no telemetry.

It is pre-1.0 and dogfood, developed against a single device, and the README says so rather than implying broader testing than exists.

Problems worth solving

  1. The platform caps you at three screenshots a second

    An accessibility service can capture roughly three frames per second. Video, reels and autoplay feeds move far faster than that, so frames between checks are never inspected at all, and no amount of model tuning changes it.

    The ceiling is stated as a product boundary rather than hidden: static images are the supported experience, video is explicitly best-effort, and the README leads with 'substantially reduces exposure, does not guarantee zero exposure'. A tool in this category that overpromises causes the harm it claims to prevent.

  2. Cover first, decide after

    Running the detector before covering means the image is on screen, unblurred, for as long as inference takes. That is the exact moment the whole app exists to prevent.

    The order is inverted: cover the image immediately, then classify, then clear it if it was fine. A brief cover over a harmless photo is a far cheaper error than a brief exposure of a harmful one.

What came of it

  • Works system-wide across every app, not just a browser.
  • On-device detection with no cloud and no telemetry.
  • Documented ceiling: strong on static imagery, best-effort on video.