ExifTool by Phil Harvey

Read, Write and Edit Meta Information!

Features
User Comments
Supported File Types
System Requirements
Running ExifTool
Example Output
Tag Names Explained
Tag Groups
Writing Information
Writer Limitations
Known Problems
Date/Time Shift
Renaming Files
Performance
ExifTool Library
Additional Resources
New Discoveries
Acknowledgements
License
Donations
Contact Me
Download Version 6.98 (1.4 MB) - Sept. 23, 2007

ExifTool is a platform-independent Perl library plus a command-line application for reading, writing and editing meta information in image, audio and video files. ExifTool supports many different types of metadata including EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Profile, Photoshop IRB, FlashPix, AFCP and ID3, as well as the maker notes of many digital cameras by Canon, Casio, FujiFilm, HP, JVC/Victor, Kodak, Leaf, Minolta/Konica-Minolta, Nikon, Olympus/Epson, Panasonic/Leica, Pentax/Asahi, Ricoh, Sanyo, Sigma/Foveon and Sony.

ExifTool is also available as a stand-alone Windows executable and a Macintosh OS X package. Note that these versions contain the executable only, and do not include the HTML documentation or other files of the full distribution:

Windows Executable: exiftool-6.98.zip (1.8 MB)

The stand-alone Windows executable does not require Perl. Just download and un-zip the archive then double-click on "exiftool(‑k).exe" to read the application documentation, drag-and-drop files and folders to view meta information, or rename to "exiftool.exe" for command-line use.

Mac OS X Package: ExifTool-6.98.dmg (0.8 MB)

The OS X package installs the ExifTool command-line application and libraries in /usr/bin. After installing, type "exiftool" in a Terminal window to run exiftool and read the application documentation.

Read the installation instructions for help installing ExifTool on Windows, Mac OS X and Unix systems.

Features ^

Comments by ExifTool Users ^

"In my experience, nothing but nothing is as complete, powerful, and flexible as Phil Harvey's exiftool ... I've never seen anything that's in the same ballpark for power." - dpreview forum
"While there are a lot of image tools available, nothing comes close for accessing/updating the metadata like ExifTool" - merg's blog
"exiftool is an amazingly powerful Perl module and script" - Brett's Place on the Web
"Fast, reliable and amazingly comprehensive ..." - CPAN ratings
"... the one piece of free software that gets the most detailed exif data of /any/ tool I've found." - gnome mail archives
"ExifTool makes every other EXIF reader (and writer) than I've seen, including the camera manufacturers' readers, look lame." - photo.net Nikon forum
"... it is the mother of all EXIF utilities; the BFG of meta-data extraction; the Pan Galactic Gargle Blaster of EXIF tools ... This thing will suck the last bit of metadata out of whatever image file you throw at it!" - Open Photography Forums

Supported File Types ^

ExifTool can Read, Write and/or Create files in the following formats:

