Photos Sorter
Free · open source · Tkinter desktop app

Sort your photos by the day they were taken.

A desktop app that reads each photo's date and copies it into a tidy Year / Month folder tree. Your originals are never moved or deleted.

Output folder
Unsorted input
IMG_4821.jpg VID_0192.mp4 IMG_9920.png IMG_5003.heic
sorted by capture date
2024
06-June
IMG_4821.jpg
VID_0192.mp4
07-July
IMG_5003.heic
2023
12-December
IMG_9920.png
Download for macOS All platforms
Free & open source · macOS, Windows & Linux
Your originals never move.
Photos Sorter only ever copies. Nothing in your source folder is renamed, moved, or deleted — ever. No other data on your system is touched.
Features

Everything it does for your library

Smart about dates, careful with your files.

Smart date detection

Reads EXIF capture dates, Google Takeout sidecars and filesystem timestamps — in priority order — so every file lands on the right day.

Tidy folder trees

Organises everything into Year / Month folders. Choose plain numbers (2024/06) or named months (2024/06-June).

Google Takeout ready

Turn on Takeout mode and it reads photoTakenTime from each sidecar JSON. The JSON files are never copied across.

Every common format

JPEG, PNG, HEIC/HEIF, MOV and MP4. Input folders are scanned recursively, however deep they go.

No overwrites, ever

Duplicate names are auto-renamed — IMG_001.jpg becomes IMG_001 (1).jpg. Nothing is lost.

Bilingual & remembered

Full English and Spanish UI with localised month names, and your settings saved between runs.

How it works

Three steps to a sorted library

01

Pick a folder

Point Photos Sorter at any folder of photos and videos — nested subfolders included.

02

Choose your options

Month format, language and Google Takeout mode. Set them once — they're remembered.

03

Get a sorted copy

A clean Year / Month tree appears in your output folder. Originals stay exactly where they are.

Good to know

When a file might land in the wrong place

Videos use file dates

Videos (.mov, .mp4) don't have their embedded capture date read — they're sorted by file-system timestamps (or a Google Takeout date, if present). If those were altered, a video can land in the wrong month.

Photos with stripped metadata

Screenshots, edited exports, and images received via apps like WhatsApp often lose their EXIF data and fall back to file dates — usually when you downloaded the file, not when it was taken.

Unsupported formats are skipped

Only JPEG, PNG, HEIC/HEIF, MOV and MP4 are processed. RAW (CR2, NEF, DNG), TIFF, GIF, WebP, AVI, MKV and others are skipped and left untouched.

No date? Nothing is lost

If no capture date and no file date can be read at all, the file is copied into an "Unknown" folder so nothing is lost — you can sort those by hand.

Download

Get Photos Sorter

Free and open source. Grab a build for your system, or run it from source.

macOS
macOS 11+ · .app bundle
Download
Windows
Windows 10 / 11 · .exe
Download
Linux
Standalone binary
Download
First launch — your system may block it

These builds are unsigned, so your OS shows a one-time security warning. Here's how to allow Photos Sorter on each system.

macOS

macOS says the app is from an unidentified developer and can't be checked for malware. After moving Photos Sorter to your Applications folder, run this once in Terminal, then open it normally:

xattr -dr com.apple.quarantine "/Applications/Photos Sorter.app"
Windows

Windows SmartScreen warns that the publisher is unknown. Click "More info" on the dialog, then "Run anyway".

Linux

Make the AppImage executable, then run it:

chmod +x Photos-Sorter-linux.AppImage
./Photos-Sorter-linux.AppImage
Or build from source
Requires Python 3.13+ and the uv package manager.
Build the installer (choose your OS — macos, windows, linux):
$ cd app && make macos