BlockNSFW
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.
- Chrome · Firefox · Edge · Android
- 3,000+
- ★ 5.0 Chrome · ★ 4.3 Firefox
- on device
- none
- free
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.
What it does
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.
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.
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.
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.
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.
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.
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.
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.
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- Always on, including across reboots — the gap between restarting and re-enabling is exactly when a blocker is least useful.
- Safe search enforced on the network path, so it holds on café wi-fi and on mobile data alike.
- Free, no ads, no account. The VPN is local: nothing is proxied through a server of mine, because there isn't one.