Finding specific things
Photos has had duplicate detection built in since Ventura, and most people have never opened it.
macOS Ventura and later: a Duplicates album appears in the sidebar when duplicates are detected. It groups them and offers Merge, which keeps the highest quality version and combines the metadata.
If the album is missing, Photos has not finished analysing — it runs when the Mac is idle and plugged in, and can take days on a large library.
Images scattered through Downloads, Desktop and old project folders are a separate problem. By content:
find ~ -type f \( -iname "*.jpg" -o -iname "*.heic" -o -iname "*.png" \) \
-exec md5 -r {} \; 2>/dev/null | sort | uniq -d -w 32
Slow, because every file is read, and definitive for the same reason.
Files of different sizes cannot be identical. Group by size, then hash only the collisions. On a photo library this cuts the work enormously.
Burst shots and re-exports are not byte-identical, so hashing will not group them. That needs perceptual hashing, which is what Photos' own duplicate detection does — and it is the reason to use Photos for library duplicates rather than a checksum.
Check whether the second copy is a backup rather than a duplicate. A photo present both in your library and on an archive drive is the system working correctly, not waste — and being able to see both copies, including the one on an unplugged drive, is what makes that judgement possible.
It keeps the highest quality version and merges metadata such as albums, keywords and favourites.
Analysis runs when the Mac is idle and on power. On a large library it can take several days.
Everywhere keeps track of every file on your Mac — including the folders Spotlight hides and drives you have unplugged. Free for a day, then $19 once.
Download for Mac