Duplicate photos & video · macOS

Proven duplicates. Not guessed.

RollScrub finds duplicate photos and videos across every folder and drive you point it at — and compares every single byte before it calls two files the same. You see each pair side by side. Nothing moves until you say so.

macOS 14 or later · Apple silicon & Intel · Free to scan

How a match is proven

Four passes. The last one reads every byte.

Most duplicate finders score how similar two photos look, then ask you to trust the score. RollScrub never does that. Files are narrowed down cheaply, then the survivors are compared in full — so a pair is either identical or it is not shown.

Pass 1

Group by exact size

Files that differ by a single byte in length cannot be duplicates. Anything with a size all to itself is discarded immediately.

Reads no file contents
Pass 2

Signature the ends

Each remaining file gets a signature read from its head and tail — enough to separate unrelated files that happen to share a size.

Reads ~256 KB per file
Pass 3

Compare in full

Every still-matching cluster is compared byte for byte. Files that only looked alike are split apart here and never reach you as a pair.

Reads both files end to end
Pass 4

Pick the keeper

Your renamed original wins over the camera's untouched filename, and anything that looks like a copy loses. You can always override it.

Suggests, never decides
Scanning

Your library isn't in one place. Neither is the scan.

The same shot ends up in a Lightroom library, an export folder, an old backup, and an external drive. Point RollScrub at all of them at once and it finds the copies between them — not just within each one.

Scan many folders and drives together

Pick as many folders or volumes as you like in one pass. A photo in your Pictures folder and the identical file on an external drive come back as one pair, with the full path of each so you can tell at a glance which copy is which.

# one sweep across everything
rollscrub ~/Pictures "/Volumes/Extreme Pro" ~/Library/Mobile\ Documents
 
Media files scanned : 48,207
Duplicate groups : 1,904
Redundant files : 2,236
Reclaimable : 214.8 GB

Decide with both files in front of you

Every pair opens side by side at full size, with dimensions, capture date and file size for each. Two clips play together, frame for frame, so you can confirm a video match with your own eyes rather than a checkmark.

Keyboard-first, because a real library means thousands of these decisions.

DMark the duplicate for removal
KKeep both, leave them where they are
UClear the mark on this pair
Previous pair
Next pair
Marks are saved per scan — close the window mid-review and come back to it.

Raw, video, and the formats in between

Previews come from the embedded image inside a raw file rather than a generic document icon, so two ARW or DNG frames are actually distinguishable. Video thumbnails are pulled a second into the clip, past the fade-in.

DNGARWCR2 CR3NEFRAF ORFRW2JPEG HEICPNGTIFF MOVMP4M4V MTSM2TSINSV
# what a confirmed group looks like
[1] photo 15.5 MB x2 copies
  KEEP …/2024-05-14/20240514-Q2-1001515.jpeg
  REMOVE …/Instagram/IMG_1515 copy.jpeg
 
# rejected — looked identical, differed on full compare
Rejected by verify : 7
Safety

The tool is only useful if you can trust it with originals.

Scanning is read-only. Removal goes to the Trash. Every step is reversible.

Re-checked

Verified again at the last moment

A file is compared against the copy being kept one more time immediately before it moves — not just at scan time. If they no longer match, it stays put.

Never deleted

Trash, not erase

Removals go to the Trash and stay recoverable in the Finder until you empty it yourself. RollScrub never unlinks a file outright.

Guarded

The keeper must exist

If the copy that justifies a removal has gone missing, the duplicate is left exactly where it is and reported — never removed on the strength of a stale scan.

Left alone

iCloud files aren't pulled down

Photos that live in iCloud but aren't downloaded are skipped rather than quietly fetched — or removed from your other devices behind your back.

Never entered

Final Cut libraries stay sealed

Files inside an .fcpbundle are legitimately identical to originals elsewhere. Descending into one and "deduplicating" it corrupts the library, so RollScrub doesn't look inside.

Reversible

Undo, from a manifest

The command-line tool writes a manifest of everything it set aside, and puts every file back where it came from with a single --undo.

For large sweeps

There's a command-line tool in the box.

For drives with hundreds of thousands of files, or a sweep you want to run on a schedule. It writes a text report and a CSV, and with --move it sets duplicates aside in a review folder inside whichever drive each was found on — so nothing has to cross a volume boundary, and nothing is deleted.

# read-only by default: writes a report, touches nothing
rollscrub "/Volumes/Extreme Pro" --out ~/Desktop/sweep.txt
 
# set duplicates aside, reversibly
rollscrub ~/Pictures "/Volumes/Extreme Pro" --move
 
# changed your mind
rollscrub --undo "/Volumes/Extreme Pro/_duplicates_review/_rollscrub_manifest_20260912-014500.json"
Pricing

Scan for free. Pay once to act on it.

Scanning, reviewing and the full report cost nothing and always will — you can see exactly what RollScrub found before deciding whether it's worth anything to you.

Free

$0
  • Scan unlimited folders and drives
  • Byte-for-byte verification
  • Side-by-side review of every pair
  • Text and CSV reports
Download

RollScrub Pro

$29one time
  • Everything in Free
  • Move duplicates to the Trash in bulk
  • Command-line tool with --move and --undo
  • Use on all the Macs you own
  • Free updates
Buy RollScrub Pro
Draft — set before launch: price and tier split, the actual purchase/licensing link, and the download URL. Nothing here is wired to a payment processor yet.
Questions

Before you point it at 40,000 photos.

Will it catch two edits of the same photo?

No — and that's deliberate. A re-exported or re-compressed version is a different file, byte for byte, so RollScrub won't claim it's a duplicate. It finds exact copies: the same file that got duplicated into a second folder, a backup, or a drive.

If you want a tool that guesses at visual similarity, there are several. This one is built on the opposite promise.

Does it touch my Photos or Lightroom library?

It reads whatever folders you choose, including the originals inside a Lightroom library if you point it there. It never writes to a catalog or database — removals go to the Trash, and you should re-sync your catalog afterwards the way you would after any change made outside the app.

Final Cut Pro libraries are skipped entirely: their internal media is meant to be duplicated, and pruning it corrupts the library.

What if it's wrong?

Nothing is deleted. Files go to the Trash, where you can put them back from the Finder. The command-line tool goes further — it moves files into a review folder and writes a manifest, so a single --undo puts every one of them back exactly where it was.

How long does a scan take?

Most of the work is thrown away cheaply: only files sharing an exact byte size are ever opened, which on a real drive eliminates the overwhelming majority before anything is read. Full byte-for-byte comparison then runs in parallel across cores, and only on the handful of genuine candidates.

Is it on the Mac App Store?

No. RollScrub is distributed directly and notarized by Apple, which is what lets it scan any drive you choose without the sandbox restrictions a Mac App Store build would impose on reaching your external volumes.