File TypeSupportDescription
ACRRAmerican College of Radiology ACR-NEMA (DICOM-like)
AIRAdobe Illustrator (EPS or PDF)
AIFF, AIF, AIFCRAudio Interchange File Format
APERMonkey's Audio format
ARWRSony Alpha RAW format (TIFF-based)
ASFRMicrosoft Advanced Systems Format
AVIRAudio Video Interleaved (RIFF-based)
BMP, DIBRWindows BitMaP / Device Independent Bitmap
BTF, TIFF, TIFRBigTIFF (64-bit Tagged Image File Format)
CR2R/WCanon RAW 2 format (TIFF-based)
CRW, CIFFR/WCanon RAW Camera Image File Format (CRW specification)
CS1R/WSinar CaptureShop 1-Shot RAW (PSD-based)
DCM, DC3, DIC, DICMRDICOM - Digital Imaging and Communications in Medicine
DCRRKodak Digital Camera RAW (TIFF-based)
DNGR/WDigital Negative (TIFF-based)
DOCRMicrosoft Word Document (FPX-like)
EPS, EPSF, PSR/W[Encapsulated] PostScript Format
ERFR/WEpson RAW Format (TIFF-based)
FLACRFree Lossless Audio Codec
FLVRFlash Video
FPXRFlashPix image
GIFR/WCompuserve Graphics Interchange Format
HTML, HTM, XHTMLR[Extensible] HyperText Markup Language
ICC, ICMR/W/CInternational Color Consortium color profile
JP2, JPXR/WJPEG 2000 image
JPEG, JPGR/WJoint Photographic Experts Group image (see table below)
K25RKodak DC25 RAW (TIFF-based)
M4ARMPEG 4 Audio
MEFR/WMamiya (RAW) Electronic Format (TIFF-based)
MIER/W/CMeta Information Encapsulation format (MIE specification)
MIFF, MIFRMagick Image File Format
MOSR/WCreo Leaf Mosaic (TIFF-based)
MOV, QTRApple QuickTime Movie
MP3RMPEG Layer 3 audio (uses ID3 information)
MP4RMotion Picture Experts Group version 4
MPCRMusepack Audio
MPEG, MPGRMotion Picture Experts Group version 1 or 2
MRWR/WMinolta RAW format
NEFR/WNikon (RAW) Electronic Format (TIFF-based)
OGGROgg Vorbis and Ogg FLAC audio
ORFR/WOlympus RAW Format (TIFF-based)
PDFRAdobe Portable Document Format
PEFR/WPentax (RAW) Electronic Format (TIFF-based)
PICT, PCTRApple Picture file
PNG, JNG, MNGR/WPortable/JPEG/Multiple-image Network Graphics
PPM, PBM, PGMR/WPortable Pixel/Bit/Gray Map
PPTRMicrosoft PowerPoint presentation (FPX-like)
PSDR/WPhotoShop Drawing
QTIF, QTI, QIFRQuickTime Image File
RARReal Audio
RAFRFujiFilm RAW Format (TIFF-based)
RAM, RPMRReal Audio/Plug-in Metafile
RAWRKyocera Contax N Digital RAW format
RAWR/WPanasonic RAW format (TIFF-based)
RIFF, RIFRResource Interchange File Format
RM, RV, RMVBRReal Media/Video [Variable Bitrate]
SR2RSony RAW 2 format (TIFF-based)
SRFRSony RAW Format (TIFF-based)
SWFRShockwave Flash
THMR/WCanon Thumbnail (JPEG)
TIFF, TIFR/WTagged Image File Format
VRDR/WCanon DPP Virtual? Recipe Data
WAVRWindows digital audio WAVeform (RIFF-based)
WDPR/WWindows Media Photo (TIFF-based)
WMA, WMVRWindows Media Audio/Video (ASF-based)
X3FRSigma/Foveon RAW format
XLSRMicrosoft Excel worksheet (FPX-like)
XMPR/W/CExtensible Metadata Platform sidecar file

Supported JPEG Meta Information

ExifTool can Read, Write and/or Create the following types of meta information in JPEG images:

JPEG Meta InformationSupportDescription
APP0 - JFIFR/W/CJPEG File Interchange Format
APP0 - JFXXRExtended JFIF
APP0 - CIFFR/WCamera Image File Format (used by some Canon models)
APP1 - EXIFR/W/CExchangeable Image File Format (including maker notes)
APP1 - XMPR/W/CExtensible Metadata Platform
APP2 - ICCR/W/CInternational Color Consortium (multi-segment)
APP2 - FPXRRFlashPix Ready (multi-segment)
APP3 - Kodak MetaREXIF-like Kodak information
APP5 - Ricoh RMETARRicoh custom fields
APP6 - EPPIMRToshiba PrintIM information
APP8 - SPIFFRStill Picture Interchange File Format
APP10 - CommentRPhotoStudio Unicode Comment
APP12 - Picture InfoRASCII-based Picture Information
APP12 - DuckyR/W/CPhotoshop "Save for Web" information
APP13 - Photoshop IRBR/W/CImage Resource Block (multi-segment, includes IPTC)
APP14 - AdobeRAdobe DCT filter information
APP15 - GraphicConverterRGraphicConverter quality information
COMR/W/CJPEG Comment (multi-segment)
SOFRJPEG Start Of Frame
AFCP trailerR/WAXS File Concatenation Protocol (includes IPTC)
CanonVRD trailerR/WCanon DPP Virtual? Recipe Data
FotoStation trailerR/WFotoWare FotoStation edit information (includes IPTC)
PhotoMechanic trailerR/WCamera Bits Photo Mechanic edit information
MIE trailerR/WMeta Information Encapsulation
PreviewImage trailerR/W/C(preview image written after JPEG EOI)

