Three kinds of duplicate
They need different tools, and only the first is safe to clear without looking.
- Exact copies are the same file, byte for byte, in two places: the same memory card imported twice, a backup of a backup. Keep one, and the rest are clutter. They are found by comparing the files' contents, never their names.
- Near-copies are the same picture saved again: re-sent through a chat app, resized, exported once more. The bytes differ, so a byte comparison misses them. They are found by comparing what the pictures look like.
- Look-alikes are different photos of the same moment: a burst, five tries at a group photo. They aren't duplicates at all, and which one to keep is a judgement only you can make.
Why file names don't work
Two phones both have an IMG_0001.jpg, and they're different photos. The same photo copied off a card twice can come back as IMG_0001.jpg and IMG_0001 2.jpg. A tool that matches names deletes the wrong things and misses the right ones.
Inside Apple Photos
On macOS Ventura and later, Photos finds duplicates on its own: open Photos, choose Duplicates under Utilities in the sidebar, and merge them. It only sees photos that have been imported into the library. Files in folders and on external drives are invisible to it.
In folders and on drives: the tools
| Tool | Price | Finds | Runs on |
|---|---|---|---|
| dupeGuru | free, open source | exact copies, and similar pictures in its picture mode | Mac, Windows, Linux |
| Czkawka | free, open source | exact copies and similar images | Mac, Windows, Linux |
| Gemini 2 (MacPaw) | paid | exact copies and similar photos, in folders and the Photos library | Mac |
| PhotoSweeper | paid | exact copies and similar photos, in folders and photo libraries | Mac |
| cullzy | early access | exact copies and near-copies while you sort; look-alikes with its optional on-device AI | Mac |
A dedicated duplicate finder is the better choice when duplicates are the whole job. Cullzy finds them as part of going through the pile, which is the better choice when the duplicates are one problem among several.
How not to lose the last copy
- Keep one copy of every group out of any selection, so that “select all duplicates” can never mean all of them.
- Keep the best copy, not the first one found: the largest picture, the one with camera details inside, the original format.
- A RAW file and the JPEG beside it aren't duplicates. The camera made both on purpose.
- Move the extras into a duplicates folder first. Delete once you've seen it.
How cullzy does it
Exact copies are found by contents: files of the same size are compared, first by their opening bytes and then by a fingerprint of the whole file, so most files are never fully read. Near-copies are found by a small fingerprint of what each picture looks like, and two photos count only if they also match in shape and in the time the camera says they were taken. Screenshots, videos, and a RAW with its own JPEG are left out.
Each group is offered as one selection with the best copy held back: most pixels first, then camera details, then the original format. You look it over and press a number to file the rest, usually into a folder called duplicates. Nothing is filed or deleted on its own, and every move can be undone.
With duplicates gone, the rest is sorting into folders.
Last checked . Something here out of date? Say so and it gets fixed.