Skip to content
MrBeanDev edited this page Aug 23, 2026 · 3 revisions

Face Gallery

Face Gallery detects the faces in a pile of photos, works out which photos each person appears in, and lets you browse the result as face cards or as an interactive graph.

The frontend is hosted at face-gallery.mrbean.dev. The backend runs on your own machine, so your photos are never uploaded anywhere.

Start here

I want to... Go to
Try it with the least effort Running Your Own Backend
Run both halves locally from source Quick Start
Understand what the buttons do Usage
Change tolerance, limits, or storage Configuration
Call the API myself API Reference
Fix a problem Troubleshooting

How it works

Processing runs in two passes.

The first pass scans every photo, detects faces, and builds a list of distinct people. A face is considered new when its encoding is further than the match tolerance from every person already found.

The second pass walks the photos again and links each detected face to its closest known person, recording the bounding box. Encodings computed in the first pass are reused, so no photo is encoded twice.

Detection runs on a copy scaled to at most 1600 px on the long edge, which is several times faster on large photos and costs no accuracy at the default tolerance. Face crops are always taken from the original resolution, so the face images stay sharp.

What it can do

  • Drag and drop photos or a ZIP archive
  • Live progress over a WebSocket, with faces appearing as they are found
  • List view — a card per person, with every photo they appear in
  • Graph view — photos and faces as a node network, in square or radial layout, with hover highlighting, fullscreen, and a minimap
  • Reversible merge — grouping two faces never deletes anything, so a wrong merge can be undone and the display face swapped at any time
  • Rename, disable, or delete people
  • Assign a face to a photo by hand, optionally drawing the bounding box
  • Add more photos to an existing session and re-process
  • Server-side thumbnails with a disk cache, and per-effect toggles for large graphs

Requirements

A modern browser, and a machine that can run the backend.

Safari cannot be used with the hosted frontend. It blocks all mixed content, including requests to localhost. Chrome, Edge, and Firefox 84+ work.

Project links

Clone this wiki locally