System Requirements ^

Requires Perl 5.004 or later. No other libraries or software required.

Windows users: You can get a good, free Perl interpreter from activeperl.com. Alternatively, a stand-alone exiftool Windows executable is now available (this version does not require Perl).

Everyone else (Mac, Unix, etc): Don't worry, you should already have Perl installed.

Running ExifTool ^

The exiftool application provides a convenient command-line interface for the Image::ExifTool Perl package (both included in the full distribution). Once you have downloaded and extracted the distribution, you can immediately run exiftool (without building or installing) by typing "DIR/exiftool FILE" (or "perl DIR/exiftool FILE" in Windows), where DIR is the exiftool directory and FILE is the name of an image file, including directory name. Read the installation instructions or the README file included in the full distribution for help installing ExifTool.

Many command-line options are available to allow you to access a wide range of features. Run exiftool with no arguments for a complete list of available options with examples.

Running in Windows

i) From the command line:

The Perl application ("exiftool") is run by typing "perl exiftool". Alternately, you may be able to rename it to "exiftool.pl" and type "exiftool.pl", but this requires that the proper Windows associations have been made for the the ".pl" extension.

The stand-alone version ("exiftool(‑k).exe") should be renamed to "exiftool.exe" to allow it to be run by typing "exiftool" at the command line.

If the exiftool executable ("exiftool.pl" or "exiftool.exe") is not in the current directory or your system PATH, then its directory must be specified on the command line (ie. by typing "c:\path_to_exiftool\exiftool.pl" or "c:\path_to_exiftool\exiftool").

Note that when typing commands in the "cmd.exe" shell, you should use double quotes instead of single quotes as shown in some examples.

ii) Stand-alone version in the Windows GUI:

Double-click on "exiftool(‑k).exe" to read the application documentation, or drag-and-drop files and folders to run exiftool on the selected files.

Simple options may be added inside brackets in the name of the stand-alone executable. (But note that the characters /\?*:|"<> may not be used because they are invalid in Windows file names.) In this way, the behaviour of the drag-and-drop application can be customized. For example:

Executable NameOperation
exiftool(-k).exe
Print meta information in window and pause before terminating.
exiftool(-k -a -u -g1 -w txt).exe
Generate output ".txt" files with detailed meta information.
exiftool(-k -o %d%f.xmp).exe
Generate sidecar ".xmp" files.
exiftool(-copyright='Phil Harvey').exe
Add copyright information (and don't pause before terminating).

Hint: Options may also be added to the "Target" property of a Windows shortcut for the executable. Using a shortcut has 3 advantages over adding options in the file name: 1) multiple shortcuts may be created for performing different operations without requiring multiple copies of the executable, 2) characters which are invalid in file names may be used, and 3) the shortcuts can be given more meaningful (and more convenient) file names.

As well, it may be useful to increase the window and buffer sizes to display more information: Right-click on the window's title bar then select "Properties" from the menu and change the window layout settings.

Example Output ^

> exiftool -h -canon pics/103_0315.JPG

File Name103_0315.JPG
Camera Model NameCanon EOS DIGITAL REBEL
Date/Time Original2003:09:30 13:37:51
Shooting ModeSports
Shutter Speed1/2000
Aperture7.1
Metering ModeEvaluative
Exposure Compensation0
ISO400
Lens75.0 - 300.0mm
Focal Length300.0mm
Image Size3072x2048
QualityNormal
FlashOff
White BalanceAuto
Focus ModeAI Servo AF
Contrast+1
Sharpness+1
Saturation+1
Color ToneNormal
File Size1606 kB
File Number103-0315
Drive ModeContinuous shooting
Owner NamePhil Harvey
Camera Body No.0560012345

Verbose and HtmlDump Output

