Home/Blog/Tutorials/Rename Multiple Files by Date on Windows and Mac — 6 Methods
TutorialsBeginner14 min read

Rename Multiple Files by Date on Windows and Mac — 6 Methods

Renomee Team

Published on September 7, 2026

How to Rename Multiple Files by Date on Windows and Mac (6 Methods)

Quick answer: On Windows, use PowerShell (built-in, supports milliseconds) or Bulk Rename Utility (free GUI, second precision). On Mac, use Terminal with bash (built-in) or Automator (GUI, limited format options). On both platforms, Renomee handles the same rules in plain English — including millisecond precision and combining dates with existing filenames. If your files are photos, use EXIF Date Taken instead — it never resets when you copy files.

You scan 200 contracts and get scan001.pdf, scan002.pdf. You download a week of bank statements and they all arrive as Statement.pdf. Your video project folder has final.mp4, final_v2.mp4, and FINAL_REAL.mp4. The date each file was last saved is sitting right there in the filesystem — you just need a way to stamp it onto the filename so the folder sorts itself.

This guide covers 4 Windows methods and 3 Mac methods, ordered by ease of use, with a clear breakdown of which ones support millisecond precision and how to combine a date with the file's existing name.


Quick Comparison: All 6 Methods

MethodPlatformDate Sourcems SupportGUISkill Level
PowerShellWindowsModified / Created★★★☆☆
Bulk Rename UtilityWindowsModified / Created★★★☆☆
PowerToys PowerRenameWindowsModified★★☆☆☆
RenomeeWindows + MacModified / Created★☆☆☆☆
Terminal (bash)MacModified / Created*⚠️★★★☆☆
AutomatorMacModified★★☆☆☆

* Mac Terminal requires mdls to read Birth Time (Creation date). Milliseconds require a Python 3 workaround.


Date Created vs Date Modified — Which Should You Use?

Before picking a method, choose the right timestamp.

TimestampSet byResets when
Date ModifiedOS — last file saveFile content is edited and saved
Date CreatedOS — file arrives hereFile is copied to a new location
Date TakenCamera EXIF — capture momentNever

The copy problem: If you move a folder of PDFs from an old laptop to a new machine, every file's Date Created becomes today. Date Modified stays unchanged. This is why:

  • Documents and downloads → use Date Modified. It reflects when the content was last changed, not when you moved it.
  • Scanned files you've never edited → use Date Created, as long as they haven't been copied since scanning.
  • Photos → use EXIF Date Taken. Both system timestamps are unreliable after any transfer or sync. See Rename Photos by Date Taken (EXIF).

Date Format Patterns — What Goes in the Filename?

Choose your format before setting up any tool. You'll reference these patterns throughout the methods below.

Date-only formats

YYYY-MM-DD        → 2026-09-07        ← Recommended — ISO 8601, alphabetical sort = chronological
YYYYMMDD          → 20260907          ← Compact — useful for short name limits or URL slugs
DD-MM-YYYY        → 07-09-2026        ← European style — alphabetical sort is wrong
MM-DD-YYYY        → 09-07-2026        ← US style — alphabetical sort is wrong

Always put the year first. Files named 2026-09-07_report.pdf sort chronologically everywhere — Windows Explorer, macOS Finder, Linux, cloud storage. Files named 09-07-2026_report.pdf do not.

Date + time formats (second precision)

Use these when multiple files share the same calendar date — for example, a dozen invoices all exported on the same day.

YYYY-MM-DD_HH-MM-SS       → 2026-09-07_14-30-22
YYYYMMDD_HHMMSS           → 20260907_143022         ← Compact, safe on all OS
YYYY-MM-DDTHH-MM-SS       → 2026-09-07T14-30-22     ← Full ISO 8601

Use - and _ as separators. Avoid : — Windows does not allow colons in filenames.

Millisecond precision formats

Most files don't need milliseconds. Use them when:

  • A process writes multiple files per second (server logs, database exports, automated pipelines)
  • You're renaming burst photos using filesystem dates instead of EXIF (EXIF is still a better source for photos — it stores sub-second data natively)
  • You need guaranteed uniqueness across a high-frequency batch
