Clear out duplicates and look-alikes. Reclaim your photo library.

DupSnap is a macOS app that scans your Photos library for duplicate and similar photos and helps you remove them safely. Choose between exact-match scanning using SHA-256 hashing and similar-image scanning powered by a perceptual hash (pHash) algorithm. Detected pairs open side-by-side with full metadata so you can compare and decide with confidence.

Download on the App Store

Get it on the App Store

Download on the App Store

Exact Match Scan Catches Every True Duplicate

DupSnap generates a SHA-256 hash from each photo's original data and groups photos with identical hashes. If two files are byte-for-byte the same, they will be found — no matter what name or folder they are stored under.

Similar Image Scan Finds Near-Duplicate Photos

A perceptual hash (pHash) algorithm detects photos that look alike even when file format, compression, or minor edits differ. The Hamming distance threshold is adjustable from 1 (strict) to 20 (loose) with a slider so you control how similar is similar enough.

Compare Side-by-Side with Full Metadata

Detected pairs open in a detail view showing both photos at full size alongside file name, size, resolution, date taken, hash, and asset ID. Any field that differs between the two is highlighted in red so you can instantly see which photo is higher quality or more recent.

Cached Hashes Make Repeat Scans Fast

Analysis results are stored locally with SwiftData, so only newly added photos are processed on subsequent scans. Photos deleted from the library are automatically removed from the database. You can clear the cache and force a full rescan from Settings at any time.

SHA-256 hashing identifies byte-perfect duplicates.

HashingService fetches the original image data for each PHAsset and computes a SHA-256 hash. All hashes in the local database are grouped by value and any group with more than one entry is returned as a set of duplicate pairs. Hashing runs on Task.detached at up to six concurrent operations so the UI stays responsive throughout.

EXACT
SIMILAR

pHash and Hamming distance measure visual similarity.

ImageComparator applies a CoreImage filter chain — Gaussian blur followed by grayscale conversion — to produce a 17×16 pixel representation of each photo. Each pixel row is encoded into a bit string and stored as four UInt64 values. At scan time the fast Hamming distance between bit arrays is compared against the user-set threshold, and pairs below the threshold are returned as similar matches.

The detail view lets you compare and delete with confidence.

DetailView loads both photos at full resolution and displays them side by side. MetadataRow shows file name, size, resolution, date taken, the first eight characters of the hash, and the asset ID for each photo. Fields that differ are highlighted in red. After deleting one photo the app automatically rescans and removes the pair from the list.

COMPARE
CACHE

SwiftData caching keeps repeat scans fast.

Each photo's localIdentifier, exactHash, resizedHash, and pHash are persisted locally with SwiftData. When a scan starts, DupSnap compares the current library against the database, queues only new assets for hashing, and removes records for photos that no longer exist in the library. The Settings screen provides a Clear Analysis Data option to wipe the cache and trigger a full rescan.

Scan. Compare. Delete.
A cleaner photo library in minutes.

Three Steps to a Tidy Photo Library

1
Click a Scan Button to Start

Click Exact Match Scan to find byte-perfect duplicates, or Similar Image Scan to find near-matches. DupSnap will request photo library access on the first run. The initial scan processes every photo in your library — progress is shown as a percentage and you can cancel at any time.

2
Click a Detected Pair to Compare Details

Each detected pair appears in the list with thumbnail previews and the Hamming distance between them. Click any row to open the detail view where both photos are displayed at full size alongside their metadata. Red highlights show exactly where the two photos differ.

3
Delete the Photo You Don't Need

In the detail view, click Delete this Photo under the image you want to remove. The photo is deleted from your Photos library and the app rescans automatically to refresh the list.

Get it on the App Store

Download on the App Store

What Users Are Saying

"I had thousands of duplicate photos built up over years and DupSnap cleared them out in one session. The exact match scan is rock solid — no chance of accidentally deleting something you want to keep. Being able to compare both photos side-by-side with full metadata before deleting gives real peace of mind."

— photo_organizer_tanaka

"The similar image scan is incredibly useful for burst shots. It catches near-duplicate photos that standard duplicate finders miss entirely. The threshold slider is a great touch — I use a stricter setting for precise comparisons and a looser one when I want to catch more variations. Repeat scans are noticeably fast thanks to the caching."

— camera_enthusiast_sato

"Clean, simple interface and it does exactly what it says. The red highlights on differing metadata fields make it immediately obvious which photo is larger or more recent. I especially like that you can cancel a scan partway through. Essential tool for anyone with a large Mac Photos library."

— mac_photo_manager_yamada

Frequently Asked Questions

Find answers to common questions below.

QDoes DupSnap need access to my Photos library?

AYes. DupSnap will request permission the first time you run a scan. If you declined, go to System Settings → Privacy & Security → Photos → DupSnap and select All Photos, then relaunch the app.
QWhat is the difference between Exact Match Scan and Similar Image Scan?

AExact Match Scan uses SHA-256 hashing to find photos that are byte-for-byte identical. Similar Image Scan uses a perceptual hash algorithm to find photos that look alike even when the file format, compression level, or minor details differ. Use both modes for the most thorough cleanup.
QWhy does the first scan take a long time?

AThe initial scan computes hashes for every photo in your library, which takes time proportional to the number of photos you have. Subsequent scans only process newly added photos because all previous results are cached locally, making them significantly faster.
QCan I recover a photo after deleting it in DupSnap?

ADeletions go through the macOS Photos library. Photos are kept in the Recently Deleted album for a period of time, so you can recover them from within the Photos app if needed.
QWhat does Clear Analysis Data do?

AIt deletes all locally cached hash data from the database. The next scan after clearing will reanalyze every photo from scratch. Your actual photo library is not affected — only the analysis cache is removed.

Get it on the App Store

Download on the App Store
App Gallery