Blur Face Online Free — AI Photo Anonymizer
Hide every face in a photo before you post it. Your browser detects the faces on-device, then blurs, pixelates, or blacks them out — no upload, no signup, and all camera metadata stripped on download.
How it works
Everything happens inside your browser tab. The photo is decoded to a <canvas> and never sent anywhere — you can verify that in the DevTools Network panel. Face detection uses the browser's built-in Shape Detection API, an on-device detector from the BlazeFace family (arXiv:1907.05047), so there is no model to download and no third-party request on your image. The deterministic redaction rules below live in a pure module (lib/data/ai-face-blur.ts) with cited formulas.
- Detection downscale. Detection runs on a copy scaled so the longest side is at most 1,024 px:
scale = min(1, 1024 / max(w, h)). Boxes come back in that space and are divided byscaleto map back to full resolution, where the redaction is always applied. - Region padding. Each face box grows by 12% of its shorter side on every edge so hairline, ears, and jaw are covered:
pad = round(0.12 × faceMinSide). - Mosaic (default). Block size
b = max(8, round(faceMinSide / (24 − 2 × (strength − 1)))). At strength 6 the divisor is 14 — about 14 blocks across the face, coarse enough to defeat recognition while staying clean. Each block is filled with the mean colour of its source pixels. - Gaussian blur. Radius
r = max(8, round(faceMinSide × 0.02 × strength)), applied through the Canvasfilter: blur(r px)primitive. Shown with a reversibility warning because mild blur is partially invertible (arXiv:1609.00408). - Solid box. Fills the padded region with opaque black — the only mathematically irreversible mode, recommended for legal or consent-critical redaction.
- Detection sensitivity. A score threshold in the range 0.20–0.90. Faces below it are dropped. The browser detector reports faces at confidence 1.00, so the slider filters lower-confidence entries and keeps the algorithm consistent with scored detectors.
- Metadata strip.Re-encoding the canvas to PNG or JPEG discards every EXIF field — GPS, device, and timestamp — so the downloaded file carries none of the original's tracking data.
Two of the formulas are cross-checked a second way in the module (mosaic block from an explicit blocks-across count, and blur radius from a percentage), and both reproduce the numbers in the worked examples below to the pixel.
Worked examples
Frequently asked questions
Sources & references
- Bazarevsky et al. — BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs (2019)
- McPherson, Shokri & Shmatikov — Defeating Image Obfuscation with Deep Learning (2016)
- MDN Web Docs — FaceDetector (Shape Detection API)
- MDN Web Docs — CanvasRenderingContext2D.filter, getImageData / putImageData
The detection approach and redaction formulas on this page were last verified on 2026-07-12. Blur and mosaic are strong deterrents but not provably irreversible; for legal or consent-critical redaction use the solid black box.
Related tools
Comments & feedback
Spotted a bug or want an improvement? Tell us — our team reviews every comment, and good ideas get built. Comments are public and anonymous.
Found a bug, edge case, or want to suggest an improvement?
Email me at [email protected] — most fixes ship within 24 hours.