How to Batch Rename Thousands of Photos by Client and Date

Turn 2,000 files called IMG_4821 into names that say whose photo it is and the second it was taken. Free tools for Windows and Mac, no coding needed.

· Media & file organizer · 11 min read

Six months after the wedding, the couple emails: they want the photo by the lake, just after the ceremony. You open the folder and find 2,000 files called IMG_4821 and DSC_0007, from two cameras that both counted from 0001, plus a phone’s worth of HEIC files. Last month’s client has the same file names.

Now the same folder after one batch rename:

Before and after
IMG_4821.HEIC  →  2026-03-14_hartley-wedding_142305.heic
DSC_0007.NEF   →  2026-03-14_hartley-wedding_142311.nef
DSC_0007.JPG   →  2026-03-14_hartley-wedding_142311.jpg
C0042.MP4      →  2026-03-14_hartley-wedding_150218.mp4

The ceremony ended at two. Search for hartley-wedding_14 and you see only what was shot between 2 and 3 pm, in order, with each RAW file next to its JPEG. Every name says whose photo it is and the second it was taken.

This guide shows how to batch rename files by date and client like this, for a whole shoot at once. It uses free tools on Windows and Mac and needs no coding: the longest command is one line you copy, paste and edit. It is written for photographers, agencies and office teams who handle other people’s files.

The short answer

  1. Copy the shoot to a working folder, with one folder per client.
  2. Rename by the date taken stored inside each photo (EXIF DateTimeOriginal), never by the file’s created or modified date.
  3. Use PowerToys PowerRename on Windows or the free ExifTool on Windows and Mac. Preview the new names, then apply.

The rest of this guide covers each step, the commands to copy and the mistakes that cost people their originals.

Step 1: Decide the naming pattern before you rename anything

Pick one pattern and use it for every client. A pattern that works for most teams puts the date first, then the client, then a part that keeps names unique:

Naming pattern
2026-03-14_hartley-wedding_142305.jpg
PartExampleRule
Date2026-03-14Year, month, day, with leading zeros, so an A to Z sort is also a date sort
Client or projecthartley-weddingLowercase, hyphens instead of spaces, no accents; the same spelling every time
Unique part142305Time taken (hours, minutes, seconds) or a padded counter such as 0042
Extension.jpgLeave it alone; a renamed extension can make the file unopenable

Underscores separate the parts and hyphens join words inside a part. That way a person, a spreadsheet or a script can split the name back into date, client and number.

  • Never put a colon in the time. Windows does not allow < > : " / \ | ? * in file names, so 14:23:05 has to become 142305.
  • Avoid dates like 14-03-2026 or 03-14-2026. They sort by day or month, not by year, and readers in other countries read them differently.
  • Keep names short. Windows paths are limited to 260 characters by default, and deep client folders use up that budget quickly.

Step 2: Use the date the photo was taken, not the file date

Every photo has several dates, and only one of them is reliable. Your computer shows the file dates by default, which is why renaming by “Date created” so often gives wrong results.

DateWhere it comes fromSafe for renaming?
Date takenWritten into the photo by the camera (EXIF DateTimeOriginal)Yes; it stays the same when you copy, move or back up the file
Date createdSet by your computer when the file arrives on the diskNo; copying from the card often resets it to the day of the copy
Date modifiedSet every time the file is saved or exportedNo; editing a photo changes it
Video creation dateWritten into the clip by the camera (QuickTime CreateDate)Usually; some cameras store UTC and others local time, so check one clip

In Windows File Explorer, right-click the column headers in Details view and add “Date taken”. On a Mac, open the photo in Preview, choose Tools, then Show Inspector, and look at the EXIF tab. If the date taken is empty, the file was probably sent through a messaging app or screenshotted, which strips the metadata.

Check the camera clock before you trust the dates. If a camera was an hour off after a daylight-saving change, or two cameras disagreed, fix the dates first. ExifTool (option B below) can shift them in one command; this example moves every date in the folder forward one hour and keeps a backup copy of each file:

Shift all dates by one hour
exiftool "-AllDates+=1" "D:\Shoots\hartley-wedding"

Step 3: Work on a copy, one shoot at a time

A batch rename touches every file at once. Before you start, copy the shoot to a working folder and keep the card or the backup untouched until you have checked the result.

Sort files by client before you rename. The date tells you when a photo was taken, but not who it was for. If you shoot two clients on the same day, put each client’s files in their own folder first, then rename one folder at a time with that client’s name. The section on several clients in one day, further down, shows a quick way to split them.

Step 4: Pick a tool that can read the date taken

