Code · Mac app
PhotoDrop
Gets photos off a memory card and into a dated library. Every byte is hash-verified, duplicates are skipped, and nothing is ever overwritten.
Download → Source on GitHub → v0.5.1 · free · MIT
§ What it does
Copying photos off a card is the one moment that should never be lossy, and a plain drag and drop gives you no proof that every byte arrived. PhotoDrop copies each file while hashing it, checks the copy against the card, skips anything already in your library, and keeps a RAW together with its sidecars and edits.
It sorts everything into a year and day folder tree from the capture date, writes a verification receipt at every destination, and can make extra verified copies for backups in the same pass.
§ Features
- A date-organized library with folder and filename templates and four built-in layouts.
- A RAW and its sidecars (.xmp, .dop, .pp3, .aae), JPEG pair and audio note move as one unit.
- Copies are hashed in flight with xxHash64 and checked against the source.
- Skips files already in your library by content, not just by name.
- Writes JSON, CSV and MHL manifests, and can re-verify the library later to catch bit rot.
- Any number of independently verified mirror copies in one pass, for 3-2-1 backups.
- Cull frames or whole days on a contact sheet before importing.
- A menu bar item that notices cards, with one-click ingest, auto-eject and notifications.
§ At a glance
| Runs on | macOS 14 or later |
| Version | 0.5.1 · Sept 24, 2026 |
| Price | Free |
| License | MIT |
| Data collected | None |
| Also includes | photodrop CLI |
§ Install
Install
brew install --cask tsvb/tap/photodropmac
Or download the DMG from the latest release and drag PhotoDrop to Applications. The Homebrew install also puts the photodrop command on your PATH.
§ Safety
- Nothing is ever overwritten. Name collisions get a suffix like
_1. - A file only counts as done once its copy matches the source. A mismatch stops the job.
- Bundles are all-or-nothing: if one file fails, that bundle's copied files are removed.
- Auto-eject waits if the card still holds files PhotoDrop didn't take.
- No telemetry, analytics or crash reporting. The only connection is an opt-in update check.
- Updates install only with a valid signature, and never during an import.
§ Pairs with
To browse a PhotoDrop library in DxO PhotoLab, which only shows one folder level at a time, use flatlink.
§ Questions
- Will PhotoDrop overwrite files already in my library?
- No. Files already anywhere in the destination are found by content and skipped, and name collisions get a suffix like
_1. - Do my RAW edits (.xmp, .dop) stay with the RAW?
- Yes. A RAW, its sidecars, its JPEG pair and its audio note are copied as one unit. If anything in the bundle fails, the whole bundle is rolled back.
- Does PhotoDrop send any data?
- Only an opt-in update check, which carries nothing about you or your photos. There's no telemetry, analytics or crash reporting.
- Is it on the Mac App Store?
- No. It's deliberately unsandboxed, because it needs unrestricted file access and
diskutilto eject cards, and that rules out the Mac App Store. It ships as a signed, notarized DMG and a Homebrew cask.