Skip to content
monolab— home
The work

BlockNSFW

adult content blockershipping

Stops adult sites before the page paints. A blocklist catches the known ones; an on-device model reads the text and images of everything else. SafeSearch is forced on nine search engines whether the site wants it or not.

Platforms
Chrome · Firefox · Edge · Android
Users
3,000+
Rating
★ 5.0 Chrome · ★ 4.3 Firefox
Classification
on device
Account required
none
Price
free
Source
26

01

The problem

Most adult-content blockers work from a list of domains. Lists go stale in days, and they only ever knew the English-language web. The sites that matter to someone trying to stop are the ones not on any list.

search results — 6 pages
••••• ••••••safesearchoff
••••••••••.com
held
en.wikipedia.org
•••••••.net
held
••••••••••••.xyz
held
docs.python.org
••••••.to
held
nothing filtered0 of 6 held

The switch is live — try it both ways


02

What it does

  1. 01

    Blocklist, before first paint

    Known adult domains and platforms are stopped before the page loads rather than hidden after it, so nothing renders in the half-second it takes to look away.

  2. 02

    Hostnames in six writing systems

    Adult hostnames in Chinese, Korean, Russian, Arabic, Thai and transliterated Latin, including internationalised domains that arrive as punycode. A list built only from English misses most of the web.

  3. 03

    A small text model, running locally

    For pages no list knows about, a compact multilingual model reads the page text on your machine and scores it. Nothing about the page is transmitted anywhere.

  4. 04

    Image scanning without upload

    Images are classified on device, which catches sites whose address gives nothing away. This is the expensive part of the problem and the reason the model has to stay small.

  5. 05

    SafeSearch, enforced

    Family-safe results are forced on Google, Bing, DuckDuckGo, Yahoo, Brave, Ecosia, Qwant, AOL Search and Presearch — including when a query tries to opt out.

  6. 06

    Optional DNS layer

    An opt-in network layer using Cloudflare for Families stops adult domains at resolution, before the browser is involved at all. Off by default, because it is the one part that leaves the machine.

  7. 07

    The places filters usually miss

    NSFW subreddits, Facebook and Instagram Reels, and age-restricted YouTube — the surfaces where adult content arrives inside an otherwise ordinary site.

  8. 08

    A record you own

    Blocked-attempt counts, clean streaks, your allowlist and a full audit log. All of it stored locally, all of it yours to clear.


03

On the phone

The same decision, one layer lower

On Android there is no extension model, so the app is a local VPN service instead — traffic never leaves the device, it just terminates at a filter running on it. That covers every app on the phone, not only a browser: the chat client, the game's embedded webview, the second browser installed to get around the first one.

Google Play
  • 01Always on, including across reboots — the gap between restarting and re-enabling is exactly when a blocker is least useful.
  • 02Safe search enforced on the network path, so it holds on café wi-fi and on mobile data alike.
  • 03Free, no ads, no account. The VPN is local: nothing is proxied through a server of mine, because there isn't one.

04

In motion

90 seconds. Nothing loads until you press play.