How to auto-blur every face in your video with ai
- Step 1Open the tool on Pro + Media and drop your video — Face blur is a Pro + Media tool because it needs every frame in memory for detection. Drop a single MP4, MOV, MKV, WebM, AVI, M4V, or TS file. The Pro + Media file-size ceiling is 100 GB per job; the page probes duration and resolution locally so the options panel can label the work.
- Step 2Set the sample rate (Hz) — Sample rate controls how often the detector runs across the timeline — default 4 Hz, range 1–15. Higher Hz catches faces that appear briefly and tightens the time window a blur is active, at the cost of a longer detection stage. Lower Hz is faster but can miss a face that flashes through in under a quarter-second. For a talking-head or static scene, 4 Hz is plenty.
- Step 3Set blur strength — Strength is the
boxblurluma radius, range 5–50, default 25. The encoder clamps the effective radius to half the smaller side of each face region, so very small faces are softened rather than over-blurred. For full anonymisation lean toward 40–50; for a softer 'depth-of-field' look stay near 15–25. - Step 4Set padding (0–1) — Padding expands each detected box outward by that fraction of its width/height on every side — default 0.25 (25%). Bump it toward 0.4–0.5 if you see hairlines, ears, or chins peeking past the blur edge; drop it toward 0.1 when faces are densely packed and you don't want to blur a neighbour.
- Step 5Run the detection + blur pass — JAD warms the detector once (a one-time WebGPU + model load you'll see as a 'Loading face detector' stage), samples faces frame by frame (the first ~40% of the progress bar), then runs the single-pass encode. The output is always H.264 MP4 (
libx264,ultrafast, CRF 20) with+faststart. - Step 6Review the export at 1× before you publish — Detection is not a guarantee. Scrub the result and watch any moment with side profiles, fast motion, backlight, or tiny faces. If a face slipped, raise the sample rate, raise padding, or use video-redactor to draw a manual rectangle over the gap, or face-pixelate for a mosaic instead of a blur.
Real face-blur controls
Every option exposed in the tool and what it maps to in the pipeline. There are no presets, no click-to-exclude allow-list, and no codec picker — output is always H.264 MP4.
| Control | Range / values | Default | What it actually does |
|---|---|---|---|
| Sample rate (Hz) | 1 – 15 | 4 | How many times per second the MediaPipe detector runs across the timeline. Each sampled boxes-set feeds the IOU clustering |
| Blur strength | 5 – 50 | 25 | boxblur luma radius. Clamped per region to min(w,h)/2, so small faces never reject the value |
| Padding (0–1) | 0 – 1 | 0.25 | Fraction of each box's width/height added on all four sides before blurring, to cover ears/hair/chin |
Detection pipeline, step by step
The three stages of a face-blur run, all in your browser. Nothing is uploaded.
| Stage | Engine | Output of the stage |
|---|---|---|
| 1 · Detect | MediaPipe FaceDetector (short-range) via TensorFlow.js, WebGPU → WebGL → CPU | A list of face bounding boxes at each sampled timestamp (1–15 per second) |
| 2 · Cluster | Intersection-over-union grouping (threshold 0.2), in-page JS | Up to 12 face tracks, each a union box covering its full motion path with a start/end time window |
| 3 · Encode | FFmpeg.wasm filter_complex — split, crop, boxblur, overlay (single pass) | One H.264 MP4 (libx264 -preset ultrafast -crf 20, +faststart), audio stream-copied |
Tier limits for face blur
Face blur requires Pro + Media because it needs full-frame access (it is not streamable). Limits are from the video tier family.
| Tier | Can run face blur? | Max file size | Batch files |
|---|---|---|---|
| Free | No — upgrade required | — | — |
| Pro | No — upgrade required | — | — |
| Pro + Media (£19/mo) | Yes | 100 GB / file | 50 per job |
| Developer | Yes | 100 GB / file | Unlimited |
Cookbook
Real auto-detect runs with the exact controls the tool exposes. Stages and stage labels match what you'll see in the progress dashboard.
Default run on a talking-head interview
A single near-camera subject in good light is the detector's best case. Defaults are usually enough; the union-box cluster covers the small head movements of someone speaking.
Input: interview-1080p.mp4 (1920x1080, 6m12s, H.264) Options: sampleHz 4 · strength 25 · padding 0.25 Stages: Loading face detector (one-time WebGPU + model warm-up) Detecting faces · sample 1/1489 ... 1489/1489 Blurring faces · 1 face · 372.0s / 372.0s Output: interview-1080p (face-blurred).mp4 H.264, CRF 20, +faststart, audio copied unchanged
Crowd scene — twelve-track cap
When more than twelve face clusters survive, the tool keeps the twelve with the most detections (real faces) and drops noise clusters. A console line reports the cap.
Input: festival-stage.mp4 (many faces in frame)
Options: sampleHz 6 · strength 40 · padding 0.3
Console: [JAD-Video] face-blur · 27 clusters, capped to 12 most-detected
Result: the 12 most-detected faces are blurred; transient
background faces with 1-2 hits may be skipped.
Fix: raise sampleHz so faint faces accumulate more hits,
or run video-redactor for the specific missed regions.Brief appearance — raise the sample rate
A face that flashes through in under a second can fall between 4 Hz samples. Raising Hz shrinks the gap between samples so the detector catches it.
Symptom: a person walks past for ~0.5s and is never blurred. At sampleHz 4 -> sample every 0.25s -> may miss a fast pass At sampleHz 12 -> sample every ~0.083s -> catches the pass Options: sampleHz 12 · strength 30 · padding 0.3 Trade-off: detection stage takes ~3x longer (more samples).
Hairline peeking past the blur edge
The detector's box is tight around the face; padding expands it. If you can still see the top of the head, raise padding rather than strength.
Before: padding 0.25 -> blur stops at the eyebrows After: padding 0.45 -> blur covers forehead + hairline Note: padding expands by a fraction of EACH box's own size, so a large near-camera face gets a proportionally larger margin than a small distant one.
Audio preserved, container normalised to MP4
Whatever you drop in, the output is MP4 with the audio stream copied verbatim. Useful to know when your source was a MOV or MKV.
Input: bodycam.mkv (H.264 video + AAC audio) Output: bodycam (face-blurred).mp4 video: re-encoded libx264 CRF 20 (blur baked in) audio: -c:a copy (identical AAC bytes, no quality loss) The container changes MKV -> MP4; the soundtrack does not.
Edge cases and what actually happens
No faces detected anywhere in the clip
ErrorIf every sampled frame returns zero boxes, the tool stops with 'No faces detected. Try lowering the sample rate or use a clearer source.' Common causes: faces too small (the short-range model is tuned for near-camera subjects), heavy backlight, or extreme angles. Try a higher sample rate to catch a momentary clear frame, or switch to video-redactor and blur the region manually.
Faces found but can't form a region after clamping
ErrorBoxes that fall almost entirely outside the frame, or shrink below the 4 px minimum after padding and clamping, produce 'Detected faces fell outside the frame after clamping. Try a clearer source or reduce padding.' Lowering padding usually fixes a face hugging the frame edge.
More than 12 face clusters in the scene
By designThe pipeline caps at 12 tracks, ranked by detection count, so genuine faces beat one-off noise clusters. A crowd with 20+ faces will blur the 12 most-detected. Raise the sample rate so faint faces accumulate hits, or redact remaining regions manually with video-redactor.
Side profile or heavily occluded face slips through
Expected limitationThe short-range MediaPipe model favours frontal and 3/4 views. A pure side profile, a face behind a hand, or one in deep shadow can be missed on the samples it appears in. Because the blur window comes from the samples that DID detect, an undetected stretch is unblurred. Review the export and patch gaps with a manual redaction.
Blur window flickers off briefly mid-clip
By designEach cluster's blur is enabled only between the first and last sample it appeared in (padded by one sample interval each side). If a face leaves and re-enters frame, it may form two clusters with a gap between. Raise the sample rate to tighten coverage, or accept the gap if the face is genuinely absent there.
Output is MP4 even though the input was MOV/MKV/WebM
By designFace blur always re-encodes to H.264 MP4 (libx264, CRF 20, +faststart) — there is no codec or container picker. If you need a different container afterward, run video-transcoder; if you only need metadata stripped, run metadata-scrubber on the result.
WebGPU unavailable in the browser
SupportedThe detector tries WebGPU, then WebGL, then CPU. Older browsers without WebGPU still work — detection just runs slower on the WebGL or CPU backend. The visible 'Loading face detector' stage covers this one-time backend + model warm-up.
Very long or large file on a slow machine
ExpectedDetection samples and CRF-20 re-encode both scale with duration and resolution, and run in your browser. A multi-hour 4K file at Pro + Media's 100 GB ceiling is allowed but will take real time. Lower the sample rate to speed detection; the encode itself uses the fast ultrafast x264 preset already.
Blur looks too soft on a large near-camera face
Expectedboxblur radius is clamped to half the smaller side of the region, so on a big face the cap is high and strength 25 may read as gentle. Raise strength toward 50 for stronger anonymisation, or switch to face-pixelate for a harder mosaic that reads as deliberate redaction.
You want to keep one person visible
Not supported hereThere is no click-to-exclude or per-face allow-list — the tool blurs every detected cluster. To keep one subject visible, blur the whole clip, then composite is out of scope; instead use video-redactor to redact only the specific people/regions you choose, frame range by frame range.
Frequently asked questions
Which AI model does the auto-detect use?
The MediaPipe FaceDetector short-range model (modelType: "short") loaded through TensorFlow.js (@tensorflow-models/face-detection). It runs locally on the WebGPU backend when available, falling back to WebGL then CPU. It is not BlazeFace and not a cloud API.
Does any footage get uploaded?
No. Detection runs in your browser via TensorFlow.js and the blur is applied by FFmpeg.wasm, also in your browser. No frame, face, or biometric signal is sent to a server. The only thing recorded server-side is an anonymous 'tool run' counter for signed-in dashboard stats.
Will the blur follow a face that moves across the frame?
Yes — within limits. Detections are grouped by overlap into a cluster, and the blur covers the union of all that cluster's boxes for the time window between its first and last detection. So a face that drifts across frame stays covered. A face that leaves and re-enters may form two clusters with an unblurred gap between; raise the sample rate to tighten that.
What are the three controls and their ranges?
Sample rate (1–15 Hz, default 4), blur strength (5–50, default 25), and padding (0–1, default 0.25). Those are the only options — there are no style presets and no codec picker.
What output format do I get?
Always H.264 MP4 (libx264, -preset ultrafast, CRF 20, +faststart), regardless of input container. Audio is copied unchanged with -c:a copy. To change the container afterward, use video-transcoder.
How accurate is the detection?
High for near-camera frontal and 3/4 faces in reasonable light. It can miss faces that are very small in frame, in pure side profile, heavily occluded, or in strong backlight. Always review the export at 1× before publishing anything compliance-sensitive.
Can I exclude a specific person from being blurred?
No. There is no per-face allow-list or click-to-exclude — every detected cluster is blurred. If you only want to redact certain people or regions, use video-redactor and draw the rectangles yourself for the time ranges you choose.
Why does it cap at twelve faces?
The single-pass filter graph keeps up to twelve tracks, ranked by detection count, so real faces beat transient noise clusters. In a large crowd, the twelve most-detected faces are blurred. Raise the sample rate so faint faces gather more hits, or patch the rest manually.
Is box blur as good as Gaussian blur for privacy?
The tool uses FFmpeg boxblur, not Gaussian. For most editorial and social use a strong box blur is industry-standard and sufficient. For higher-risk redaction where reversal is a concern, raise the strength or use the mosaic in face-pixelate, which reads as deliberate anonymisation.
Which tier do I need?
Pro + Media (£19/month) or higher. Face blur needs full-frame access for detection and is not streamable, so it isn't available on Free or Pro. Pro + Media allows files up to 100 GB and batches of 50; Developer is unlimited batch.
Why does the first run pause on 'Loading face detector'?
That stage is the one-time WebGPU + TensorFlow.js + MediaPipe model warm-up (shader compile / WASM graph build). It happens once per session before the sample loop, so the progress bar reflects honest work instead of sitting still on 'sample 1/N'.
Can I batch several videos at once?
Yes — drop multiple files and they process sequentially. Pro + Media allows up to 50 files per job; Developer is unlimited. Each file gets its own detection + blur pass and its own MP4 output.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.