The Verbose (‑v) and HtmlDump (‑htmlDump) options print additional information that can be very useful for debugging or when decoding new tags.

Tag Names Explained ^

A tag name is a "handle" that is used to refer to a specific piece of meta information. Tag names are entered on the command line with a leading '-', in the order you want them displayed. Case is not significant. The tag name may be prefixed by a group name from family 0 or 1 (separated by a colon) to identify a specific information type or location. A special tag name of "All" may be used to represent all tags, or all tags in a specified group. For example:

exiftool -filename -imagesize -exif:fnumber -xmp:all image.jpg

A complete list of ExifTool Tag Names accompanies this documentation. As well, current lists of available tag names and writable tag names may be obtained using the exiftool ‑list and ‑listw options. But perhaps the easiest way to determine a tag name is to use the ‑s option to print the tag names instead of descriptions for all information in a file. It may also be helpful to use the ‑G option to display the group names, and the ‑H or ‑D option to print the numerical tag ID's for reference.

Notes:

  1. Tag names sometimes differ from their descriptions. Use the ‑s command-line option to see the actual tag names instead of the descriptions when extracting information.
  2. When extracting information, tags will not appear in the output unless they exist in the file, even if they are specified on the command line. The ‑f option may be used to force all specified tags to be displayed.
  3. Information for a given tag name may occur in multiple locations within a single file. By default these duplicate tags are suppressed, but the ‑a option may be used to extract all tags.

Shortcut Tags

Shortcut tags represent one or more other tags, and are used like any other tag when reading, writing or copying information.

ExifTool defines a few shortcut tags in the Image::ExifTool::Shortcuts module, and allows users to define their own shortcuts in a configuration file called ".ExifTool_config" in their home directory or exiftool application directory. Here is a simple example that defines two shortcuts:

%Image::ExifTool::Shortcuts::UserDefined = (
    MyShortcut => ['createdate','exposuretime','aperture'],
    MyAlias => 'FocalLengthIn35mmFormat',
);

In this example, MyShortcut is a shortcut for the CreateDate, ExposureTime and Aperture tags, and MyAlias is a shortcut for FocalLengthIn35mmFormat.

The current shortcuts may be listed with the ‑list option.

The ~/.ExifTool_config file may also be used to define new tags. For more information about the configuration file, see the sample configuration file included with the ExifTool distribution.

Windows tip: You may have difficulty generating a filename beginning with a '.' in the Windows GUI, but it can be done with the "rename" command at the cmd.exe prompt.

Tag Groups ^

ExifTool classifies tags into groups in three different families. These groups are:

FamilyGroup Names
0 (Information Type) AFCP, AIFF, APE, APP12, APP14, APP15, APP5, APP6, APP8, ASF, BMP, CanonVRD, Composite, DICOM, DNG, Ducky, EXIF, ExifTool, FLAC, File, Flash, FlashPix, FotoStation, GeoTiff, HTML, ICC_Profile, ID3, IPTC, JFIF, JPEG, Jpeg2000, Leaf, MIE, MIFF, MNG, MPC, MPEG, MakerNotes, Meta, PDF, PICT, PNG, PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RIFF, Real, SigmaRaw, Vorbis, XMP
1 (Specific Location) AFCP, AIFF, APE, ASF, Adobe, BMP, Canon, CanonCustom, CanonRaw, CanonVRD, Casio, Composite, DICOM, DNG, Ducky, EPPIM, ExifIFD, ExifTool, FLAC, File, Flash, FlashPix, FotoStation, FujiFilm, GPS, GeoTiff, GlobParamIFD, GraphConv, HP, HTML, HTML-dc, HTML-ncc, HTML-prod, HTML-vw96, HTTP-equiv, ICC-chrm, ICC-clrt, ICC-header, ICC-meas, ICC-view, ICC_Profile, ID3, ID3v1, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, InteropIFD, JFIF, JPEG, JVC, Jpeg2000, Kodak, KodakBordersIFD, KodakEffectsIFD, KyoceraRaw, Leaf, LeafSubIFD, MAC, MIE-Audio, MIE-Camera, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MNG, MPC, MPEG, MakerNotes, MakerUnknown, MetaIFD, Minolta, MinoltaRaw, Nikon, NikonCapture, NikonPreview, NikonScan, Olympus, PDF, PICT, PNG, Panasonic, Pentax, PhotoMechanic, Photoshop, PictureInfo, PostScript, PrintIM, QuickTime, RIFF, RMETA, Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5, Real-RJMD, Ricoh, SPIFF, SR2, SRF#, Sanyo, Sigma, SigmaRaw, Sony, SubIFD, Track#, Vorbis, XMP, XMP-PixelLive, XMP-aux, XMP-cc, XMP-crs, XMP-dc, XMP-dex, XMP-exif, XMP-iptcCore, XMP-lr, XMP-microsoft, XMP-pdf, XMP-photomech, XMP-photoshop, XMP-tiff, XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg
2 (Category) Audio, Author, Camera, Document, ExifTool, Image, Location, Other, Printing, Time, Unknown, Video

