Skip to main content
COMBb2
100% Private
Tips & Tricks

ExifTool reads camera maker notes that manufacturers never agreed to document

A photo can retain GPS coordinates, capture time, camera identifiers and other metadata long after its visible pixels have been edited. ExifTool is one way t...

August 9, 2026
7 min read
ExifTool reads camera maker notes that manufacturers never agreed to document
ExifTool reads camera maker notes that manufacturers never agreed to document

A photo can retain GPS coordinates, capture time, camera identifiers and other metadata long after its visible pixels have been edited. ExifTool is one way to inspect that hidden payload before a file is shared. The lesson is practical: a JPEG can disclose information that never appears in the image itself.

ExifTool is Phil Harvey's command-line tool and Perl library for reading, writing and deleting that metadata across an unusually wide range of file formats. It does not touch pixels. It touches the boxes of text and binary data wrapped around the pixels: EXIF, IPTC, XMP, ICC profiles, and the manufacturer-specific "MakerNotes" block that every camera brand stuffs into its files without asking anyone's permission.

How it reads a camera's secret handshake

Camera makers do not publish MakerNotes specifications. Canon, Nikon, Sony and the rest each encode their own proprietary tags: lens serial numbers, autofocus points, shutter count, in-camera settings, sometimes GPS logs finer than the standard EXIF GPS block. None of it is documented, and manufacturers have no obligation to keep the layout stable release to release.

ExifTool's MakerNotes support exists because someone reverse-engineered it, camera by camera, file by file, comparing known settings against the bytes that changed. That is why a brand-new camera body sometimes gets partial or "Unknown" tags in a given exiftool release, and a later version fills them in once someone has done the archaeology. It is less a parser and more an ongoing translation project for a language nobody agreed to write down.

File type identification works the same practical way: exiftool looks at the actual file signature and structure, not the extension. Rename a PNG to .jpg and exiftool still calls it a PNG. This also means a truncated or genuinely corrupted file can confuse the detector in ways a simple extension check never would.

What actually happens when you run it

The everyday shape of exiftool is a single command against a file or a directory tree:

  • exiftool photo.jpg - dump every tag exiftool recognizes, human-readable
  • exiftool -GPSLatitude -GPSLongitude photo.jpg - pull one or two specific tags instead of everything
  • exiftool -j photo.jpg - the same information as JSON, for piping into a script
  • exiftool -r -ext jpg /path/to/folder - recurse a directory tree instead of naming files one at a time

Windows users running the raw script rather than a compiled build may need to invoke it as exiftool.pl, or run it as perl exiftool, per the README.

The read/write/create distinction in exiftool's own documentation matters more than it looks:

FormatSupport
EXIF, XMP, ICC Profile, MIEr/w/c (can create the block from nothing)
DNG, JPEG, PNG, PDFr/w (edit existing metadata)
3FR, K25, KDC, SRFr only (no writing back)

The "c" for create matters in practice: exiftool can embed a fresh XMP packet or ICC profile into a file that never had one, not just edit an existing block - though only where the container format has somewhere to put it. A format's r/w/c rating describes exiftool's capability, not a guarantee that every file of that type can grow a metadata block out of nothing. The plain "r" formats are read-only for a structural reason, not a missing feature, so do not plan a workflow that assumes you can tag a K25 file the way you'd tag a DNG.

Where it bites

The _original files quietly multiply. By default, any command that modifies a file leaves the untouched version behind with an _original suffix, so a batch strip-and-rewrite over a folder of 500 JPEGs leaves you with 1000 files and a folder that has mysteriously doubled in size, like a photocopier with a grudge. Add -overwrite_original when you actually want the edit in place with no backup.

"Strip everything" does not always strip everything. Running exiftool -all= photo.jpg clears the standard EXIF/IPTC/XMP tag groups, but ICC profiles and other embedded structures are separate blocks that need to be targeted explicitly - add -icc_profile= (and check for embedded previews and thumbnails) if the goal is a genuinely metadata-free file before publishing something sensitive. Check what's left afterward rather than assuming a single blanket command caught it all.

