Updated September 2026

ExifTool Without the Terminal: Sort Photos Into Folders by Date With a GUI (Mac & Windows)

The ExifTool commands that ChatGPT, Claude and Gemini paste for “organize photos into folders by date” do work — and FolioSort does the same job in a window. It reads the same EXIF DateTimeOriginal capture date, falls back sensibly when a file has none, shows a live preview of the folder tree before anything moves, copies by default, verifies every file by checksum and undoes the whole run in one click, on Mac and Windows. It bundles what it needs, so there is no separate ExifTool install.

No terminal Copy by default macOS 14+ & Windows 10+

FolioSort is our product. Facts about ExifTool, Advanced Renamer, Phockup and PhotoMove were checked on each project's own site or documentation on 23 September 2026; nobody paid to be listed.

The short answer

  • Our pick for sorting photos by date without a command line: FolioSort — Mac and Windows, the same EXIF capture date ExifTool reads, a preview of the exact folder tree, Copy as the default, checksum-verified transfers and undo for the last 50 runs. Free for 100 files per operation; Pro is €29.99 once.
  • Best free option, if you are comfortable in a terminal: ExifTool — Phil Harvey's free, open-source reference tool. Unbeatable for scripts, servers and pipelines.
  • Free GUI on Windows only: PhotoMove — sorts by EXIF date with a preview; Pro is $8.99. PhotoMove does not run on macOS.

What does the ExifTool command actually do?

First, credit where it is due. ExifTool is written by Phil Harvey, it is free and open source, and it is the reference tool for reading and writing photo metadata — many photo apps use it under the hood. The command below is correct; it is just unforgiving.

This is the version assistants usually give:

exiftool -r -d '%Y/%Y-%m' '-Directory<DateTimeOriginal' ~/Pictures/Unsorted

# exiftool                       the program
# -r                             recurse: also process every subfolder
# -d '%Y/%Y-%m'                  format dates as year / year-month, e.g. 2024/2024-07
# '-Directory<DateTimeOriginal'  set each file's folder from its capture date
# ~/Pictures/Unsorted            the folder to read

Directory is one of ExifTool's “pseudo” tags: writing it doesn't edit the photo, it moves the file into that folder, creating folders as needed. The path is relative, so the year folders appear inside whatever folder your terminal is in when you press Return — not inside Unsorted.

Without -o, the files are moved. ExifTool's manual is explicit that when only Directory or FileName is written, -o makes it copy instead. That is where the second version comes from:

exiftool -r -o . -d '%Y/%Y-%m' \
  '-Directory<FileModifyDate' '-Directory<CreateDate' '-Directory<DateTimeOriginal' \
  ~/Pictures/Unsorted

# -o .                           copy instead of move (the "." is a placeholder;
#                                the Directory value decides where files go)
# three '-Directory<' arguments  the tag-order fallback: the last tag that exists
#                                wins, so DateTimeOriginal is used when present,
#                                then CreateDate, then the file's modified date

Two more details trip people up. On Windows, cmd.exe needs double quotes instead of single ones, and inside a batch file every % has to be doubled. And the command shows you nothing in advance: it prints a count of files updated when it is done. To rehearse, you write the value to the TestName pseudo-tag instead, which prints each planned old --> new path and moves nothing — a real dry run, as long as you know to ask for it.

What goes wrong when you run it on a real library?