The exiftool output can be organized based on these groups using the ‑g or ‑G option.

Writing Meta Information ^

When writing information, ExifTool preserves the original file by adding "_original" to the file name. Be sure to keep a copy of the original, or thoroughly validate the new file before erasing the original. (Read here for some ramblings on the subject of writing meta information.)

Syntax

Tag values are written rather than being extracted if the tag name ends with a '=' symbol. The '=' may be prefixed by '+', '-' or '<' to add a value, remove a value or set a value from file. The following table outlines the different write syntaxes:

SyntaxResult
-TAG=Deletes all occurrences of TAG
-all=Deletes all meta information!
-GROUP:TAG=Deletes TAG only in specified group
-GROUP:all=Deletes all information in specified group
-[GROUP:]TAG=VALUESets value of TAG (only in GROUP if specified)
-[GROUP:]TAG+=VALUEAdds value to a tag list (only valid for List type tags)
-[GROUP:]TAG-=VALUEDeletes TAG only if it has the specified value
-[GROUP:]TAG<=FILESets tag value from contents of specified file

Note that quotes are required around VALUE if it contains spaces, and around the whole argument if the '<=' syntax is used (to prevent shell redirection).

Group Priorities

ExifTool prioritizes the following types of meta information when writing:

1) EXIF,   2) IPTC,   3) XMP,   4) MakerNotes

Many tag names are valid for more than one of these groups. If a group name is not specified when writing information, then the information is added only to the highest priority group for which the tag name is valid (however, the information is updated in all groups where the tag already existed). The priority of the groups is given by the list above. Specifically, this means that new information is added preferentially to the EXIF group, or to the IPTC group if no corresponding EXIF tag exists, or finally to the XMP group. The Makernotes group is special, and new information generally can not be added here (see the note below).

Alternatively, information may be written to a specific group only, bypassing these priorities, by providing a group name for the tag. The "Writing Meta Information" section above gave the syntax rules for exiftool command-line arguments to do this. Any family 0 or 1 group name may be used when writing information, although not all groups are writable.

Note: Information in the MakerNotes may be edited, but not added or deleted. The reason for this is to avoid confusing manufacturer-specific software which may be very inflexible about the information it expects in the maker notes. The exception is the JpgFromRaw image, which may be added or deleted from Canon CRW files. This has been tested and doesn't cause problems with the Canon software or Photoshop, however it does confuse Capture One somewhat if this image is missing, so beware.

The "-TagsFromFile" Option

A special ExifTool option allows copying tags from one file to another. The command-line syntax for doing this is "‑TagsFromFile SRCFILE". Any tags specified after this option on the command line are extracted from source file and written to the destination file. If no tags are specified, then all writable tags are copied. This option is very simple, yet very powerful. Depending on the formats of the source and destination files, some of tags read may not be valid in the destination file, in which case they aren't written.

This option may also be used to transfer information between different tags within a single image or between different images. See the -TagsFromFile option in the application documentation for more details.

Writer Limitations ^

Known Problems ^

Date/Time Shift Feature ^