YYYYMMDD_HHMMSSfff        → 20260907_143022847
YYYYMMDD_HHMMSS_fff       → 20260907_143022_847     ← Underscore separator, easier to read
YYYY-MM-DD_HH-MM-SS_fff   → 2026-09-07_14-30-22_847

fff represents three millisecond digits (0–999). NTFS on Windows stores timestamps at 100-nanosecond resolution; APFS on Mac stores them at nanosecond resolution. The millisecond value is real data, not a placeholder.

⚠️ Not all tools can read or write milliseconds. See the comparison table below.

Combining the date with the existing filename

This is the most common real-world pattern — date as a prefix, original name preserved for reference.

PatternExample result
Date prefix + original name2026-09-07_Statement_August.pdf
Date-time prefix + original name20260907_143022_Statement_August.pdf
Date-ms prefix + original name20260907_143022_847_export_batch3.log
Original name + date suffixStatement_August_2026-09-07.pdf
Date only (replaces name)2026-09-07.pdf — use only when the date is the sole identifier

How to Rename Files by Date on Windows (4 Methods)

Method 1 — PowerShell: Rename Files by Date Modified or Created

PowerShell is built into every Windows installation and gives you the most control: choose Modified or Created, pick any date format, and go down to millisecond precision. Always use -WhatIf first to preview without changing anything.

Step 1. Open PowerShell (Win + X → Terminal, or search "PowerShell").

Step 2. Navigate to your folder:

cd "C:\Users\YourName\Documents\Contracts"

Step 3. Choose the command for your situation:

Date Modified prefix + keep original name

# Preview (no files are renamed)
Get-ChildItem *.pdf | Rename-Item -WhatIf -NewName {
    $_.LastWriteTime.ToString("yyyy-MM-dd") + "_" + $_.Name
}

# Execute
Get-ChildItem *.pdf | Rename-Item -NewName {
    $_.LastWriteTime.ToString("yyyy-MM-dd") + "_" + $_.Name
}

Statement_August.pdf2026-09-07_Statement_August.pdf

Date Created prefix + keep original name

Get-ChildItem *.pdf | Rename-Item -NewName {
    $_.CreationTime.ToString("yyyy-MM-dd") + "_" + $_.Name
}

Date + time (second precision) — prevents conflicts on same-day batches

Get-ChildItem *.pdf | Rename-Item -NewName {
    $_.LastWriteTime.ToString("yyyy-MM-dd_HHmmss") + "_" + $_.Name
}

Statement_August.pdf2026-09-07_143022_Statement_August.pdf

Millisecond precision — for log files or high-frequency exports

Get-ChildItem *.log | Rename-Item -NewName {
    $_.LastWriteTime.ToString("yyyyMMdd_HHmmss_fff") + "_" + $_.Name
}

app.log20260907_143022_847_app.log

The fff specifier writes exactly three millisecond digits, drawn from the real NTFS timestamp — not a counter.

Recursive — all subfolders at once

Get-ChildItem -Path . -Recurse -File -Filter *.pdf | Rename-Item -NewName {
    $_.LastWriteTime.ToString("yyyy-MM-dd") + "_" + $_.Name
}

Difficulty: ★★★☆☆
Milliseconds: ✅ native (fff)
Undo: ❌ no built-in undo — always test with -WhatIf first


Method 2 — Bulk Rename Utility: GUI Date Renaming with Full Format Control

Bulk Rename Utility is a free Windows tool. Its interface is dense but the live preview column shows every rename before you commit — nothing executes until you click Rename.

Step 1. Download and install from bulkrenameutility.co.uk. Free for personal use.

Step 2. Open BRU, navigate to your folder in the left panel, select your files.

Step 3. Locate the Auto Date (8) panel in the bottom-right area. Configure:

  • ModePrefix
  • TypeModified (or Created)
  • FmtYMD
  • Cent → checked (forces 4-digit year)
  • Sep_ (separator between date and original filename)
  • Seg- (separator between year, month, day)

