Open Source · macOS

Photos in. Organized out.

Command-line tools for backing up and organizing photos and videos into a structured archive by date. Connect your phone, download, run one command. Duplicates handled automatically. Works great as a family photo archive.

macOS users: Do not run the tools directly until you run bash install.sh from the extracted archive. The installer clears the macOS Gatekeeper restriction automatically.

1. Download

Get photos off your phone

Open Image Capture on your Mac and download photos and videos into any folder. Don't worry about what you've already imported—just download everything.

2. Run photocopy

One command sorts everything

photocopy reads the creation date from each file's EXIF or QuickTime metadata, copies it into the correct year and day directory, and renumbers chronologically.

3. Done

Duplicates handled automatically

Files are compared byte-for-byte. Exact duplicates are removed. New photos are merged into the correct position. Your archive stays clean without any manual work.

Six tools, one binary

A single binary that operates as six different tools via symbolic links. The installer creates all the links for you.

photocopy

photocopy [--include-live] <source> <archive>

Copy photos and videos from a source directory into a date-organized archive. Automatically deduplicates and renumbers after copying. Skips Live Photo MOV clips by default.

photorenumber

photorenumber <dayDirectory>

Sort all files in a day directory by creation date and renumber them sequentially. Run this after manually adding or removing files.

photodedup

photodedup <dayDirectory>

Remove duplicate files using byte-for-byte comparison. Only exact duplicates are removed—no guessing based on name, size, or date. Renumbers after dedup.

photocheck

photocheck <yearDir | dayDir>

Validate that each file's embedded creation date matches the directory it lives in. Read-only—reports mismatches without moving anything.

photocheckexif

photocheckexif <directory>

Display the EXIF creation date metadata for every photo in a directory. Flags files that have no embedded creation date.

videocheckqt

videocheckqt <directory>

Display QuickTime creation date and duration for every MOV file. Flags potential Live Photo clips (4.5 seconds or shorter).

Date-organized directory structure

Photos and videos are organized by year and day. Each file is renamed with its creation date and a sequential number.

# Import new photos
photocopy ~/Downloads/phone-photos /Volumes/Photos

# Archive structure
/Volumes/Photos/
  2024/
    03-15-2024/
      2024-03-15-0000.JPG
      2024-03-15-0001.HEIC
      2024-03-15-0002.MOV
    07-04-2024/
      2024-07-04-0000.HEIC
      2024-07-04-0001.HEIC
      2024-07-04-0002.MOV

# Files without dates go here for manual review
~/Downloads/phone-photos/UNKNOWN_DATES/

Built for real photo libraries

Designed around actual workflows—importing from phones, merging family archives, and keeping everything organized over years.

Family archive friendly

Everyone in the family can connect their phone, download to a folder, and run photocopy against the same archive. All photos end up organized together by date, duplicates removed automatically.

No data loss

Files are only ever deleted during deduplication, and only when they are byte-for-byte identical. All other operations—copy, rename, check—are non-destructive.

Live Photo handling

Live Photo MOV clips (short companion videos paired with HEIC files) are skipped by default. Use --include-live to import them along with everything else.

Directory date wins

If you manually place a file in a day directory, that directory's date takes precedence over the file's metadata. The tools will never silently move your files based on EXIF data.

Download and run, or build from source

Grab the binary and go. Or clone the repo and build it yourself.

Download for macOS

macOS users: Do not run the tools directly until you run bash install.sh from the extracted archive. The installer clears the macOS Gatekeeper restriction automatically.

# Or build from source
git clone https://github.com/toddvernon/photoTools.git
cd photoTools
make install
JPG / JPEG HEIC MOV

EXIF metadata for photos, QuickTime metadata for videos.