Most built-in rename features only add numbers, or use the file date. Here is what each common tool can do:

ToolRuns onReads date takenBest for
File Explorer (F2)WindowsNoGiving a group one name with numbers in brackets
Finder RenameMacNo; its date option uses today’s dateAdding text or a counter to a handful of files
PowerToys PowerRenameWindowsYes, in recent versionsPhotos, with a live preview before you commit
Bulk Rename UtilityWindowsYes, once EXIF reading is turned on in its optionsMany rename rules in one window; business use needs a paid licence
Adobe BridgeWindows, MacYes, as Date Created in Batch RenameTeams that already work in Adobe apps
ExifToolWindows, Mac, LinuxYes, for photos and videosLarge shoots, RAW files, videos and folder sorting
Lightroom ClassicWindows, MacYesPhotos already imported into a catalog

Bulk Rename Utility reads the date taken through its Auto Date panel with the type set to Taken (Original), but only after you tick the option to extract EXIF data, which is off by default because it is slow. Adobe Bridge renames in the order the files are sorted on screen, so sort by Date Created before you start.

If your photos are already in a Lightroom Classic catalog, rename them inside Lightroom (Library, then Rename Photos). Renaming files outside Lightroom breaks the catalog’s links, and every photo shows up as missing.

Option A: PowerRename on Windows

PowerRename is part of Microsoft PowerToys, a free download from Microsoft. Recent versions can read photo metadata, including the date taken.

  1. Install or update PowerToys, then select all photos in the client folder in File Explorer.
  2. Right-click and choose Rename with PowerRename.
  3. In Search for, enter ^.*$ and tick Use regular expressions. This matches the whole name.
  4. Choose the EXIF option for date and time values, and set Apply to Filename only so the extension stays.
  5. Leave Enumerate items off and enter the pattern below in Replace with.
  6. Read the preview column. When every new name looks right, click Apply.
PowerRename Replace with
$DATE_TAKEN_YYYY-$DATE_TAKEN_MM-$DATE_TAKEN_DD_hartley-wedding_$DATE_TAKEN_HH$DATE_TAKEN_mm$DATE_TAKEN_SS

That gives names like 2026-03-14_hartley-wedding_142305.jpg, the same pattern as the ExifTool method below. If the result is wrong, press Ctrl+Z in File Explorer straight away to undo the rename.

  • Do not add a counter such as ${} to this pattern. In current versions, PowerRename works out where the counter goes before it fills in the date patterns, so the counter can land in the wrong place or the rename can fail.
  • Two photos taken in the same second, such as a burst, cannot both get the same name. One of them will not be renamed; rename those with ExifTool, which adds -1, -2 automatically.
  • The plain $YYYY, $MM and $DD patterns use the file creation date, not the date taken. For photos, always use the $DATE_TAKEN versions.

Option B: ExifTool on Windows and Mac

ExifTool is a free command-line program that has been the standard for photo metadata for over 20 years. It reads the date taken from JPEG, HEIC, RAW and video files, and it can rename thousands of files in seconds. It looks technical, but you only need two commands.

First, a dry run. The testname option prints what each file would be called without renaming anything:

Dry run (nothing is renamed)
exiftool -d "%Y-%m-%d_hartley-wedding_%H%M%S%%-c.%%e" "-testname<DateTimeOriginal" "D:\Shoots\hartley-wedding"

When the output looks right, run the same command with filename instead of testname:

Rename for real
exiftool -d "%Y-%m-%d_hartley-wedding_%H%M%S%%-c.%%e" "-filename<DateTimeOriginal" "D:\Shoots\hartley-wedding"
CodeBecomesWhy
%Y-%m-%d2026-03-14The date taken, in sortable order
%H%M%S142305The time taken, without colons
%%-c-1, -2 …Added only when two photos share the same second, such as a burst
%%ejpg, nef, mp4Keeps the original extension

Using the time taken instead of a counter has one big advantage: the name does not depend on the order of the files. A RAW file and its JPEG get the same name with different extensions, so they stay paired. And if you add files later, nothing already renamed has to change.

  • On a Mac, use a path like ~/Pictures/Shoots/hartley-wedding. Double quotes work in Terminal, Command Prompt and PowerShell.
  • Add -r before the folder path to include subfolders.
  • In a Windows .bat file, double every % sign.
  • Files without a date taken are skipped and reported. You can fall back to other dates by repeating the option: "-filename<FileModifyDate" "-filename<CreateDate" "-filename<DateTimeOriginal". The last date that exists wins.

