Guides · Free tool

Drop your photos. See what a recall-first cull looks like.

50 to 500 JPEGs, straight from a shoot. This page groups your bursts, estimates your keeper ratio, and points at the frames a first pass would question — using deterministic image math, right here in your browser.

Nothing leaves your browser. Structurally.

There is no upload in this tool — no server receives your images, full stop. Don't take our word for it: load this page, switch your machine to airplane mode, then drop your photos. Everything still runs. (Site analytics counts visits and photo counts by range — never image data. Block it and the tool works exactly the same.)

Drop your JPEGs here

or

JPEG only in this version (that's what a culling pass starts from). RAW and HEIC files are skipped. Photos are read locally, analyzed at 800 px, then released from memory.

How it works — the exact method

No black box: this tool runs four classic, deterministic image measures, and you can hold it to them.

  • Sharpness — variance of the Laplacian. Each photo is decoded at 800 px and convolved with the 4-neighbour Laplacian kernel; the variance of the response is the standard blur estimator from the computer-vision literature. Higher = more edge energy = sharper. Scores are compared within your set (a frame is "soft" below 30% of your set's median), because absolute sharpness depends on lens and subject.
  • Near-duplicates — difference hash (dHash). Each photo is reduced to a 9×8 grayscale grid; each cell is compared to its right neighbour, giving a 64-bit fingerprint. Two frames are "near-identical" when their fingerprints differ by ≤12 bits (≤6 when no capture time is available).
  • Bursts — EXIF capture time. Frames taken within 2 seconds of each other and near-identical by dHash are grouped as one burst. Capture time is read from the EXIF DateTimeOriginal tag in your files, locally. Files without EXIF fall back to their file-modified time.
  • Exposure — histogram tails. The share of pixels at gray level ≥250 (blown) and ≤5 (crushed). A frame is flagged past 15% blown or 40% crushed.
  • Keeper estimate. One keeper candidate per burst (its sharpest frame) plus every unflagged single frame. That's a floor estimate of a decisive first pass — your taste will rightly overrule it in both directions.

What this tool deliberately doesn't do: no machine learning, no face or closed-eye detection, no "moment" recognition. Those need models, not arithmetic — closed-eye detection is on our list for a future version of this free audit. Keeping the audit deterministic is what lets it run instantly, offline, in a tab.

Reference numbers: one documented wedding from a published December 2024 review (mariess.co.uk) — 4,800 frames, 580-image final pick, 1,500 kept by the reviewed AI pass. Quoted as a single dated testimony, not a statistic. Time math is plain multiplication at a pace you set yourself.

Further reading

Estimates from deterministic image measures on your own files — your judgment decides. Nothing on this page is stored or sent anywhere; analytics counts visits and photo counts by range only. Content written with AI assistance, reviewed before publication by the publisher.