Step 4. Check the New Name column. Correct? Click Rename.

Custom date formats in BRU

Switch Fmt to Custom and enter a format string:

%Y-%m-%d            → 2026-09-07
%Y%m%d_%H%M%S       → 20260907_143022
%Y-%m               → 2026-09   (group files by month)
%Y                  → 2026      (group files by year)

Date + original name combination in BRU

The Auto Date panel prepends the date. The original filename is preserved automatically — the prefix drops in front of whatever name is already there.

To append a date suffix instead: change Mode from Prefix to Suffix.

Limitation: BRU resolves to second precision only — no millisecond support. If two files share the same second, use the Numbering (5) panel to append a counter (_001, _002) alongside the date prefix.

Difficulty: ★★★☆☆
Milliseconds:
Undo: ❌ — preview carefully before executing


Method 3 — PowerToys PowerRename: Date Prefix via Right-Click

PowerToys PowerRename integrates directly into the File Explorer right-click menu. It's primarily designed for photo renaming by EXIF Date Taken — for general files, its date support covers Date Modified only and resolves to day precision (no time, no milliseconds).

Step 1. Install PowerToys from the Microsoft Store or GitHub releases. Free and open-source.

Step 2. Select your files in File Explorer → right-click → PowerRename.

Step 3. Enable Use Regular Expressions. Set:

  • Search(.+) (captures the full original filename)
  • Replace with$YYYY-$MM-$DD_$1

Step 4. Confirm the preview shows the date prefix. Click Rename.

The $YYYY, $MM, $DD variables reflect each file's Last Modified date. The $1 back-reference injects the captured original filename after the date.

Limitation: No Date Created variable for non-photo files. No time components, no millisecond support. If you need more than a date-only prefix for general files, use PowerShell or Bulk Rename Utility instead.

Difficulty: ★★☆☆☆
Milliseconds:
Undo: ✅ (PowerRename has a one-step undo in the top toolbar)


Method 4 — Renomee: Plain-English Date Rules, Zero Configuration

Renomee replaces format strings and regex with plain-English rules. Describe the rename, Renomee reads the file timestamps, builds a preview with conflict detection, and executes. Every session is logged with one-click undo.

Step 1. Open Renomee. Drag your folder in, or right-click files in File Explorer → Open with Renomee.

Step 2. Type your rule:

Prefix each file with its modification date in YYYY-MM-DD format, keep the original filename.

For second precision:

Add modification date and time as a prefix in YYYYMMDD_HHmmss format.
Keep the original filename after the timestamp.

For milliseconds:

Prefix each log file with its modification timestamp including milliseconds.
Format: YYYYMMDD_HHmmss_fff

For creation date:

Prefix each PDF with its creation date in YYYY-MM-DD format.

Step 3. Review the before/after preview. Conflicts — two files that would resolve to the same name — are highlighted before any file is touched.

Step 4. Click Execute. Undo from the history panel if needed.

Renomee also handles conditional logic that pattern-based tools cannot express:

# Use creation date when modification date is today (files freshly copied from another machine)
If the file's modification date is today, use creation date instead. Prefix with YYYY-MM-DD.
# Recursive with subfolder awareness
Prefix all PDFs in all subfolders with their modification date in YYYY-MM-DD format.

Difficulty: ★☆☆☆☆
Milliseconds:
Undo:


How to Rename Files by Date on Mac (3 Methods)

Method 5 — Terminal (bash/zsh): Rename Files by Date on Mac

Mac Terminal gives you full control over date format and file selection. The built-in date -r command reads modification time; for creation date (Birth Time), you need mdls. Milliseconds require a Python 3 script.

Step 1. Open Terminal (Spotlight → Terminal, or Applications → Utilities → Terminal).

Step 2. Navigate to your folder:

cd ~/Documents/Contracts

Step 3. Choose the command for your situation:

Date Modified prefix + keep original name

for f in *.pdf; do
  prefix=$(date -r "$f" +%Y-%m-%d)
  mv "$f" "${prefix}_${f}"
done

Statement_August.pdf2026-09-07_Statement_August.pdf

Date + time (second precision)

