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.