Optional Perl modules gate entire format families. Reading DOCX, PPTX, XLSX or other Office/iWork containers depends on Archive::Zip being installed; DNG, PNG, PDF and MIE decompression depend on Compress::Zlib; AES-256-encrypted PDFs need Digest::SHA. Without the relevant module, exiftool doesn't always fail loudly - it may print a warning to the console, but that's easy to miss in a batch job, and the practical result looks identical to "there's no metadata here." Check the warnings, not just the output.

New camera models outrun the MakerNotes decoder. A body released after your installed exiftool version may report only partial or generic tags for its maker-specific data. This isn't a bug so much as the reverse-engineering lag catching up; updating to a current release is the actual fix, not re-reading the file differently.

Whose license, exactly

The README states plainly that the code is distributed under the same terms as Perl itself: the user's choice of the Perl Artistic License or the GNU GPL. That's the authoritative answer, straight from the copyright holder, and it's worth taking at face value rather than trusting whatever a package index or repository sidebar happens to summarize it as - license metadata gets transcribed by hand in more places than anyone would like, and it drifts from the source text.

The version history is granular rather than showy: point releases track camera firmware and file-format changes that do not announce themselves in advance. Check the official download page for the current release instead of treating a version number copied into an article as durable documentation.

What it deliberately does not do

ExifTool will not resize, recompress, color-correct or otherwise touch the image data itself. It is a metadata tool, full stop; pixel-level work belongs to a separate program entirely. It also runs locally as a script or library, not as a web upload, which is worth knowing if the reason you're stripping GPS and camera-serial data from a photo is that you don't want it leaving your machine in the first place.

References

  • ExifTool GitHub repository: https://github.com/exiftool/exiftool
  • Official ExifTool site and downloads: https://exiftool.org/
  • ExifTool Tag Name documentation: https://exiftool.org/TagNames/

Important notice. Tap any item to read it in full.

Accuracy is not guaranteed

This article was produced with substantial automated assistance and is published without individual expert verification of every statement. It may contain errors, omissions, oversimplifications, or claims that were accurate when written and have since been superseded. Software, protocols, specifications and best practice in this field change quickly.

Verify before you rely on it

Treat this page as a starting point and a pointer to primary sources, never as an authority in itself. Before acting on anything here, check it against the official documentation, the original publication, or the vendor's own materials, which are linked in the references above. Where this page and a primary source disagree, the primary source is correct and this page is wrong.

No warranty

This content is provided "as is", without warranty of any kind, express or implied, including but not limited to warranties of accuracy, completeness, currency, merchantability, or fitness for a particular purpose.

No liability

To the fullest extent permitted by applicable law, combb2.io and its authors accept no liability for any loss or damage whatsoever, whether direct, indirect, incidental, consequential or otherwise, arising from use of or reliance on this article. This expressly includes lost time, lost data, damaged samples or specimens, wasted reagents or compute, failed experiments, equipment damage, and commercial loss.

Not professional advice

Nothing here constitutes professional, scientific, engineering, regulatory, safety or legal advice. You remain solely responsible for your own experimental design, safety assessment, regulatory compliance and data handling, and for any code you run or procedure you perform.

About the illustration

Any image accompanying this article is editorial and decorative. It was produced with generative AI, is not a technical diagram, is not to scale, and is not an accurate depiction of any structure, process or result. Do not read measurements, structures or relationships from it.

Third-party names and links

Product, project and organisation names are the property of their respective owners and are used for identification only. Their mention is not endorsement, affiliation or sponsorship in either direction. External links are provided for convenience and we neither control nor are responsible for third-party content.

Corrections

If you find an error, tell us and we will correct or withdraw the page.

exiftoolentity referenceimage-tools

Try it yourself

Free, private, runs in your browser. No sign-up required.

Open Tool

Try COMBb2 - Free Image Tools

16 AI-powered image tools that run 100% in your browser. Your photos never leave your device.