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.