How to pixelate strangers' faces in property walkthrough videos
- Step 1Open the tool — you land on the video face pixelator — The bulk face pixelator routes to the JAD video pixelate engine at /video-tools/face-pixelate. That engine takes a single walkthrough video and mosaics every face it detects across the clip. If your only asset is a still listing photo with a person in it, this engine needs a decodable video stream and will report 'Source has no video stream' — for one still, use an image redactor instead.
- Step 2Drop ONE walkthrough clip — Drag a single video onto the tool — it does not accept a folder or multiple files at once. Phone-shot
.mov, gimbal.mp4, and screen-recorded.webmall load through the browser's<video>element; an exotic codec gives 'Could not load source video for face detection.' Keep the file under your tier's security limit (Free 10 MB; Pro 100 MB; Pro-media 500 MB; Developer 2 GB). Note the video face-pixelate engine is a Pro-media tier tool. - Step 3Set Sample rate for walking-pace footage — Sample rate (1–15 Hz, default 4) controls how many frames per second are inspected for faces. A walkthrough where you pan steadily is well served by 4–6 Hz. If you have a quick whip-pan past a window where a neighbour appears for under a second, push it toward 8–12 Hz so that brief appearance accumulates enough detections to form a solid track.
- Step 4Set Pixel size for a clean listing look — Pixel size (4–40, default 16) is the mosaic block size. Each face crop is scaled down by this factor with nearest-neighbour sampling then back up. For a listing video you usually want it to read as deliberately anonymised without dominating the frame — 16 is the sweet spot. Go higher (24–32) if a face is large and close to camera; avoid 4–6, which can leave recognisable face structure.
- Step 5Set Padding so heads through windows stay covered — Padding (0–1, default 0.25) grows each detected box outward by that fraction before the mosaic is applied, covering hairline, jaw, and ears. Raise it toward 0.4 for faces seen at an angle through glass or a doorway, where the detector may clip the box tight. Keep it lower if two people are close together and you don't want their mosaics to merge into one blob.
- Step 6Run, then scrub the whole tour before you publish — Press run. You'll see 'Loading face detector (one-time WebGPU + model warm-up)', then 'Detecting faces · sample n/N', then 'Pixelating faces · k faces'. When the
.mp4downloads, watch the entire clip — BlazeFace is weakest on hard profiles, reflections in mirrors, faces behind glass, and small/distant people in the street. Anything missed needs a manual region pass. For non-face PII like a visible house number, a car plate in the driveway, or a name on a piece of mail, use a region redactor — a face detector won't find those.
Settings starting points for property footage
There are only three controls — no sensitivity slider, no per-face toggle, no blur-strength (that belongs to the separate face-blur tool). These are practical starting values for common real-estate shots, all within the real ranges.
| Shot type | Sample rate | Pixel size | Padding |
|---|---|---|---|
| Steady interior pan, occupant in next room | 4 Hz | 16 | 0.25 |
| Whip-pan past a window with a neighbour | 10 Hz | 16 | 0.35 |
| Exterior tour, people/kids in the street | 6 Hz | 20 | 0.30 |
| Close walk-by, face large in frame | 4 Hz | 28 | 0.25 |
| Two people standing close together | 5 Hz | 16 | 0.15 |
What the engine actually does, stage by stage
The pipeline that runs when you press go. The browser path and the JAD Runner path use the same BlazeFace short-range model and produce the same nearest-neighbour mosaic.
| Stage | Behaviour | Note for property video |
|---|---|---|
| Detection model | BlazeFace short-range (modelType: short), confidence fixed at 0.5 | Tuned for near-frontal faces; a neighbour in hard profile through a window is the classic miss |
| Frame sampling | Seeks the source <video> at 1/sampleHz intervals and detects per frame | Higher sample rate catches faces that appear briefly during a pan |
| Tracking | Detections IOU-clustered (threshold 0.2) into spatial tracks across time | A face that moves between rooms still gets one continuous mosaic window |
| Track cap | Keeps only the 12 most-detected tracks, ranked by hit count | A street scene with a crowd can exceed 12 — distant low-hit faces get dropped |
| Pixelation | crop → scale down (flags=neighbor) → scale up (flags=neighbor), overlaid for the face's time window | Destructive: the original face pixels are gone, not recoverable |
| Output | Single H.264 .mp4 | Always MP4 regardless of the input container — upload-ready for listings |
Cookbook
Walk-throughs grounded in what the engine actually does on real property footage — one clip in, mosaic MP4 out. Stage labels shown are the real progress messages the tool emits.
Occupied apartment tour with the tenant in shot
A 1080p phone walkthrough of a still-occupied flat; the tenant crosses a doorway twice. Default settings cleanly cover both appearances.
Source: flat-tour.mov (1080p, 70s) Controls: Sample rate 4 Hz · Pixel size 16 · Padding 0.25 Progress: Loading face detector (one-time WebGPU + model warm-up) Detecting faces · sample 281/281 Pixelating faces · 2 faces · 70.0s / 70.0s Output: flat-tour-pixelated.mp4 (H.264) -> tenant tracked across both doorway crossings.
Neighbour visible through a window for under a second
A quick pan past a kitchen window where a neighbour appears briefly. At the default rate the mosaic flickers; raise the sample rate so the brief appearance forms a solid track.
Problem at default: Sample rate 4 Hz -> 1 sample every 0.25s Neighbour visible ~0.3s -> ~1 detection -> thin/flickering track Fix: Sample rate 12 Hz -> 1 sample every ~0.083s Same face now gets ~3-4 detections -> solid track Padding 0.35 -> covers the angled face through glass Trade-off: detection time scales roughly with sample rate. Max 15 Hz.
Exterior street shot with several people
A driveway-and-street establishing shot with passers-by and kids. Heavier pixel size reads clearly as anonymised at distance; verify the full clip because distant faces are the weak spot.
Source: exterior.mp4 Controls: Sample rate 6 Hz · Pixel size 20 · Padding 0.30 Why these values: pixelSize 20 -> blocks still read as redacted on small/distant faces padding 0.30 -> margin for people not facing the camera sampleHz 6 -> catches people walking across frame Review note: BlazeFace short-range is weak on tiny/distant faces; scrub for anyone in the background left exposed.
Crowded open-house clip — only the top 12 tracks survive
An open-house recap with more than 12 people produces more than 12 clusters. The engine keeps the 12 most-detected and drops the rest, so faint background faces may be left exposed.
Detected clusters: 17 Track limit: 12 (most-detected kept) Console: face-blur - 17 clusters, capped to 12 most-detected Result: 5 lowest-hit clusters are NOT mosaicked. Mitigation: - Split the shot so <=12 faces per pass - Raise sample rate so real attendees accumulate hits and rank high - Manual region pass for any face left exposed
You only have a still listing photo, not a clip
This engine is the video pixelator — it needs a decodable video stream. A JPEG has no video stream and is rejected.
Input: front-photo.jpg
Result: error -- "Source has no video stream"
(browser path: "Could not load source video")
Fix options:
- Wrap the still in a 1-2s clip, then pixelate
- Use an image/region redactor for a single still photo
- For a house number or car plate (non-face PII) use a
region redactor, not a face detectorEdge cases and what actually happens
Pixelation cannot be undone
By designEach face crop is scaled down by the pixel-size factor with nearest-neighbour sampling then scaled back up, so the original detail is discarded — there is no key or reverse pass. For a public listing that's exactly what you want: a neighbour or tenant on the open web can't be re-identified. Keep your un-pixelated master separately if you ever need the original.
It opens the video tool, not a photo batch tool
ExpectedChoosing the bulk face pixelator redirects to /video-tools/face-pixelate. It processes one walkthrough video and tracks faces across its frames — it is not a multi-photo uploader. 'Bulk' means it redacts every face the detector finds inside that clip, not that it batches separate files.
No faces detected in the clip
No facesIf no sampled frame yields a face, the tool stops with 'No faces detected. Try a lower sample rate or a clearer source.' On property footage the usual cause is people too small/distant for the short-range model, hard profiles, or motion blur from a fast pan. Try a higher sample rate or a clearer source, and accept that this model targets near-frontal faces — manually redact distant background people if needed.
Faces found but not grouped into a region
No tracksDetections existed but clustering produced no usable spatial track ('Faces detected but could not be grouped into redaction regions'). This happens when a face appears in scattered single frames — typically a too-low sample rate on a fast-moving handheld shot. Raise the sample rate so detections of the same person accumulate into a coherent track.
Face at the edge of frame drops below minimum size
No regionsAfter padding, clamping to the frame, and rounding dimensions to even numbers, a box pressed against the frame edge can shrink below the 4-pixel minimum and be skipped; if all do, you get 'Detected faces fell outside frame after clamping.' On walkthroughs this hits people half-out of a doorway. Lower the padding or reframe so faces aren't flush against the border.
More than 12 people in one shot
12-track capThe engine keeps only the 12 most-detected tracks (ranked by hit count) and logs 'capped to 12 most-detected'. People who appear frequently win; a passer-by glimpsed once at the back can be dropped and left exposed. For a busy open house, split the footage into passes of 12 or fewer faces and always scrub the output.
Phone container/codec won't decode
Load failedDetection loads the source through an HTML <video> element, so it depends on browser codec support. A high-bit-depth phone HEVC clip or a corrupt header can give 'Could not load source video for face detection.' (browser) or 'Cannot load source video' (runner). Re-encode to a standard H.264 MP4 first, then pixelate.
Reflections and faces behind glass are missed
Detection limitThe BlazeFace short-range model is tuned for clear near-frontal faces. A face reflected in a mirror, seen behind window glass with glare, or in hard side profile is detected unreliably regardless of settings. Padding only helps once a detection exists — review the clip and manually redact reflections and through-glass faces the detector skips.
First run warms up before any face appears
ExpectedThe detector model, WASM graph, and (on WebGPU) shaders compile on first use, shown as 'Loading face detector (one-time WebGPU + model warm-up)'. This one-time cost happens before sampling starts; later runs in the same session reuse the cached detector and skip it.
Output is always MP4
SupportedWhatever the input container (.mov, .webm, etc.), the result is an H.264 .mp4. There's no option to keep the original container — which is fine for listing platforms that all accept MP4. Re-mux afterward with a converter if you need something else.
Frequently asked questions
Do I legally need to blur a neighbour caught in my listing video?
Identifiable faces are personal data, and publishing them on a public listing without consent can breach GDPR (EU/UK) and similar rules. Pixelating bystanders is the safe default. This tool gives you irreversible anonymisation — but it doesn't constitute legal advice; check the rules for your market.
Is the pixelation reversible?
No. Each face region is downscaled with nearest-neighbour sampling and scaled back up, permanently destroying the detail — there is no key or reverse pass. That irreversibility is the point for anything going on the public web.
Does it work on a still listing photo or only video?
The engine you land on is the video pixelator: it needs a decodable video stream and tracks faces across frames. A still JPEG is rejected with 'Source has no video stream'. For one photo, wrap it in a short clip first or use an image/region redactor.
Can I upload a folder of clips from a whole shoot at once?
No — the engine takes one video per run. Process clips one at a time. 'Bulk' refers to pixelating every face inside a single clip, not batching files.
Where does processing happen — does my client's footage get uploaded?
Nothing is uploaded. Detection runs in your browser via TensorFlow.js (WebGPU, then WebGL, then CPU) and the mosaic is encoded with ffmpeg.wasm, or locally on the JAD Runner. The inside of a client's home never leaves your machine.
How do I keep the mosaic from ruining a nice kitchen shot?
Use a moderate Pixel size — 16 reads clearly as anonymised without dominating the frame. Go higher only when a face is large and close. The mosaic only covers the detected face boxes, so the rest of the room is untouched.
A neighbour through the window flickers in and out of the mosaic. Why?
They appear too briefly between sampled frames at the default rate, so the track is thin. Raise the Sample rate toward 10–12 Hz so the brief appearance accumulates enough detections to form a solid track, and bump Padding to about 0.35 for the angled-through-glass view.
Why was someone in the street left unblurred?
Two common reasons: distant/small faces fall below what the short-range model reliably detects, or you exceeded the 12-track cap so a low-hit background person was dropped. Raise the sample rate, increase pixel size so distant blocks still read as redacted, split crowded shots, and scrub the full clip.
What about a visible house number, a car plate, or mail on the counter?
A face detector won't find those — they're not faces. Use the manual region redactor at /video-tools/video-redactor to blur a specific rectangle for a chosen time range.
What format and quality is the output?
Always a single H.264 .mp4, regardless of input container — directly uploadable to Zillow, Rightmove, the MLS, or YouTube. There's no option to keep the original container or pick a codec.
How big a clip can I process?
Security-family file limits apply: Free 10 MB, Pro 100 MB, Pro-media 500 MB, Developer 2 GB, one video at a time. The video face-pixelate engine is a Pro-media tier feature, which is also the realistic tier for full-resolution walkthrough footage; detection and encode time grow with duration and resolution.
Should I pixelate or blur, and where do I strip the GPS data?
Pixelate (this tool) reads as deliberately censored and is irreversible. For a softer, natural look use the blur variant at /video-tools/face-blur. Strip the geotag/camera metadata from the clip afterward with /video-tools/metadata-scrubber so the listing video doesn't leak the property's exact coordinates.
Privacy first
Every JAD Security operation runs entirely in your browser. Files, passwords, and PGP private keys never leave your device — verified by zero outbound network requests during processing.