Guide

ExifTool: Reading the Metadata a File Doesn't Show You

By OSINTPanel Editorial TeamPublished August 18, 2026Updated August 18, 2026 Related tool: ExifTool →

Open most image viewers and you'll see a filename, maybe a resolution, maybe nothing at all. That same file can be quietly carrying a GPS coordinate, the exact camera or phone model that took it, a timestamp down to the second, and a record of what software last touched it. ExifTool, Phil Harvey's long-running Perl utility, is the tool that actually reads all of that back out — EXIF, IPTC, XMP, ICC profiles, and the maker-specific notes that camera manufacturers bury in their own proprietary tag sets, across thousands of image, video, audio, and document formats.

Installing it

On macOS, Homebrew handles it in one line:

brew install exiftool

On Debian/Ubuntu-based Linux:

sudo apt install libimage-exiftool-perl

Windows users grab the standalone package from exiftool.org, rename the downloaded exiftool(-k).exe to exiftool.exe, and place it (along with its accompanying exiftool_files folder) somewhere on the system PATH. Whichever platform, confirm the install worked with:

exiftool -ver

Perl itself ships bundled with the Windows and macOS packages, so there's nothing extra to set up there; on Linux it's typically already present as a system dependency.

The commands worth knowing first

A bare run against a file dumps everything it can find:

exiftool photo.jpg

For geolocation work, jump straight to the coordinates rather than scrolling the full dump:

exiftool -GPSLatitude -GPSLongitude photo.jpg

To see every timestamp a file carries — creation, modification, and any digitized date, which don't always agree with each other and can be a signal on their own:

exiftool -AllDates photo.jpg

Checking what last edited a file is a fast way to flag possible manipulation before doing anything more rigorous:

exiftool -Software photo.jpg

And for the tags that a plain dump quietly collapses or hides — duplicate fields, group-prefixed tags, anything the default view simplifies away — add the flags that force everything into view:

exiftool -a -u -g1 photo.jpg

That last one matters more than it looks: two conflicting timestamp or GPS tags in the same file, only visible with -a -u, can itself be evidence that a file was edited or reconstructed after capture.

Working across a whole folder

ExifTool's batch behavior is where it earns its keep on real casework. A tab-separated report across every image in a directory takes one line:

exiftool -T -FileName -CreateDate -Model *.jpg > report.txt

and you can filter that same sweep down with a conditional expression — every photo from a specific device, for instance:

exiftool -if '$Make eq "Apple"' -FileName *.jpg

or every file captured inside a date window, which is useful for reconstructing a timeline from a folder dump of unsorted images:

exiftool -if '$CreateDate ge "2024:01:01" and $CreateDate le "2024:12:31"' *.jpg

If a set of photos carries GPS data and you want to see it laid out spatially instead of as a table, ExifTool can generate a KML file straight from the folder for opening in Google Earth:

exiftool -p kml.fmt -q -n images/ > photos.kml

Cost and difficulty

Completely free and open source under the Perl Artistic License, with no account, license key, or online dependency — it runs entirely offline. Difficulty sits higher than most tools in this category, around 3 out of 5: there's no GUI worth relying on for anything beyond the most basic lookup, so real use means getting comfortable with flags, tag group names, and conditional filter syntax. The payoff is that once those commands are familiar, batch analysis across hundreds of files takes seconds instead of manual clicking through each one.

What to keep in mind before trusting a result

The single highest-value field for geolocation work is GPS EXIF data, but it's worth setting expectations early: almost every major social platform strips it on upload for privacy reasons, so you'll typically only find it in files shared as originals — email attachments, messaging apps, direct cloud storage links — rather than anything pulled off a social media post. Absence of GPS data in a downloaded social image tells you nothing about whether the original had it.

More fundamentally: every tag ExifTool reports is just a report on what a file's headers currently say, and headers can be edited, forged, or stripped as easily as they can be read — by the same tool, in fact. A clean, consistent-looking metadata set is not proof a file is untouched, and a manipulated or missing field isn't proof of foul play either; plenty of legitimate re-saves and format conversions wipe metadata as a side effect. Treat every field as a lead to independently verify, never as a standalone conclusion.

A few practical habits keep this from going wrong on real cases: work from a copy in a dedicated case folder rather than the original file, since ExifTool's edits are permanent and there's no undo; keep a written record of exactly which commands you ran against which files, both for your own sanity and for anyone reviewing the work later; and test any command you're about to run in bulk against one sample file first. It's also worth remembering ExifTool alone doesn't establish a forensic chain of custody — for casework that needs to hold up formally, pair it with proper documentation practices (the Berkeley Protocol is the standard reference) rather than treating a metadata dump as sufficient on its own.