Have you ever forgotten to set the date/time on your digital camera before taking a bunch of pictures? ExifTool has a time shift feature that makes it easy to apply a batch fix to the timestamps of the images. For example, say that your camera clock was reset to 2000:01:01 00:00:00 when you put in a new battery at 2005:11:03 10:48:00. Then all of the pictures you took subsequently have timestamps that are wrong by 5 years, 10 months, 2 days, 10 hours and 48 minutes. To fix this, put all of the images in the same directory ("DIR") and run exiftool:

exiftool "-DateTimeOriginal+=5:10:2 10:48:0" DIR

The example above changes only the DateTimeOriginal tag, but any writable date or time tag can be shifted, and multiple tags may be written with a single command line. Commonly, in JPEG images, the DateTimeOriginal, CreateDate and ModifyDate values must all be changed. For convenience, a shortcut tag called AllDates has been defined to represent these three tags. So, for example, if you forgot to set your camera clock back 1 hour at the end of daylight savings time in the fall, you can fix the images with:

exiftool -AllDates-=1 DIR

See Image::ExifTool::Shift.pl for details about the syntax of the time shift string.

Renaming and/or Moving Files ^

By writing a new value to the FileName and/or Directory tags, files can be renamed and/or moved to different directories. This can be a very powerful tool in combination with the ‑d (date format) option for organizing images by date/time. For example, the following command renames all images in directory "DIR" according to the individual file's creation date in the form "yyyymmdd_HHMMSS.ext".

exiftool "-FileName<CreateDate" -d "%Y%m%d_%H%M%S.%%e" DIR

Or a new directory can be specified by setting the value of the Directory tag. For example, the following command moves all images originally in directory "DIR" into a directory hierarchy organized by year/month/day:

exiftool "-Directory<DateTimeOriginal" -d "%Y/%m/%d" DIR

Read here for more details about this powerful feature.

Improving Performance ^

The processing speed of ExifTool can be improved when extracting information by reducing the amount of work that it must do. Disabling the composite tags (‑e option) and the print conversions (‑n option) will speed things up somewhat if these features aren't required, but the biggest performance benefits come from reducing the number of extracted tags. By specifying only the tags you need to extract, you can speed things up significantly.

There is also a ‑fast option which can significantly increase speed when extracting information from JPEG images which are piped across a slow network connection. However, with this option any information in a JPEG trailer will not be extracted.

The Image::ExifTool Perl Library Module ^

The 'exiftool' script is essentially just a command-line interface to the Image::ExifTool Perl library module which is part of the ExifTool distribution. The Image::ExifTool module can be used in any Perl script to provide easy access to meta information. Here is an example a very simple script that uses Image::ExifTool to print out all recognized meta information in a file:

#!/usr/bin/perl -w
use Image::ExifTool ':Public';
my $file = shift or die "Please specify filename";
my $info = ImageInfo($file);
foreach (keys %$info) {
    print "$_ : $info->{$_}\n";
}

Note that some tag values may be returned as SCALAR references indicating binary data. The simple script above does not handle this case.

See the Image::ExifTool Documentation for more details.

Additional Documentation and Resources ^

Related Utilities

Below are some utilities which take advantage of the ExifTool engine:

References

The following sources were very useful in helping to decode various types of information:

Other Links

Boldly Go where No Man has Gone Before... ^

There is still much unknown information in the maker notes for many camera models. (To see this information, run exiftool with the ‑U option.) In this area, ExifTool is very much a collaborative effort, and development relies heavily on the input from camera owners to help decode new meta information. If you manage to figure out what any of it means, send me an e-mail (phil at owl.phy.queensu.ca) and I'll add your new discoveries to ExifTool. Many thanks to all who have helped so far...

Acknowledgements ^

Thanks to everyone who has sent in bug reports, comments, or suggestions, and special thanks to the following people for their valuable input and/or additions to the code:

And special thanks to my family for putting up with me and this time-consuming hobby of mine.

License ^

This is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Donations ^

ExifTool is free, but due to popular request I am providing a way for those who feel the need to send me some money. It is really not necessary, but thank you very much if you decide to make a contribution:

$

Contact Me ^

Feel free to drop me a note if you find ExifTool useful, or if you have any comments, suggestions or questions. My e-mail address is on the first line of the README file of the full distribution. Thanks.   - Phil Harvey