for f in *.pdf; do
  prefix=$(date -r "$f" +%Y-%m-%d_%H-%M-%S)
  mv "$f" "${prefix}_${f}"
done

Statement_August.pdf2026-09-07_14-30-22_Statement_August.pdf

Date Created (Birth Time) on Mac

date -r reads modification time only. For creation date, use mdls:

for f in *.pdf; do
  birthdate=$(mdls -name kMDItemFSCreationDate -raw "$f" | awk '{print $1}')
  # mdls returns YYYY-MM-DD — strip and reformat if needed
  mv "$f" "${birthdate}_${f}"
done

If Spotlight indexing is disabled on that volume, kMDItemFSCreationDate may return (null). Use GetFileInfo -d "$f" as a fallback (requires Xcode Command Line Tools: xcode-select --install).

Date suffix instead of prefix (append to original name)

for f in *.pdf; do
  base="${f%.*}"
  ext="${f##*.}"
  suffix=$(date -r "$f" +%Y-%m-%d)
  mv "$f" "${base}_${suffix}.${ext}"
done

Statement_August.pdfStatement_August_2026-09-07.pdf

Millisecond precision on Mac (requires Python 3)

macOS date -r resolves to whole seconds. Python 3 (pre-installed on macOS 12+) reads the fractional timestamp:

python3 << 'EOF'
import os, glob, datetime

for path in glob.glob("*.log"):
    t = os.path.getmtime(path)
    dt = datetime.datetime.fromtimestamp(t)
    ms = int((t - int(t)) * 1000)
    prefix = dt.strftime("%Y%m%d_%H%M%S") + f"_{ms:03d}"
    dirname = os.path.dirname(path) or "."
    basename = os.path.basename(path)
    os.rename(path, os.path.join(dirname, f"{prefix}_{basename}"))
EOF

app.log20260907_143022_847_app.log

Change *.log to your file extension. For creation date instead of modification time, replace os.path.getmtime(path) with os.stat(path).st_birthtime (macOS only).

Difficulty: ★★★☆☆
Milliseconds: ⚠️ requires Python 3 snippet
Undo: ❌ — no built-in undo; test on a copy first


Method 6 — Automator: Rename Files by Date Without Code on Mac

Automator is built into macOS and requires no scripting. Its date rename capability is limited but sufficient for simple date prefixes.

Step 1. Open Automator (Spotlight → Automator). Create a new Quick Action.

Step 2. Set Workflow receivesfiles or folders in Finder.

Step 3. Search for and add the Rename Finder Items action. If Automator prompts to add a Copy Finder Items step before renaming, click Don't Add — you want to rename the originals.

Step 4. In the action dropdown, select Add Date or Time.

Step 5. Configure:

  • AddDate
  • tobeginning of name (for a prefix)
  • DateLast Modified Date
  • FormatCustom → enter YYYY-MM-DD_ (note the trailing underscore before the original name)

Step 6. Save the workflow (Cmd + S, give it a name). In Finder, select your files → right-click → Quick Actions → run your workflow.

Limitations:

  • Date Created is not available — Automator's Rename action only exposes Last Modified Date.
  • No time components — the format picker supports year, month, and day, but not hours, minutes, or seconds.
  • No milliseconds.

If you need time precision or creation date, use Terminal or Renomee instead.

Difficulty: ★★☆☆☆
Milliseconds:
Undo: ✅ (Cmd + Z in Finder immediately after)


Method 7 — Renomee for Mac: Plain-English Date Rules, No Terminal Required

Renomee for Mac uses identical rule syntax to the Windows version. No format strings, no shell scripting, same one-click undo.

Step 1. Open Renomee on Mac. Drag your folder in.

Step 2. Type your rule — same syntax as Windows:

Prefix each file with its modification date in YYYY-MM-DD format.
Keep the original filename.

For second precision:

Add modification date and time (YYYYMMDD_HHmmss) as a prefix.
Keep the original filename after the timestamp.

For milliseconds:

Prefix all log files with their modification timestamp including milliseconds.
Format: YYYYMMDD_HHmmss_fff

