Skip to content
DuoBolt

The Photos library

Similars can scan your Photos library the way it scans a folder: pick Photos instead of Folders at the top of the setup screen, and DuoBolt reads the library itself. Nothing is exported and nothing is copied. What it finds is shown by the names Photos uses, explained with what Photos knows about each photo, and removed the way Photos removes.

This is a macOS feature. On Windows, Similars scans folders.

The Find Similars setup screen with the header switch on Photos. Where the folder pickers would be, a Photo library panel names the library and its path, counts 6,584 photos, and notes that 1,233 videos in this library are not scanned — Similars compares pictures. Below it the Filters row — Similarity 14 bits, Size 1 KiB to Unlimited, All image types — and a Ready to scan 6,584 photos line above the Find Similars button; Recent Setups down the left, with a session in progress on the library at the top offering Discard or Resume.

Every photo whose original is on this Mac. Videos are not part of a similars scan, and a photo that only lives in iCloud — the library set to optimise storage, the original not downloaded — is set aside and counted, never guessed at from its thumbnail. The setup screen and the results header say how many.

The first scan asks for access to Photos, then walks the whole library: about 15 seconds for 8,000 photos. Every scan after that asks Photos what changed since and looks only at that, so an untouched library costs one question.

If there is no photo library on this Mac — Photos has never been opened, or never had anything put in it — the setup says that rather than counting forever, and folder scanning carries on as usual. A library that exists and is empty says its own version of the same thing.

Photos names its photos IMG_0042.HEIC; the library keeps them under a UUID. DuoBolt shows the name you know — on the tile, in the preview, in the review and in the removal report — and never the file underneath.

Each tile also states what Photos knows about the photo:

  • The import dateimported 16 Jun 2023. When the same photo was imported more than once, each copy says which import it came from: 1st import · 16 Jun 2023, 2nd import · 3 Aug 2025.
  • A heart for a favorite, a wand for a photo you edited.
  • JPEG + RAW for a pair. In the library the two are one photo, and removing it removes both.

An edited photo is shown as the edit — the picture you made — while the scan compared the original, which is what the edit was made from. The preview lets you see both, and the RAW: see looking closer.

Two library tiles side by side. L1020534.JPG, a photograph of the Golden Gate bridge, 2nd import · 26 Aug, carries a heart at the bottom left and a JPEG + RAW badge at the bottom right. IMG_0300.HEIC, a bowl of fruit and cream, 1st import · 16 Jun 2023, carries a wand marking it an edit and a HEIC badge.

A library that was imported twice holds every photo twice — the same bytes under two import dates. Nothing in Photos tells them apart, and DuoBolt groups them as Identical.

Two tools are built for exactly this:

  • The Photos filter’s Imported more than once row keeps only the groups whose copies differ by import.
  • Bulk Select → Keep First Import keeps the copies from the earliest import and selects the later ones, in every group at once.
Similars results over the Photos library — 1,246 groups, 3,554 files, 8.5 GiB — with the Photos filter on the toolbar reading Re-imported. A Look-alikes group of two identical copies of IMG_0039.HEIC, a shrine in a garden: the first reads 1st import · 16 Jun 2023, the second 2nd import · 29 Aug 2023 and is marked. The footer reads 1 file selected, 5 MiB selected, next to Review Selection.

The rest of the marks feed the same two places: the Photos filter has rows for Edited, Favorited and RAW, and Bulk Select has Keep Favorite. The rules are spelled out on reading the results.

A library photo goes to Recently Deleted in Photos, through Photos itself — never by deleting files inside the library package. Photos keeps it there for 30 days, and putting it back is the ordinary thing you already know how to do.

What goes with it goes with it: the edit, a Live Photo’s video, the RAW of a pair. The confirmation says so before you agree, and counts them — and it warns when one of the photos is a favorite.

The confirmation for a library removal, titled Move 4 photos to Recently Deleted — recoverable in Photos for 30 days, and afterwards from a surviving copy. It reads 10.7 MiB to remove, 4 photos from 4 groups, all images, then three notes beside a warning triangle: 2 of these photos have an edit, 1 of these photos is a favorite, deleting the photo deletes its edit as well. Cancel sits beside a red Move to Recently Deleted button.

The preview works as it does anywhere else, with two things that only a library has. Reveal opens the photo in Photos — the asset, not the file buried in the library package under a name made of hex — and the version switch offers what Photos holds: the original, its edit, and the RAW of a pair.

A RAW is developed for the preview rather than read from the JPEG the camera wrote inside it, so what you compare is the photograph and not the camera’s own summary of it. See Comparing two photos.

Copy to… is the other operation a library offers. Each photo is exported under its own name — IMG_0042.HEIC, not the UUID — and an edited photo is exported as the edit, with Copy originals too putting the untouched original beside it. Archive and Delete permanently do not apply: Photos owns its files.