BlockNSFW.
A privacy-first content filter for Firefox — blocks adult domains, scans page heuristics, and optionally classifies explicit imagery. All locally, no telemetry, no accounts.
The default web is increasingly hostile to anyone trying to keep it clean.
Adult content leaks through ad networks, social feeds, search previews, and recommendation engines. The existing options are a mixed bag: simple URL blockers handle a fraction of the problem, parental control suites are heavy and surveillance-shaped, and most “family-safe” tools route traffic through a third party.
I wanted something different — a focused tool for parents, students, and professionals that worked entirely inside the browser, treated user data as untouchable, and shipped with sensible defaults instead of a setup wizard.
A layered detection model, running entirely in-browser.
Rather than relying on any single signal, BlockNSFW combines three independent passes. Each is fast, local, and fails gracefully — so a missed signal in one layer is usually caught by the next.
- L1 Domain blocklist
A curated list of known adult and adjacent platforms, applied before any DOM is parsed. Cheap, instant, and the floor of protection.
- L2 Content heuristics
NSFW keyword scoring across page titles, meta descriptions, and forum content. Tuned to catch leaks on otherwise neutral domains — Reddit threads, X media, search result previews.
- L3 Image classification
Optional, on-device scanning of inline images. Off by default for performance; opt-in for the paranoid setup. Never leaves the browser.
The choices I’d defend in a code review.
Zero outbound requests means zero trust required. No accounts, no subscription, no breach surface. The trade is a bigger bundle and constraints on model size — worth it for a privacy tool.
Install, done. Advanced controls live one click deep. Tools that need a setup wizard lose half their installs before they’re useful.
Three small, fast methods are more legible, easier to debug, and degrade better than one opaque classifier. False negatives are the failure mode I optimised against.
Firefox’s WebExtensions APIs are less restrictive, the review process is humane, and the user base is naturally aligned with privacy-first software. Chrome came after validation — MV3's shared surface made the port quick.
Used by thousands across Firefox and Chrome.
BlockNSFW is live on both the Mozilla Add-ons and Chrome Web Store, sitting in the Privacy & Security and Search Tools categories. Reviews skew warm, support emails are manageable, and the v1.5.0 release shipped on schedule three weeks ago.
“Lightweight, no nonsense, and it actually catches the things other blockers miss.”
— AMO review
More importantly, it taught me how to ship and maintain a real product to real users — versioning, support, accessibility review, the slow grind of trust. The version of me that started this would have over-engineered the model and shipped six months late. The version that finished it cut three features and shipped clean.