For creation date (Birth Time) — no mdls syntax required:

Prefix each file with its creation date in YYYY-MM-DD format.

For a date suffix instead of prefix:

Append the modification date (YYYY-MM-DD) to each filename, before the extension.

Step 3. Review the preview. Conflicts are flagged.

Step 4. Execute. Undo from the history panel.

Difficulty: ★☆☆☆☆
Milliseconds:
Undo:


Which Methods Support Millisecond Timestamps?

MethodPlatformms SupportDetail
PowerShellWindows.ToString("yyyyMMdd_HHmmss_fff") — native NTFS resolution
Bulk Rename UtilityWindowsSeconds only
PowerToys PowerRenameWindowsDay precision only for non-photo files
RenomeeWindows + MacPlain-English rule: "including milliseconds"
Terminal (bash)Mac⚠️ workarounddate -r stops at seconds; Python 3 script required for ms
AutomatorMacDate-only output

When do you actually need milliseconds?

Scenarioms Needed?
Batch of weekly reports❌ date-only is enough
Invoices exported same day⚠️ add time (seconds)
Server log files (multiple per second)✅ milliseconds required
Burst photos via file system date✅ (use EXIF Date Taken if possible)
Database export batches✅ milliseconds recommended

For most document and scan jobs, second precision handles same-date conflicts without needing milliseconds. If even seconds produce collisions (rare outside log/automation workflows), either add milliseconds or append a counter suffix (_001, _002).


FAQ

What is the difference between Date Created and Date Modified?

Date Modified updates every time the file's content is saved. Date Created records when the file first appeared at its current path on this machine. Copying a file resets Date Created to the moment of the copy — Date Modified stays unchanged. For most document archiving use cases, Date Modified is the safer choice because it survives file transfers.

Which methods support milliseconds when renaming files by date?

PowerShell on Windows natively supports milliseconds via the fff format specifier. Renomee on both Windows and Mac supports milliseconds through plain-English rules. Mac Terminal requires a Python 3 snippet since date -r resolves only to whole seconds. Bulk Rename Utility and Automator stop at second precision.

Will renaming files change their timestamps?

No. Renaming is a directory operation — only the filename entry in the folder index changes. The file's content and all associated timestamps (Date Modified, Date Created, Date Accessed) remain completely unchanged on both Windows and Mac.

What if multiple files have the same timestamp?

Add a counter to disambiguate. In PowerShell, track a $counter variable and append -1, -2 to the name. In Bulk Rename Utility, add a numeric increment in the Numbering (5) panel alongside the date prefix. Renomee detects all naming conflicts in the preview phase and resolves them before any file is renamed.

How do I rename files using Date Created on Mac?

macOS stores creation date as "Birth Time," accessible via mdls -name kMDItemFSCreationDate -raw "file" in Terminal. In Renomee for Mac, just type "use creation date" in your rule — no shell commands needed.

My files are photos — should I use Date Modified or EXIF Date Taken?

Always use EXIF Date Taken for photos. Both Date Modified and Date Created reset when you copy or sync photos between devices. EXIF Date Taken is written by the camera at the moment of capture and never changes regardless of how many times the file is moved or copied. See How to Rename Photos by Date Taken on Windows 11 for EXIF-specific tool instructions.


Summary: Which Method Should You Use?

Your situationBest method
Windows, command line is fine, need ms precisionPowerShell
Windows, want a GUI, second precision is enoughBulk Rename Utility
Windows, already have PowerToys, quick date prefixPowerToys PowerRename
Windows or Mac, want zero syntax, need undoRenomee
Mac, command line is fine, no ms neededTerminal (bash)
Mac, want a GUI, date-only prefix is enoughAutomator
Mac, need ms precision without any scriptingRenomee for Mac
Files are photos — any platformUse EXIF Date Taken instead

Further Reading

Tags

#rename multiple files by date#rename files by date modified#rename files by date created#batch rename files by date Windows#batch rename files by date Mac

About the Author

The Renomee team is dedicated to providing users with the best file management solutions, sharing practical tips and in-depth technical articles.