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 and open source

RollScrub's review window: a list of 35 duplicate frames on the left, and the
              same photograph of Mount Rainier shown twice side by side. The left copy is
              marked "Keeping this one", the right "Duplicate", and a
              badge reads "Verified identical".
Every pair, side by side, at full size — with both paths, both sizes, and proof they match. Nothing moves until you say so.
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: Pictures, an external drive and iCloud Drive
 
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

Files kept in iCloud but not downloaded here are counted and skipped, never read. Reading one byte downloads the whole file, so a scan would otherwise pull your library back over the network just to look at it — and a removal would take it off your other devices too.

Never entered

Photo libraries stay sealed

Photos, Lightroom, Aperture and Final Cut libraries keep your originals and their own generated copies together under a database. Removing one leaves the app pointing at a file that isn't there, so RollScrub never looks inside.

Download

Free. All of it.

No licence, no account and nothing held back. RollScrub is open source under the GPL, so you can read exactly what it does to your files before you let it near them.

RollScrub for macOS

Free
  • Scan unlimited folders and drives
  • Byte-for-byte verification
  • Side-by-side review of every pair
  • Move duplicates to the Trash in bulk
  • Signed, notarized and kept up to date
Download

The source

GPL-3.0
  • The app, the command line tool and the tests
  • Build it yourself with Swift
  • Bug reports and fixes welcome
View on GitHub
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?

No. Photos, Lightroom, Aperture and Final Cut Pro libraries are skipped entirely — RollScrub never reads or writes inside them. Each keeps your originals alongside its own generated copies under a database, so those copies are meant to be identical to files elsewhere, and removing one leaves the app pointing at a file that is no longer there. Apple's guidance is not to alter a photo library's contents in the Finder at all.

For duplicates inside Photos, use its own Duplicates view under Utilities in the sidebar — it merges them, so keywords, albums and edits survive, which a file-level tool cannot do. Lightroom has plugins that work the same way, through its catalogue.

RollScrub is for everything outside those libraries: exports, card dumps, backup drives, Downloads, iCloud Drive — where copies pile up and nothing is keeping track.

What if it's wrong?

Nothing is deleted. Files go to the Trash, where you can put them back from the Finder — and every file is re-verified against the copy being kept immediately before it moves, so a pair that has changed since the scan is left alone.

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 really free?

Yes. Every feature, on as many Macs as you like, with no account and nothing to activate. If an older copy asks you to activate it, update to the latest version and it won't.

Can I read the code?

All of it, on GitHub. It is licensed under the GPL-3.0, so you can build it, change it and share it, as long as what you share stays open too.

Found a bug, especially one that could cost somebody a file? Please report it there, or email support@rollscrub.com.

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.