Skip to content
onestlatechPublic

About

Hide faces in photos and videos of demonstrations, entirely in your browser. Files never leave your device.

Resources

Stars

23 stars

Watchers

1 watching

Forks

Repository files navigation

Masque

Hide faces in photos and videos of demonstrations, parties, or any other event. Masque runs entirely in your browser: files are never uploaded, and once loaded the app keeps working offline and can be installed on a phone's home screen.

Drop several photos to process them together and download one ZIP. In videos, faces are tracked between frames, so a face the detector misses for a moment stays masked. Every mask can be reviewed and edited before export, and when detection misses a face or fails, dragging across it adds a mask by hand.

Face detection uses the CenterFace model (MIT), as in deface. public/models/centerface.onnx is deface's model with dynamic input sizes, produced by uv run scripts/prepare-model.py.

The interface is available in English and French; it follows the browser language and can be switched in the footer.

Masque is created by onestla.tech and L'Offensive, and uses onestla.tech's design. https://masque.onestla.tech is hosted by Infomaniak.

Privacy

  • No backend, no analytics, no third-party requests. A strict Content Security Policy (connect-src 'self') blocks the page from sending data anywhere else.
  • Output files carry no metadata: no EXIF, GPS, or device identifiers in photos; no tags or creation dates in videos. Downloads get random or numbered names, never the original ones.
  • Video exports use temporary browser storage where available. “Open another file” deletes the temporary export a few seconds later, once the download has had time to finish. Closing the tab or a crash can leave it behind; clear this site's data to remove it.
  • Hiding faces does not hide everything: clothing, tattoos, banners, gait, and landmarks can still identify people. Your phone may also have uploaded the originals to a cloud backup. Read the EFF's Attending a Protest guide, or onestla.tech's Guide d'autodéfense numérique pour les mouvements sociaux in French.

Development

npm ci
npm run dev

Checks:

npm run check
npm test
npx playwright install
npm run e2e

Deployment

npm run build writes a static site to dist/. The host must send the headers defined in security.ts: the cross-origin isolation headers enable multi-threaded WebAssembly.

  • Netlify: dist/_headers is generated by the build.
  • Apache, including Infomaniak web hosting: dist/.htaccess is generated by the build and requires mod_headers and mod_rewrite; it also redirects HTTP to HTTPS.
  • Caddy: caddy run --config deploy/Caddyfile.

GitHub Pages cannot set these headers and is not supported. Cloudflare Pages rejects files over 25 MiB, and the ONNX Runtime WebAssembly file is larger, so it is not supported either.

License

AGPL-3.0-or-later.

About

Hide faces in photos and videos of demonstrations, entirely in your browser. Files never leave your device.

Resources

Stars

23 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages