# ExifTool by Phil Harvey

## Read, Write and Edit Meta Information!

Installing | Tag Names | Resources | History | Forum | FAQ
--- | --- | --- | --- | --- | ---

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
Donate
Contact Me

> Download Version 8.65 (3.0 MB) - Sept. 24, 2011

ExifTool is a platform-independent Perl library plus a command-line application for reading, writing and editing meta information in a wide variety of files. ExifTool supports many different metadata formats 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, GE, HP, JVC/Victor, Kodak, Leaf, Minolta/Konica-Minolta, Nikon, Olympus/Epson, Panasonic/Leica, Pentax/Asahi, Reconyx, Ricoh, Samsung, 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 above.)

> Windows Executable: exiftool-8.65.zip (3.2 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. Runs on all versions of Windows (including Windows 7).

> Mac OS X Package: ExifTool-8.65.dmg (2.0 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 ^

- Powerful, fast, flexible and customizable
- Supports a large number of different file formats
- Reads EXIF, GPS, IPTC, XMP, JFIF, MakerNotes, GeoTIFF, ICC Profile, Photoshop IRB, FlashPix, AFCP, ID3 and more...
- Writes EXIF, GPS, IPTC, XMP, JFIF, MakerNotes, ICC Profile, Photoshop IRB, AFCP and more...
- Reads and writes maker notes of many digital cameras
- Decodes a riddle wrapped in a mystery inside an enigma
- Numerous output formatting options (including tab-delimited, HTML, XML and JSON)
- Multi-lingual output (cs, de, en, en_ca, en_gb, es, fr, it, ja, ko, nl, pl, ru, sv, tr, zh_cn or zh_tw)
- Geotags images from GPS track log files (with time drift correction!)
- Generates track logs from geotagged images
- Shifts date/time values to fix timestamps in images
- Renames files and organizes in directories (by date or by any other meta information)
- Extracts thumbnail images, preview images, and large JPEG images from RAW files
- Copies meta information between files (even different-format files)
- Reads/writes structured XMP information
- Deletes meta information individually, in groups, or altogether
- Sets the file modification date from EXIF information
- Supports alternate language tags in XMP, PNG, ID3, Font, QuickTime, ICC Profile, MIE and MXF information
- Processes entire directory trees
- Creates text output file for each image file
- Creates binary-format metadata-only (MIE) files for metadata backup
- Automatically backs up original image when writing
- Organizes output into groups
- Conditionally processes files based on value of any meta information
- Ability to add custom user-defined tags
- Support for MWG (Metadata Working Group) recommendations
- Recognizes thousands of different tags
- Tested with images from thousands of different camera models
- Advanced verbose and HTML-based hex dump outputs

## 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

> "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

> "... no program or API gets close to ExifTool in terms of robustness, feature count and support." - CE's Blog

> "ExifTool makes every other EXIF reader (and writer) than I've seen, including the camera manufacturers' readers, look lame." - photo.net Nikon forum

> "Insanely great tool with a long learning curve ..." - Adobe Forums

> "... 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 Type | Support | Description
> --- | --- | ---
> 3FR | R | Hasselblad RAW (TIFF-based)
> 3G2, 3GP2 | R | 3rd Gen. Partnership Project 2 audio/video (QuickTime-based)
> 3GP, 3GPP | R | 3rd Gen. Partnership Project audio/video (QuickTime-based)
> ACR | R | American College of Radiology ACR-NEMA (DICOM-like)
> AFM, ACFM, AMFM | R | Adobe [Composite/Multiple Master] Font Metrics
> AI, AIT | R/W | Adobe Illustrator [Template] (PS or PDF)
> AIFF, AIF, AIFC | R | Audio Interchange File Format [Compressed]
> APE | R | Monkey's Audio
> ARW | R/W | Sony Alpha RAW (TIFF-based)
> ASF | R | Microsoft Advanced Systems Format
> AVI | R | Audio Video Interleaved (RIFF-based)
> BMP, DIB | R | Windows BitMaP / Device Independent Bitmap
> BTF, TIFF, TIF | R | BigTIFF (64-bit Tagged Image File Format)
> CHM | R | Microsoft Compiled HTML format
> COS | R | Capture One Settings (XML-based)
> CR2 | R/W | Canon RAW 2 (TIFF-based)
> CRW, CIFF | R/W | Canon RAW Camera Image File Format (CRW specification)
> CS1 | R/W | Sinar CaptureShop 1-shot RAW (PSD-based)
> DCM, DC3, DIC, DICM | R | DICOM - Digital Imaging and Communications in Medicine
> DCP | R/W | DNG Camera Profile (DNG-like)
> DCR | R | Kodak Digital Camera RAW (TIFF-based)
> DFONT | R | Macintosh Data Fork Font
> DIVX | R | DivX media format (ASF-based)
> DJVU, DJV | R | DjVu image (AIFF-like)
> DNG | R/W | Digital Negative (TIFF-based)
> DOC, DOT | R | Microsoft Word Document/Template (FPX-like)
> DOCX, DOCM | R | Office Open XML Document [Macro-enabled]
> DOTX, DOTM | R | Office Open XML Document Template [Macro-enabled]
> DYLIB | R | Mac OS X Mach-O executable and library files
> DV | R | Digital Video
> DVB | R | Digital Video Broadcasting (QuickTime-based)
> EIP | R | Capture One Enhanced Image Package (ZIP-based)
> EPS, EPSF, PS | R/W | [Encapsulated] PostScript Format
> ERF | R/W | Epson RAW Format (TIFF-based)
> EXE, DLL | R | DOS/Windows executable and library files
> EXIF | R/W/C | Exchangable Image File Format metadata (TIFF-based)
> F4A, F4B, F4P, F4V | R | Adobe Flash Player 9+ Audio/Video (Quicktime-based)
> FLA | R | Macromedia/Adobe Flash project (FPX-like)
> FLAC | R | Free Lossless Audio Codec
> FLV | R | Flash Video
> FPX | R | FlashPix image
> GIF | R/W | Compuserve Graphics Interchange Format
> GZ, GZIP | R | GNU ZIP compressed archive
> HDP, WDP | R/W | Windows HD Photo / Media Photo (TIFF-based)
> HTML, HTM, XHTML | R | [Extensible] HyperText Markup Language
> ICC, ICM | R/W/C | International Color Consortium color profile
> IIQ | R/W | Phase One Intelligent Image Quality RAW (TIFF-based)
> IND, INDD, INDT | R/W | Adobe InDesign Document/Template (XMP metadata only)
> ITC | R | iTunes Cover Flow artwork
> JP2, JPF, J2K, JPM, JPX | R/W | JPEG 2000 image [Compound/Extended]
> J2C, JPC | R | JPEG 2000 codestream
> JPEG, JPG | R/W | Joint Photographic Experts Group image (see table below)
> K25 | R | Kodak DC25 RAW (TIFF-based)
> KDC | R | Kodak Digital Camera RAW (TIFF-based)
> KEY, KTH | R | Apple iWork '09 Keynote presentation/Theme
> LNK | R | Microsoft Shell Link (Windows shortcut)
> M2TS, MTS, M2T, TS | R | MPEG-2 Transport Stream (used for AVCHD video)
> M4A, M4B, M4P, M4V | R | MPEG-4 Audio/Video (Quicktime-based)
> MEF | R/W | Mamiya (RAW) Electronic Format (TIFF-based)
> MIE | R/W/C | Meta Information Encapsulation (MIE specification)
> MIFF, MIF | R | Magick Image File Format
> MKA, MKV, MKS | R | Matroska Audio/Video/Subtitle
> MOS | R/W | Creo Leaf Mosaic (TIFF-based)
> MOV, QT | R | Apple QuickTime Movie
> MP3 | R | MPEG-1 layer 3 audio (uses ID3 information)
> MP4 | R | Motion Picture Experts Group version 4 (Quicktime-based)
> MPC | R | Musepack Audio
> MPEG, MPG, M2V | R | Motion Picture Experts Group version 1 or 2
> MPO | R/W | Extended Multi-Picture format (JPEG with MPF extensions)
> MQV | R | Sony Mobile QuickTime Video
> MRW | R/W | Minolta RAW
> MXF | R | Material Exchange Format
> NEF | R/W | Nikon (RAW) Electronic Format (TIFF-based)
> NMBTEMPLATE | R | Apple iWork '09 Numbers Template
> NRW | R/W | Nikon RAW (2) (TIFF-based)
> NUMBERS | R | Apple iWork '09 Numbers spreadsheet
> ODB, ODC, ODF, ODG, OGI, ODP, ODS, ODT | R | Open Document Database/Chart/Formula/Graphics/ Image/Presentation/Spreadsheet/Text (ZIP/XML-based)
> OGG, OGV | R | Ogg bitstream container
> ORF | R/W | Olympus RAW Format (TIFF-based)
> OTF | R | Open Type Font
> PAGES | R | Apple iWork '09 Pages document
> PDF | R/W | Adobe Portable Document Format
> PEF | R/W | Pentax (RAW) Electronic Format (TIFF-based)
> PFA, PFB | R | PostScript Font ASCII/Binary
> PFM | R | Printer Font Metrics
> PGF | R | Progressive Graphics File
> PICT, PCT | R | Apple Picture file
> PMP | R | Sony DSC-F1 Cyber-Shot image
> PNG, JNG, MNG | R/W | Portable/JPEG/Multiple-image Network Graphics
> PPM, PBM, PGM | R/W | Portable Pixel/Bit/Gray Map
> PPT, PPS, POT | R | Microsoft PowerPoint Presentation/Slideshow/Template (FPX-like)
> POTX, POTM | R | Office Open XML Presentation Template [Macro-enabled]
> PPSX, PPSM | R | Office Open XML Presentation Slideshow [Macro-enabled]
> PPTX, PPTM | R | Office Open XML Presentation [Macro-enabled]
> PSD, PSB | R/W | PhotoShop Drawing / Large Document
> PSP, PSPIMAGE | R | Paint Shop Pro
> QTIF, QTI, QIF | R | QuickTime Image File
> RA | R | Real Audio
> RAF | R/W | FujiFilm RAW Format
> RAM, RPM | R | Real Audio/Plug-in Metafile
> RAW | R | Kyocera Contax N Digital RAW
> RAR | R | RAR Archive
> RAW | R/W | Panasonic RAW (TIFF-based)
> RIFF, RIF | R | Resource Interchange File Format
> RM, RV, RMVB | R | Real Media/Video [Variable Bitrate]
> RSRC | R | Mac OS Resource
> RTF | R | Rich Text Format
> RW2 | R/W | Panasonic RAW 2 (TIFF-based)
> RWL | R/W | Leica RAW (TIFF-based)
> RWZ | R | Rawzor compressed image
> SO | R | Unix ELF executable and Shared Object files
> SR2 | R/W | Sony RAW 2 (TIFF-based)
> SRF | R | Sony RAW Format (TIFF-based)
> SRW | R/W | Samsung RAW format (TIFF-based)
> SVG | R | Scalable Vector Graphics (XML-based)
> SWF | R | Shockwave Flash
> THM | R/W | Canon Thumbnail (JPEG)
> THMX | R | Office Open XML Theme
> TIFF, TIF | R/W | Tagged Image File Format
> TTF, TTC | R | True Type Font/Collection
> VOB | R | Video Object (MPEG-based)
> VRD | R/W/C | Canon DPP Recipe Data
> VSD | R | Microsoft Visio Drawing (FPX-like)
> WAV | R | Windows digital audio WAVeform (RIFF-based)
> WEBM | R | Google Web Movie (MKV-based)
> WEBP | R | Google Web Picture (RIFF-based)
> WMA, WMV | R | Windows Media Audio/Video (ASF-based)
> X3F | R/W | Sigma/Foveon RAW
> XCF | R | GIMP native image format
> XLS, XLT | R | Microsoft Excel Spreadsheet/Template (FPX-like)
> XLSX, XLSM, XLSB | R | Office Open XML Spreadsheet [Macro-enabled/Binary]
> XLTX, XLTM | R | Office Open XML Spreadsheet Template [Macro-enabled]
> XMP | R/W/C | Extensible Metadata Platform sidecar file
> ZIP | R | ZIP archive

### Supported JPEG Meta Information

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

> JPEG Meta Information | Support | Description
> --- | --- | ---
> APP0 - JFIF | R/W/C | JPEG File Interchange Format
> APP0 - JFXX | R | Extended JFIF
> APP0 - CIFF | R/W | Camera Image File Format (used by some Canon models)
> APP0 - AVI1 | R | JPEG AVI information
> APP0 - Ocad | R | Photobucket Ocad segment
> APP1 - EXIF | R/W/C | Exchangeable Image File Format (including maker notes)
> APP1 - XMP | R/W/C | Extensible Metadata Platform (multi-segment)
> APP1 - QVCI | R | Casio QV-7000SX QVCI information
> APP2 - ICC | R/W/C | International Color Consortium (multi-segment)
> APP2 - FPXR | R | FlashPix Ready (multi-segment)
> APP2 - MPF | R | Multi-Picture Format
> APP2 - PreviewImage | R | Samsung large preview (multi-segment)
> APP3 - Kodak Meta | R/W | Kodak Meta information (EXIF-like)
> APP3 - Stim | R | Stereo Still Image format
> APP3 - PreviewImage | R | Hewlett-Packard or Samsung (multi-segment) preview
> APP4 - Scalado | R | (presumably written by Scalado mobile software)
> APP4 - FPXR | R | FlashPix Ready in non-standard location (multi-segment)
> APP4 - PreviewImage | R | Continued Samsung preview from APP3
> APP5 - Ricoh RMETA | R | Ricoh custom fields
> APP6 - EPPIM | R | Toshiba PrintIM
> APP6 - NITF | R | National Imagery Transmission Format
> APP6 - HP TDHD | R | Hewlett-Packard Photosmart R837 TDHD information
> APP8 - SPIFF | R | Still Picture Interchange File Format
> APP10 - Comment | R | PhotoStudio Unicode Comment
> APP12 - Picture Info | R | ASCII-based Picture Information
> APP12 - Ducky | R/W/C | Photoshop "Save for Web"
> APP13 - Photoshop IRB | R/W/C | Image Resource Block (multi-segment, includes IPTC)
> APP13 - Adobe CM | R | Adobe Color Management
> APP14 - Adobe | R | Adobe DCT filter
> APP15 - GraphicConverter | R | GraphicConverter quality
> COM | R/W/C | JPEG Comment (multi-segment)
> DQT | R | (used to calculate the Extra:JPEGDigest tag value)
> SOF | R | JPEG Start Of Frame
> AFCP trailer | R/W | AXS File Concatenation Protocol (includes IPTC)
> CanonVRD trailer | R/W/C | Canon DPP Recipe Data
> FotoStation trailer | R/W | FotoWare FotoStation (includes IPTC)
> PhotoMechanic trailer | R/W | Camera Bits Photo Mechanic
> MIE trailer | R/W | Meta Information Encapsulation
> PreviewImage trailer | R/W/C | (preview image written after JPEG EOI)

## System Requirements ^

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

Windows users: A stand-alone Windows executable version of ExifTool is available which doesn't require Perl. You can also use the pure Perl version if you already have Perl installed. (You can get a good, free Perl interpreter from activeperl.com.)

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 Name | Operation
> --- | ---
>     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) different shortcuts may be created 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 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/IMG_0315.JPG`
> File Name | IMG_0315.JPG
> Camera Model Name | Canon EOS DIGITAL REBEL
> Date/Time Original | 2003:09:30 13:37:51
> Shooting Mode | Sports
> Shutter Speed | 1/2000
> Aperture | 7.1
> Metering Mode | Evaluative
> Exposure Compensation | 0
> ISO | 400
> Lens | 75.0 - 300.0 mm
> Focal Length | 300.0 mm
> Image Size | 3072x2048
> Quality | Normal
> Flash | Off, Did not fire
> White Balance | Auto
> Focus Mode | AI Servo AF
> Contrast | +1
> Sharpness | +1
> Saturation | +1
> Color Tone | Normal
> File Size | 1606 kB
> File Number | 103-0315
> Drive Mode | Continuous shooting
> Owner Name | Phil Harvey
> Serial Number | 0560012345
> | > `exiftool -lang ja -h -canon pics/IMG_0315.JPG`
> ファイル名 | IMG_0315.JPG
> 画像入力機器モデル | Canon EOS DIGITAL REBEL
> オリジナルデータ作成日時 | 2003:09:30 13:37:51
> 撮影モード | スポーツ
> 露出時間 | 1/2000
> 絞り | 7.1
> 測光モード | 評価
> 露出補正値 | 0
> ISOスピードレート | 400
> レンズ | 75.0 - 300.0 mm
> レンズ焦点距離 | 300.0 mm
> イメージサイズ | 3072x2048
> 品質 | 標準
> ストロボ | フラッシュ未発光、強制発光モード
> ホワイトバランス | オート
> フォーカスモード | AIサーボAF
> コントラスト | +1
> シャープネス | +1
> 彩度 | +1
> カラートーン | 標準
> ファイルのサイズ | 1606 kB
> ファイル番号 | 103-0315
> ドライブモード | 連続撮影
> オーナー名 | Phil Harvey
> シリアル番号 | 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 shown 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.
4. Tag names may be suffixed by a '`#`' character to disable the print conversion on a per-tag basis. See the -n option in the application documentation for more information.

### 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::UserDefined::Shortcuts = (
>         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 five different families. These groups are:

> Family | Group Names
> --- | ---
> 0 (Information Type) | AFCP, AIFF, APE, APP0, APP12, APP13, APP14, APP15, APP4, APP5, APP6, APP8, ASF, CanonVRD, Composite, DICOM, DNG, DV, DjVu, Ducky, EXE, EXIF, ExifTool, FLAC, File, Flash, FlashPix, Font, FotoStation, GIF, GIMP, GeoTiff, H264, HTML, ICC_Profile, ID3, IPTC, ITC, JFIF, JPEG, Jpeg2000, LNK, Leaf, M2TS, MIE, MIFF, MNG, MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg, PDF, PICT, PNG, PSP, PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF, RIFF, RSRC, RTF, Rawzor, Real, SVG, SigmaRaw, Stim, Theora, Vorbis, XML, XMP, ZIP
> 1 (Specific Location) | AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, CIFF, Canon, CanonCustom, CanonRaw, CanonVRD, Casio, Chapter#, Composite, DICOM, DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM, EXE, EXIF, ExifIFD, ExifTool, FLAC, File, Flash, FlashPix, Font, FotoStation, FujiFilm, GE, GIF, GIMP, GPS, GeoTiff, GlobParamIFD, GraphConv, H264, HP, HTML, HTML-dc, HTML-ncc, HTML-office, HTML-prod, HTML-vw96, HTTP-equiv, ICC-chrm, ICC-clrt, ICC-header, ICC-meas, ICC-meta, ICC-view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ITC, InteropIFD, JFIF, JPEG, JVC, Jpeg2000, KDC_IFD, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD, KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, M2TS, MAC, MIE-Audio, MIE-Camera, MIE-Canon, 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, MPF0, MPImage, MXF, MakerNotes, MakerUnknown, Matroska, MetaIFD, Microsoft, Minolta, MinoltaRaw, NITF, Nikon, NikonCapture, NikonCustom, NikonScan, Ocad, Ogg, Olympus, PDF, PICT, PNG, PSP, Panasonic, Pentax, PhotoMechanic, Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5, Real-RJMD, Reconyx, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD, System, Theora, Track#, Version0, Vorbis, XML, XMP, XMP-DICOM, XMP-MP, XMP-MP1, XMP-PixelLive, XMP-acdsee, XMP-album, XMP-aux, XMP-cc, XMP-cell, XMP-crs, XMP-dc, XMP-dex, XMP-digiKam, XMP-exif, XMP-extensis, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-microsoft, XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx, XMP-photomech, XMP-photoshop, XMP-plus, XMP-prism, XMP-prl, XMP-pur, XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, ZIP
> 2 (Category) | Audio, Author, Camera, Document, ExifTool, Image, Location, Other, Printing, Time, Unknown, Video
> 3 (Document Number) | Doc#, Main
> 4 (Instance Number) | Copy#

The exiftool output can be organized based on these groups using the `-g` or `-G` option. See the GetGroup function in the ExifTool library for a description of the group families.

## 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 any tag name ends with a '`=`' symbol (or if the `-tagsFromFile` or `-geotag` options are used). 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:

> Syntax | Result
> --- | ---
> -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=VALUE | Sets value of TAG (only in GROUP if specified)
> -[GROUP:]TAG+=VALUE | Adds value to a tag list (only valid for List type tags)
> -[GROUP:]TAG-=VALUE | Deletes TAG only if it has the specified value
> -[GROUP:]TAG<=FILE | Sets tag value from contents of specified file

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

A special feature allows the print conversion to be disabled on a per-tag basis by suffixing any tag name (including '`all`') with the '`#`' character. This has the same effect as the `-n` option, but for a single tag. See the -n option in the application documentation for more details.

### Group Priorities

ExifTool prioritizes the following types of meta information when writing:

> 1) EXIF, 2) IPTC, 3) XMP

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.

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.

### 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 ^

- ExifTool will not rewrite a file if it detects a significant problem with the file format.
- ExifTool has been tested with a wide range of different images, but since it is not possible to test it with every known image type, there is the possibility that it will corrupt some files. Be sure to keep backups of your files.
- Even though ExifTool does some validation of the information written, it is still possible to write illegal values which may cause problems when reading the images with other software. So take care to validate the information you are writing.

## Known Problems ^

- There is a bug in a number of Adobe utilities which causes some edited Sony ARW images to be displayed with the wrong tone curve. This problem has been observed in Photoshop CS4 Camera Raw 5.6, DNG Converter 5.6 and Lightroom 2.6 with ARW images from the A500, A550, A700, A850 and A900. Other software such as the Sony IDC utility, Apple RAW utilities, dcraw and Capture One have no problems with edited images. [This bug is fixed in Camera Raw 6.3 and LR 3.3]
- There is a bug in the Apple RAW file support (OS X 10.4.11) which prevents some edited Pentax PEF images from being displayed properly. Other software such as the Pentax Silkypix software and dcraw have no problems with these images. [This bug is fixed in OS X 10.5.4]
- In Windows, ExifTool will not process files with Unicode characters in the file name. This is due to an underlying lack of support for Unicode filenames in the Windows standard C I/O libraries.

## 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 (ie. change the "Date Picture Taken" reported by Windows Explorer). Say for example 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 ^

There is a large overhead in loading ExifTool, so performance may be greatly improved by taking advantage of ExifTool's batch processing capabilities (the ability to process multiple files or entire directories with a single command) to reduce the number of executed commands when performing complex operations or processing multiple files. [One exiftool user documented a 60x speed increase by processing a large number of files with a single command instead of running exiftool separately on each file.] Also, the `-execute` option may be used to perform multiple independent operations with a single invocation of exiftool, and together with the `-stay_open` option provides a method for calling applications to avoid this startup overhead.

The processing speed of ExifTool can be improved when extracting information by reducing the amount of work that it must do. Decrease the number of extracted tags by specifying them individually (`-TAG`) or by group (`-GROUP:all`), and disable the composite tags (`-e`) and the print conversions (`-n`) if these features aren't required. Note that the exclude options (`-x` or `--TAG`) are not very efficient, and may have a negative impact on performance if a large number of tags are excluded individually.

The `-fast` option 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 is not extracted. For more substantial speed benefits, `-fast2` may be used to also avoid extracting MakerNote information if this is not required.

When writing, avoid copying tags (with `-tagsFromFile`) or using the `-if` or `-fileOrder` option because these will add the extra step of extracting tags from the file. Without these the write operation is accomplished with a single pass of each file.

## The Image::ExifTool Perl Library Module ^

The "`exiftool`" script provides 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 of 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 ^

- ExifTool Home Page
- ExifTool FAQ
- ExifTool Revision History (RSS feed)
- exiftool Application Documentation
- ExifTool Tag Names
- Image::ExifTool API Documentation
- Sample ExifTool Configuration File (custom user-defined tags)
- Working with Metadata Sidecar Files
- Comments on the Subject of Writing Meta Information
- Problems with current Metadata Standards
- "Under the Hood" of ExifTool
- Canon RAW (CRW) File Format Specification
- MIE 1.1 File Format Specification (pdf)
- JPEG Image Samples (and Table of Makernote Types)
- ExifTool Forum
- Image::ExifTool at CPAN (CPAN Search)
- ExifTool Bug Reports (CPAN Request Tracker)
- ExifTool Test Reports (CPAN Testers)

### Related Utilities

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

Windows

- ExifTool GUI for Windows: GUI for viewing meta information with some editing features
- Exif Stats Utility: Analyzes images to tabulate apertures, exposure times, etc
- Auto ISO Tool: GUI front-end for ExifTool to patch Canon ISO information
- ExifAuto: GUI front-end for ExifTool to perform simple operations
- GeoSetter: Utility for showing and changing geo data of image files
- ExifMixer: GUI extension for the exiftool command-line interface
- ExifDropper: Graphical front-end for ExifTool with drag-and-drop
- GPStamper Geotagger: A simple Windows GUI front end for geotagging images
- AvPicFaceXmpTagger: Write Picasa 3.5 face recognition information as XMP to your images
- FileTagSleuth: MP3, ID3 and EXIF viewer
- Exif Copier: Copy Exif data between sets of multiple images
- ExifyMe: Restore Exif metadata from an original image
- PhotoMove: Automatically move photos to directories or folders based on Exif date taken
- TinyExif: Simple Windows GUI for ExifTool written in Python using the Qt4 toolkit
- GUI2 for ExifTool: An ExifTool GUI with built-in editor and browser

Mac OS X

- Download a stand-alone droplet to extract preview images from RAW files (thanks to Brett Gross)
- Download three droplets to extract information [exiftool must be installed] (thanks to Rob Lewis)
- Tierprogramm: Droplet to perform some basic operations
- MacMetaMod: Droplet for adding Keywords to images
- GPSPhotoLinker: Geotagging on the Mac
- PhotoGPSEditor and PhotoInfoEditor: Geocoding utilities
- MetaDataMover: GUI-based automator utility for moving/renaming images
- CS1ToCR2: Utility that uses Sony GPS-CS1 log files to add GPS information to CR2 images
- SetEXIFData: Utility to set EXIF data
- Geotagger: Droplet for inserting GPS coordinates in your photos
- Raw Photo Processor: Raw converter for Mac OS X
- GraphicConverter: Full-featured image editor
- GeoTag: Geotagging application for iPhone and OS X
- ImageFuser: Fuses multiple exposures of a scene into one image with improved detail/exposure
- GeoNamesTagger: Docklet to easily update image metadata with location specific information

Multi-Platform

- ImageIngester: Windows and Mac OS X image workflow automator
- gpsPhoto: Geotag your images from a GPS (GPX) track log
- renrot: Perl utility to perform various processing tasks on images
- Proxel EXIF Tool: Photoshop plugin based on ExifTool
- GPicSync: Windows/Linux utility to geocode photos from a GPX track log and create KML files
- FlickFleck: Tool to transfer images from memory card, rotate, rename, and organize by date
- gpx2exif: Python script to geocode photos and produce KML files from a GPS track log
- Geotag: Open source Java-based geotagging application
- PhotoGrok: Java-based GUI front-end for ExifTool to display images organized by any EXIF tag
- XnView: View and convert graphic files
- Mapivi: Open-source and cross-platform picture manager
- ResourceSpace: Open source digital asset management system

Lightroom Plugins

- Jeffrey's Exif Viewer: Web utility to view meta information in online images
- Jeffrey's Geoencoding Plugin for Lightroom: Geoencode your photos from within Lightroom
- Metadata Wrangler: Strip selected metadata components from images as they are exported
- FullMetaExport: Export JPEG images from Lightroom with full metadata

Linux

- rawimage: A kfile plugin and thumbnail image handler for RAW formats
- Sagittarius: Linux XMP metadata editor
- Photo related scripts: Includes EXIFInfo script to provide statistics from EXIF data
- Fotoxx: Open source Linux program for photo editing and collection management
- Hugin: Panorama photo stitcher

Programming

- Download sample AppleScript to extract tags into AppleScript record (thanks to Rob Lewis)
- Download example of a simple Visual C++ wrapper for exiftool (thanks Mark Borg and 黃瑞昌)
- Download C# version of simple exiftool wrapper (thanks Willem Semmelink)
- Download Visual Basic 6.0 example script v1.01 for reading tags with exiftool (thanks Michael Wandel)
- Sample VB.NET subroutine to extract a preview image (thanks Claus Beckmann)
- MiniExiftool: Ruby library wrapper for ExifTool
- Moss: Collection of Java utilities which includes an exiftool interface
- im4java: Java interface to ImageMagick, ExifTool, and other image utilities
- Java ExifTool: Enhanced Java Integration for ExifTool

Also notable, but not directly based on ExifTool:

- PhotoME: Windows utility to read/write meta information

### References

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

- wwwis Perl utilites by Alex Knowles
- http://park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html
- http://johnst.org/sw/exiftags/
- http://search.cpan.org/dist/Image-Info/
- http://www.sentex.net/~mwandel/jhead/
- http://cvs.sourceforge.net/viewcvs.py/libexif/libexif/
- http://neuemuenze.heim1.tu-clausthal.de/~sven/crwinfo/
- http://www.cybercom.net/~dcoffin/dcraw/
- http://www.dalibor.cz/minolta/makernote.htm
- http://www.exif.org/Exif2-2.PDF
- http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html
- http://search.cpan.org/dist/Image-MetaData-JPEG/
- http://www.adobe.com/products/dng/main.html
- http://www.awaresystems.be/imaging/tiff/tifftags.html
- http://homepage3.nifty.com/kamisaka/makernote/index.htm (in english)
- http://www.gvsoft.homedns.org/exif/

### How-To Videos

- Using the ExifTool on Linux to read/write Exif Tags to your photo collection
- ExifTool: convert XMP to IPTC (WINDOWS)
- Working with jpg Metadata Comments - Exiftool - BASH - Linux Command Line

### Other Links

- An interview with Phil Harvey
- Pepper's "Metadata Madness" blog (Pepper is my cat)

## 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:

- Malcolm Wotton for his help with the D30 Custom Functions
- David Anson for his help sorting out binary file problems on Windows
- Leon Booyens for his suggestions
- Dan Heller for his bug reports, detailed suggestions and guidance
- Wayne Smith for his help figuring out the Pentax maker notes
- Michael Rommel for his bug fixes and additions to the Canon maker notes
- Joseph Heled for help figuring out some of the Nikon D70 maker notes
- Joachim Loehr for adding the Casio type 2 maker notes
- Greg Troxel for his suggestions and for adding ExifTool to pkgsrc
- Thomas Walter for figuring out some Nikon tags
- Brian Ristuccia for more information about some Nikon tags
- Christian Koller for decoding the 20D custom functions
- Matt Madrid for his testing and feedback
- Tom Christiansen for his help decoding some Nikon tags
- Markku Hänninen for help decoding tags for the Olympus E-1
- Frank Ledwon for decoding many new Olympus tags
- Robert Rottmerhusen for decoding many tricky Nikon lens data tags
- Michael Tiemann for decoding a number of new Canon tags
- Albert Bogner for his image samples, testing and useful suggestions
- Rainer Hönle for decoding a number of new Canon 5D tags
- Nilesh Patel for his help with the web page layout
- Jens Duttke for his suggestions, bug reports and help decoding new tags
- Dave Nicholson for decoding new tags in Pentax and Canon maker notes
- Bogdan for his feedback, decoding efforts, and user support
- Igal Milchtaich for decoding many Sony A100 tags
- Warren Hatch for extensive testing and decoding of Nikon D3 tags

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.

## Donate ^

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 ^

If you have any comments, suggestions or questions, please post to the ExifTool Forum so other people may benefit from your experiences. (I check the forum at least as often as my email.) Otherwise, if you must contact me directly, my e-mail address is on the first line of the README file in the full distribution. Thanks. - Phil Harvey

Installing | Tag Names | Resources | History | Forum | FAQ
--- | --- | --- | --- | --- | ---