macOS · Swift · SwiftUI
ShootSort
Plug in the card. The shoot is filed before you've put the camera down — checksum-verified copies sorted by year, camera, and month.
Apple silicon, macOS 14 or later. Developer ID signed and notarized — unzip, drag ShootSort.app to Applications, open it.
It never touches the card.
ShootSort only ever reads the source. It does not delete, rename, move, or rewrite a single file on the card — every ingest is a copy, verified by checksum before it counts as done. Ejecting after a successful copy is opt-in, and even then it only ejects; it never erases.
The structure
One shape, every shoot.
<SSD>/<Year>/<Camera>/<Photos|Videos>/<Month>/<file> 2026/A7 IV/Photos/06 June/DSC00001.JPG 2025/FX3/Photos/12 December/DSC00003.JPG 2026/A7 IV/Videos/06 June/C0001.MP4
What it does
Filing, not fiddling.
Mounts, then files
Watches for cards and starts the ingest the moment one appears — optionally only when your chosen SSD is mounted.
Verified copies
Every file is copied and checksummed. A shoot is only marked done once the copy matches the original byte for byte.
Before and after
A dual-pane window shows the card on the left and the organized SSD on the right, with live progress and a recent-activity log.
Built for my own
card workflow.
ShootSort came out of shooting enough that filing became the bottleneck. If it fits yours too, it's free — and if it doesn't, tell me what's missing.