ExifTool User Guide
Overview
ExifTool by Phil Harvey is the standard command-line tool for reading, writing, and editing metadata (EXIF, IPTC, XMP, and more) in image, video, PDF, and audio files. As of this writing, the current production release is 13.55, with newer point releases (up through 13.59) available as they roll out — check exiftool.org/history.html for the latest before installing.
Installation
Windows
- Download the Windows Executable zip from exiftool.org.
- Extract it, and rename
exiftool(-k).exetoexiftool.exe. - Move
exiftool.exeinto a folder on yourPATH(e.g.,C:\Windowsor a dedicatedC:\Toolsfolder added toPATH). -
Confirm it works:
exiftool -ver
macOS
brew install exiftool
Or download the macOS .pkg installer from exiftool.org.
Linux
# Debian/Ubuntu
sudo apt install libimage-exiftool-perl
# Fedora
sudo dnf install perl-Image-ExifTool
To get the latest version directly from source instead of a distro package:
curl -LO https://exiftool.org/Image-ExifTool-13.55.tar.gz
tar -xzf Image-ExifTool-13.55.tar.gz
cd Image-ExifTool-13.55
perl Makefile.PL
make test
sudo make install
Basic Usage
Read all metadata from a file
exiftool photo.jpg
Read specific tags
exiftool -DateTimeOriginal -Model -LensModel photo.jpg
Read metadata for every file in a directory
exiftool /path/to/folder
Add -r to recurse into subfolders:
exiftool -r /path/to/folder
Output Formatting
| Flag | Description |
|---|---|
-s |
Short tag names (no descriptions) |
-s3 |
Values only, no tag names |
-j |
Output as JSON |
-csv |
Output as CSV (good for batch exports) |
-X |
Output as XML |
-G |
Show group names (e.g., EXIF, XMP, IPTC) |
-a |
Allow duplicate tags |
-u |
Show unknown/undefined tags too |
Example — export a folder’s metadata to CSV:
exiftool -csv -r /path/to/folder > metadata.csv
Example — get JSON for scripting:
exiftool -j photo.jpg
Writing and Editing Tags
Set a single tag
exiftool -Artist="Preston Powell" photo.jpg
Set multiple tags at once
exiftool -Artist="Preston Powell" -Copyright="© 2026 Preston Powell" photo.jpg
Copy metadata from one file to another
exiftool -TagsFromFile source.jpg target.jpg
Remove all metadata
exiftool -all= photo.jpg
Remove metadata but keep a few tags
exiftool -all= --DateTimeOriginal --GPS:all photo.jpg
Apply changes to every file in a folder
exiftool -Artist="Preston Powell" -r /path/to/folder
Note: By default, ExifTool keeps a backup of the original file (e.g.,
photo.jpg_original). Add-overwrite_originalto skip creating backups once you’re confident in your command.
exiftool -overwrite_original -Artist="Preston Powell" photo.jpg
Working with Dates and Times
View all date/time tags
exiftool -time:all -a -G0:1 photo.jpg
Shift all dates by a fixed offset (e.g., camera clock was wrong)
exiftool "-AllDates+=1:0:0 0:15:0" photo.jpg
This shifts by 1 hour, 0 minutes for the date and 15 minutes for the time — adjust as needed.
Set the file’s modification date from EXIF DateTimeOriginal
exiftool "-FileModifyDate<DateTimeOriginal" photo.jpg
Batch Renaming Files by Date Taken
exiftool "-FileName<DateTimeOriginal" -d "%Y-%m-%d_%H%M%S.%%e" /path/to/folder
This renames files like 2026-09-14_143022.jpg based on when the photo was actually taken.
GPS and Location Data
View GPS coordinates
exiftool -gpslatitude -gpslongitude photo.jpg
Remove GPS data (useful before sharing photos publicly)
exiftool -gps:all= photo.jpg
Geotag photos from a GPX track log
exiftool -geotag track.gpx photo.jpg
Common Tag Groups
| Group | Contents |
|---|---|
EXIF |
Camera settings, date/time, lens info |
IPTC |
Captions, keywords, copyright (news/stock photo standard) |
XMP |
Adobe’s extensible metadata (ratings, keywords, edit history) |
GPS |
Location coordinates and altitude |
Composite |
Calculated tags derived from multiple sources |
File |
Filesystem-level info (size, permissions, dates) |
MakerNotes |
Manufacturer-specific proprietary data |
List all tags in a group:
exiftool -G1 -a -s photo.jpg | grep IPTC
Useful One-Liners
Find all files missing GPS data:
exiftool -if 'not $gpslatitude' -filename -r /path/to/folder
List camera models used across a photo library:
exiftool -Model -r -csv /path/to/folder | cut -d, -f1 | sort -u
Extract embedded thumbnail:
exiftool -b -ThumbnailImage photo.jpg > thumb.jpg
Compare two files’ metadata:
exiftool -a -G1 -s file1.jpg file2.jpg
Batch add copyright to an entire folder, recursively, no backups:
exiftool -overwrite_original -r -Copyright="© 2026 Preston Powell" /path/to/folder
Config Files
ExifTool supports a .ExifTool_config file (placed in your home directory or specified with -config) to define custom tags, shortcuts, and print conversions. Useful for repeatable workflows — e.g., a shortcut tag that pulls your most-used fields in one command.
Example shortcut definition:
%Image::ExifTool::UserDefined::Shortcuts = (
MyShoot => ['Model', 'LensModel', 'DateTimeOriginal', 'GPSLatitude', 'GPSLongitude'],
);
Then run:
exiftool -MyShoot photo.jpg
Reference
- Official site: https://exiftool.org
- Full tag name reference: https://exiftool.org/TagNames/
- FAQ: https://exiftool.org/faq.html
- Version history / changelog: https://exiftool.org/history.html