Rename Photos by Date Taken

Batch rename JPG, HEIC, and PNG files using the EXIF date & time embedded in each photo. Set your naming pattern, preview old → new names, then download as a ZIP — 100% offline, nothing uploaded.

1 — Drop your photos

🖼️
Click to choose files or drag & drop here
JPG · HEIC · PNG — any quantity

2 — Set rename pattern

Click tokens to build a pattern, or type freely. Tokens are replaced with EXIF date/time values.

Tokens: YYYY=year   MM=month   DD=day   HH=hour(24)   mm=minute   SS=second   — any other text passes through as-is.

How it works

Step 1
Read EXIF locally

exifr.js extracts DateTimeOriginal from each file directly in your browser — nothing is sent to a server.

Step 2
Apply your pattern

Tokens like YYYY, MM, DD, HH, mm, SS are replaced with the actual date & time values from the photo's metadata.

Step 3
Preview before committing

A table shows every original filename alongside its proposed new name, plus the EXIF date that was read, so you can spot surprises.

Step 4
Download as ZIP

JSZip bundles all files with their new names into a single ZIP you save locally — original files on disk are never touched.

HEIC files from iPhones carry full EXIF including DateTimeOriginal; this tool reads them as reliably as JPG. For PNG or screenshots that lack EXIF, the tool falls back to a counter-based name so no file is silently skipped.

Frequently asked questions

Why should I rename photos by date taken rather than leaving the camera default?
Camera defaults like IMG_4823.jpg tell you nothing about when or where the shot was taken, and they frequently collide when you merge photos from two different cameras or phones — both may have shot an "IMG_0001.jpg". Renaming to a pattern such as 2024-07-14_18-35-22.jpg puts every photo in chronological order in any file browser, prevents name collisions, and makes searching by date trivial without needing to open each file's properties.
What is DateTimeOriginal and how is it different from file modification date?
DateTimeOriginal is an EXIF tag written by the camera or phone at the exact moment the shutter fires. It is embedded inside the photo file and survives copying, emailing, and cloud syncing — unlike the file's filesystem modification date, which resets every time you copy or re-save the file. This tool reads DateTimeOriginal so the rename reflects when you actually pressed the shutter, not when you last moved the file around.
What happens to photos that have no EXIF date (screenshots, web images, edited files)?
If exifr cannot find a DateTimeOriginal tag, the tool marks the file with a warning (yellow dot in the preview table) and assigns a counter-based fallback name using your prefix/suffix plus a sequence number. No file is skipped or silently dropped — every photo in your selection ends up in the ZIP, even if without a date-based name. You can also choose "Always append counter" in the counter dropdown to add a running index to every file regardless.
Does this tool upload my photos anywhere?
No. All processing happens entirely inside your browser using the Web File API and JavaScript libraries (exifr.js for EXIF reading, JSZip for packaging). Your photos never leave your device. The page works offline once loaded — you can even save it and use it without an internet connection.
What is the recommended pattern for merging photos from multiple cameras?
Use YYYY-MM-DD_HH-mm-SS (the default). This guarantees chronological sort order in any file browser and includes seconds, which disambiguates burst shots taken within the same minute. If two photos from different cameras were taken at the exact same second, enable "Only on collision" counter mode — the tool will append _1, _2, etc. to keep all files.