WanderSort is a local-first media organiser that scans your chaotic pile of photos and videos — scattered across hard drives, SD cards, and phone dumps — and structures them into a clean, human-readable folder tree you actually understand.
No cloud uploads. No subscriptions. No AI deciding what's "relevant." Just your files, your rules, your structure.
You went to the coast six months ago. Shot a ton on your phone — some on a DSLR too. You want to make a reel. You remember the clip of that beach at golden hour, the slow-mo of waves crashing, the photo your friend edited and airdropped back.
Where is any of it?
You open your laptop. DCIM. Backup. Camera Roll. New Folder (2). Backup_old_old. A USB drive labelled "Photos 2023" that might actually be from 2022. Forty minutes in, you've found half the clips, zero of the edited versions, and you've already given up on finding the DSLR shots.
This is the problem. You've got 40,000 photos. Maybe 200,000. Years of memories spread across devices, drives, and folders — and no sane way to find what you need when you actually need it.
The specifics make it worse:
- Phone dumps — 3 copies of the same photo because you backed up twice and forgot.
- DSLR shoots — RAW + JPG + sidecar files, all separated from each other.
- Live Photos — the
.HEIC, the.MOV, the.AAEedit file — scattered across 3 different folders. - Edited variants —
IMG_E3162.HEICsitting next toIMG_3162.HEICwith no way to know which is which.
WanderSort's goal is simple: you should never have to dig through that mess again.
Point it at your drives. Let it scan, hash, group, and score. Review the proposed structure. Hit go. Your files land where they belong — organised by date, by location, by event — in a folder tree that makes sense to a human being, not an algorithm.
And the next time you dump 500 photos from a trip? Just point WanderSort at the folder. It already knows the structure. It already knows what's duplicated. It just slots the new files in.
Your memories. Your structure. Your machine.
WanderSort is for people who care about where their files actually live.
- Content creators who shoot in multiple formats and need a predictable folder structure they can navigate and rely on.
- Photographers with years of RAW + JPG pairs, sidecar files, and edited variants that need to stay grouped — not scattered.
- Digital hoarders (respectfully) who have terabytes of memories and want to finally organise them — and keep them organised going forward.
- Home-lab and self-hosting folks with a stack of HDDs/SSDs and a NAS, who want their media organised on their own hardware — not rented from a cloud.
If you want a visual hierarchy — 2024/08_August/02_04/<city>/sunset_01.heic instead of DCIM/100APPLE/IMG_4721.HEIC — WanderSort is being built for you.
If Google Photos or iCloud works for you — genuinely, no judgement — this isn't your tool. WanderSort is for people who want to own their media organisation, not rent it.
WanderSort is a single, self-contained command-line binary.
Build from source (requires Go 1.27+):
git clone https://github.com/jammutkarsh/wandersort.git
cd wandersort
make install installs to $GOPATH/bin/wandersort (requires Go 1.27.1 or above)# Do everything on screen: settings, adding folders, correcting the plan.
wandersort
# Or step by step. Dependencies (ExifTool + locationDB) download on first
# use, in up to three tries.
wandersort add --paths ~/Pictures,/Volumes/SD # plan where every file goes
wandersort organise # correct the plan
wandersort copy # copy the files in
wandersort check # later: verify the librarySettings (folder layout, home and work, fine-tuning) live in the library itself, so each library keeps its own.
wandersortopens the one you used last;--output-pathpicks another.
add, copy and check need no terminal. Without one they never prompt and print one line per stage. With no library yet, add creates ~/WandersortLibrary with default settings.
# every night: plan new uploads, then copy them in
0 2 * * * wandersort add -p /mnt/uploads -o /mnt/photos && wandersort copy -o /mnt/photos| Exit | Meaning |
|---|---|
| 0 | Finished (also when there was nothing new) |
| 1 | Stopped by an error; the next run carries on |
| 2 | Couldn't start: bad flags or arguments |
| 3 | Finished, but some files failed; each is named |
| 4 | Another wandersort is using the library |
--json prints one result object on stdout at the end, failures included; progress stays on stderr. A copy that leaves files out writes an HTML page listing each one, grouped by the drive it came from, beside that run's log in ~/.wandersort/logs/.
Run wandersort --help, or wandersort <command> --help, for the full command and flag reference.
The codebase map is CLAUDE.md; coding rules are in AGENTS.md.
Inspired by @WanderWithSky