ExifTool can also sort files into dated folders. New folders are created in the folder your terminal is in, not next to the photos, so open the terminal inside the client folder first. On Windows, type cmd in the File Explorer address bar of that folder and press Enter. On a Mac, type cd and a space in Terminal, drag the folder onto the window and press Return. Then run this; the dot means the current folder:

Sort into folders by day
exiftool -d "%Y-%m-%d" "-directory<DateTimeOriginal" .

Several clients on the same day

When one card holds three sessions, the date alone cannot separate the clients, but the time can. Write down when each session started and ended. Your calendar already has this:

schedule.csvDELIMITER , · 3 ROWS
datestartendclient
2026-03-1409:0011:30hartley-wedding
2026-03-1413:0014:30novak-headshots
2026-03-1416:0018:00bloom-cafe

On Windows, open the card’s folder in File Explorer, switch to Details view and sort by Date taken. Click the first photo of a session, Shift-click the last one and drag the selection into that client’s folder. A long gap in the times usually marks the break between sessions.

On a Mac, Finder cannot sort by date taken, so let ExifTool split the shoot into one folder per hour, then drag each hour folder to the right client. Open the terminal in the card’s folder as described above and run:

One folder per hour
exiftool -d "%Y-%m-%d_%Hh" "-directory<DateTimeOriginal" .

That creates folders such as 2026-03-14_13h. Check the hour in which one session ended and the next began, since it may hold photos from both clients. Once every client has their own folder, rename each folder with the steps above.

Not photos? Renaming documents and scans by date

The same search, batch rename files by date, often means invoices, contracts or scans. These have no date taken, so pick the date that actually matches what the file is:

File typeDate to rename byHow
Scanned PDFsThe scan date stored in the PDF (CreateDate)ExifTool: use CreateDate instead of DateTimeOriginal in the commands above
Exports from a programThe modified date, if nobody edited the files sinceExifTool: use FileModifyDate; PowerRename’s $YYYY, $MM and $DD use the creation date instead
Invoices and contractsThe date printed on the documentRename tools cannot read it; it takes a script that reads each PDF, or a person

The naming rules from step 1 still apply: year first, one spelling per client or supplier, no colons. A folder of invoices named 2026-03-31_acme-supplies_inv-1043.pdf sorts itself and answers an accountant’s question in seconds.

Step 5: Check the result before you delete anything

  1. The number of files before and after is the same.
  2. Spot-check ten names against the date taken shown in File Explorer or Preview.
  3. Look for files that were not renamed; they had no date taken and need a decision.
  4. RAW and JPEG pairs still share a name, and sidecar files such as .xmp were renamed to match.
  5. The working folder is backed up before you clear the memory card.

Sidecar files deserve a note. Lightroom and other editors save edits in .xmp files next to RAW photos. A sidecar has no date taken of its own, so a date-based rename skips it and the edits get separated from the photo. Each sidecar has to be renamed to match its photo’s new name, so check for them before you start; a short script can handle the pairing.

Why this gets repetitive

Renaming one shoot takes ten minutes once you know the commands. The work that adds up is everything around it: splitting a day with three clients into the right folders, typing the client name the same way every time, fixing the camera clock, renaming videos with the photos and moving everything to the right place on the drive.

Example video · Sample data
Example video with sample data. Your automation app is built around your own workflow.

Those rules do not change from one shoot to the next, which makes them a good fit for a small program on your own computer. You drop the card’s files into one folder, and it reads the date taken, looks up the client from your schedule, renames every file and moves it into place. Nothing is uploaded, and a log records every old and new name so any rename can be reversed.

Common questions

How do I batch rename photos by date taken on Windows?

Use PowerToys PowerRename with the EXIF date taken patterns, or ExifTool with -filename<DateTimeOriginal. File Explorer’s own rename cannot read the date taken; it only adds numbers.

Can I rename files by date on a Mac without extra software?

Not by the date taken. Finder’s Name and Date format adds today’s date, not the date the photo was taken. ExifTool is free and works in Terminal for date-based renaming.

Why do my renamed photos have the wrong date?

The rename probably used the file’s created or modified date, which changes when files are copied or edited. Rename by the date taken (EXIF DateTimeOriginal) and check that the camera clock was set correctly.

Can I batch rename PDFs and documents by date?

Yes, but not by date taken, which only photos and videos have. Use the scan date stored in a PDF, or the modified date for files exported once from a program. The date printed inside an invoice needs a script that reads each file.

Will renaming photos break my Lightroom catalog?

Yes, if you rename them outside Lightroom. The catalog stores the old names and marks the photos as missing. Rename inside Lightroom, or rename before you import.