Video safety that never leaves the device
SafeFrame detects inappropriate video content with a two-tier ML cascade running entirely in your browser — from low-end phones to high-end desktops. Because a kids-safety product should never ship a child's screen to a server.
How it works
1Sample
Seek-based frame extraction at ~1 fps, densifying around anything suspicious — a 10-minute video means hundreds of frames, not eighteen thousand.
2Classify
A 4 MB MobileNet screens every frame; only borderline frames escalate to a quantized ViT running in a Web Worker. Big-model accuracy, small-model cost.
3Aggregate
Scores flow through a smoothed sliding window with hysteresis, producing flagged segments with timestamps — not just a yes/no.
4Respond
On a flag: instant blur, pause, and a calm replacement card with a parent gate. Five response modes, all switchable live.
The models doing the work
Two open image classifiers, downloaded once and run by your own browser — never on a server. The small one screens everything; the big one is only consulted when the small one isn't sure.
Tier 1 · MobileNetV2
screens every frameA ~3.5M-parameter convolutional network (NSFWJS build), trained to score frames across five classes: porn, hentai, sexy, neutral, drawing. About 4 MB, shipped in the app's own build rather than fetched from a model hub, and cached for offline use after the first scan.
Runtime: TensorFlow.js · WebGL with WASM fallback
Tier 2 · Vision Transformer
verifies borderline framesAn ~86M-parameter ViT-base NSFW detector (AdamCodd, open weights) — roughly 25× larger, consulted only on frames the screener can't call confidently, up to 40 per video. Fetched once on capable devices, then cached; low-end devices never download it at all.
Runtime: Transformers.js / ONNX · WebGPU with WASM fallback · runs in a Web Worker
The privacy story is the architecture
There is no backend in this product — not a small one, none. No database, no API routes, no telemetry. Model weights are cached by your browser so the second visit works fully offline. The honest consequence: some cross-origin URLs can't be analyzed, and we tell you so instead of quietly routing your video through a proxy.
See it work on your own video
Pre-scan for a full segment map, or turn on live guard and watch it react in real time.
Open SafeFrame