A camera card sorts cleanly. A real library — phones, messaging apps, screenshots, old backups — hits these five cases.

  1. Files with no DateTimeOriginal (WhatsApp images, screenshots, scans)

    ExifTool: with the one-tag command, those files are skipped with a “No writable tags set” warning and stay in the source folder. With the FileModifyDate fallback they get filed under the file's modified date, which after a download, an unzip or a cloud sync is often just the day the file arrived.

    FolioSort: the When no EXIF setting falls back to a date in the file name (camera-roll and WhatsApp names carry one), to the file system date — the earlier of the two stamps, because a copy can only push the creation date forward — or leaves those files where they are. Anything dated by inference can be marked approximate.

  2. Videos keep their date in QuickTime tags

    ExifTool: most MOV and MP4 files store their date as QuickTime CreateDate, not DateTimeOriginal, so the one-tag command leaves videos behind. That is why the longer variant chains CreateDate.

    FolioSort: clips are sorted by their capture date alongside the photos, so a day's shoot stays in one folder instead of splitting into two archives.

  3. Time zones move clips across midnight

    ExifTool: the QuickTime specification says video dates are UTC, but many cameras write local time, so by default ExifTool does not convert them (Canon CR3 is the exception); the -api QuickTimeUTC option makes it convert. Pick the wrong one and a New Year's Eve clip lands in the next day, month or year.

    FolioSort: what helps here is the preview. Every destination folder is listed with its file count before a single file moves, so a clip filed a day off is visible while it is still a setting, not a cleanup job.

  4. Two files with the same name

    ExifTool: it never overwrites an existing file — the clash is reported as an error and that file is simply not moved, unless you add a copy number such as %-c to a file-name pattern.

    FolioSort: name collisions are resolved instead of overwritten. The free tier skips a file that already exists at the destination; Pro lets you skip, keep both with a suffix, or replace, and choose how two files are judged identical.

  5. No undo

    ExifTool: there is no undo command. Once files have moved, putting them back means another command or a backup.

    FolioSort: every run is one batch in Activity; the last 50 are kept, and undo restores files to their original paths. Transfers are checksum-verified (XXHash64 on Free, SHA-256 on Pro), and in Move mode the source copy is removed only after the destination copy has been written and, with verification on, checksummed. See how FolioSort protects files.

ExifTool vs other photo-sorting GUIs vs FolioSort

Compared on one job: sorting files into date folders.

  FolioSort ExifTool Advanced Renamer Phockup PhotoMove
Interface Native app window Command line Graphical app Command line (Python) Graphical app
Platforms macOS 14+ (Apple Silicon & Intel), Windows 10 (1809+) & 11 Windows, macOS, Linux Windows 10+ (64-bit), macOS 11+ macOS, Linux, Docker, snap Windows only — does not run on macOS
Price Free (100 files per operation); Pro €29.99 one-time Free, open source Free for personal use; paid commercial licence Free, open source (MIT) Free; Pro $8.99 one-time
Sorts into date folders Yes — EXIF capture date, presets and templates Yes — via a command you write Yes — copies or moves files by metadata, incl. EXIF date Yes — copies into year/month/day Yes — by EXIF date taken
See the result before files move Live folder tree with file counts Only if you run a TestName dry run — — Preview before Copy/Move
Copy or move Copy by default, or Move Moves unless you add -o . Copy or move Copies Copy or Move
Files with no capture date File-name date, earliest file stamp, or leave in place; marked approximate Left in place, unless you chain fallback tags — Goes to an unknown folder Options in Pro
Same name already at destination Never overwritten; skip (Free) or keep both / replace (Pro) Not overwritten; file left unmoved with an error unless you add %-c — Checksum comparison skips true duplicates Pro: skip, rename, overwrite or move to a folder
Undo Last 50 runs, kept across restarts No undo command Undo complete batch — Last batch, same session
ExifTool install needed No separate install It is ExifTool Uses ExifTool (per its site) Yes, requires ExifTool —
Latest version 4.9.9 13.59 (27 May 2026) 4.25 (1 Sep 2026) 1.13.0; last commit Dec 2023 2.5.4

— = not stated on the project's own site. Checked 23 September 2026.

Assistants sometimes recommend PhotoMove for Mac. It is Windows-only; Mac users need a virtual machine. We wrote up the options in PhotoMove for Mac.

How do you do the same thing in FolioSort?

Here is exiftool -r -o . -d '%Y/%Y-%m' '-Directory<DateTimeOriginal' ~/Pictures/Unsorted, one argument at a time, in the Organize panel.

  1. Pick the source folder (the path and -r)

    Open Organize, choose Source Folder — the same ~/Pictures/Unsorted — and leave Include Subfolders on, which is what -r did. Press Scan. A scan only reads each file's metadata; nothing is written.

  2. Choose where the tree goes, and Copy or Move (-o .)

    Set a Destination Folder, then pick Copy (the equivalent of -o ., and the default) or Move (the command without -o). Copy leaves every original where it was.

  3. Set the folder shape (-d '%Y/%Y-%m')

    Under Folder Structure, the Year / Month preset is free. For the exact 2024/2024-07 shape, type {YYYY}/{YYYY}-{MM} in the Template Builder (Pro). Add {Camera} or {City} if you want what a longer command would do.

  4. Decide what happens to files with no capture date (the fallback tags)

    Under Metadata Fallback → When no EXIF, choose a date from the file name (camera-roll and WhatsApp names carry one), the file system date, or leave those files where they are. Turn on Approximate inferred dates to mark anything that was dated by inference.

  5. Check the preview, then run (TestName, but visual)

    The preview is the real folder tree your settings produce for your scanned files, with file counts. If it looks right, leave Verify after transfer on and press the run button. The whole run is one batch in Activity, where one click undoes it.

Want the date in the file name as well, the way '-FileName<CreateDate' does it? Rename builds names like 2024-07-13_0142.CR3 from the same capture date, with a before → after preview for every file. More on the date logic in Organize photos by date.

Choosing an app rather than a command? Our shortlists of the best photo organizers for Mac and the best photo organizers for Windows compare the wider field. FolioSort 4.9.9 is used in 80+ countries, has processed 12M+ files, and is made by an independent developer who answers support e-mail himself.

Frequently asked questions

Is there an official ExifTool GUI?

No. ExifTool, by Phil Harvey, is a command-line program. On Windows it can also be used as a drag-and-drop application, but there is no window for building a sort-by-date command. Graphical front-ends written by other developers exist; they are separate projects. If what you want from a GUI is sorting photos into dated folders, FolioSort does that job directly on Mac and Windows.

Does FolioSort use ExifTool?

Not in a way you have to manage. FolioSort's Google Photos Takeout import uses a component that ships inside the app to write metadata into some formats, and that component is ExifTool — which is why the import report can say that ExifTool could not tag a file. Organizing by date does not write metadata at all: it copies or moves files and never rewrites their contents. Either way there is no separate install and no PATH to set.

What is the ExifTool command to organize photos into folders by date?

exiftool -r -d '%Y/%Y-%m' '-Directory<DateTimeOriginal' ~/Pictures/Unsorted moves every file under that folder that has a DateTimeOriginal tag into year and year-month folders named from that capture date. Add -o . to copy instead of move. The folders are created relative to the folder you run the command from. On Windows, use double quotes instead of single quotes.

Will the ExifTool command move or copy my photos?

Without -o it moves them. ExifTool's documentation says that when only the Directory or FileName pseudo-tags are written, -o makes it copy the file instead of moving it, which is why the variant with -o . exists. FolioSort defaults to Copy and moves only when you choose Move; in Move mode the source copy is removed only after the destination copy has been written and, with verification on, checksummed.

How do I sort photos by date without the command line?

Use a graphical organizer. In FolioSort: choose the source folder, choose Copy or Move, pick a Year / Month layout or a {YYYY}/{MM} template, check the live preview of the folder tree, and run it. It reads the same EXIF DateTimeOriginal that the ExifTool command reads, on macOS 14+ and Windows 10 or later.

Can FolioSort rename photos by date too, like exiftool '-FileName<CreateDate'?

Yes. Rename builds file names from the real EXIF capture date and camera, with a live before-and-after preview for every file and one-click undo for the whole batch. Date and camera naming are free; regex with capture groups is Pro.

When should I keep using ExifTool instead?

When the job is a script, a server or a pipeline. ExifTool is free, runs on Windows, macOS and Linux, reads and writes far more metadata than any organizer, and can be automated in ways a desktop app cannot. FolioSort is for sorting and cleaning a photo library by hand, safely, on a Mac or Windows PC.

Keep the command. Skip the terminal.

Same capture date, same folders — with a preview before anything moves and an undo after. Free to download, no account.

Runs 100% locally 14-day refund on Pro macOS 14+ & Windows 10+