What it was built for
The IPTC (International Press Telecommunications Council) defined fields so a photo could travel with a caption, creator, copyright, and subject codes. Implementations show up as IPTC-IIM blocks and as XMP properties. Cameras and phones may fill almost none of this. Photo editors fill a lot of it.
What it is not
IPTC is not a live location ping. A “City” field can be typed by a person and be wrong. GPS, when present, is a different structure. C2PA credentials are a later, signed provenance system.
A sharing copy from Metadata Cleaner drops supported header metadata on JPEG/PNG/WEBP, including typical IPTC/XMP packets. It does not redact caption text that was burned into the pixels.
What ExifTool kept after each delete, on one JPEG
On 22 October 2026 we drew an 800×600 image with Pillow 10.2.0 and wrote one JPEG that held EXIF, IPTC-IIM and XMP together. ExifTool 12.76 was both the writer and the reader. The picture is a fixture labeled CPK fixture 2026-10-22, not a photograph of a place. GPS was 10.5 N, 20.25 E, altitude 12.5 m. Make was CPKFixture, Model was TestPhone, DateTimeOriginal was 2026:10:22 12:00:00.
The caption and the XMP description were different strings on purpose. IPTC Caption-Abstract was “Fixture caption for the IPTC test.” XMP-dc:Description was “Fixture XMP description.” IPTC By-line and XMP-dc:Creator were both “Fixture Byline.” Credit and City were written into IPTC and into XMP-photoshop. CopyrightNotice and XMP-dc:Rights were both “Fixture Copyright 2026.” ObjectName was “Fixture headline.” Keywords was “fixture.” The file was 18,138 bytes. ExifTool also wrote XMPToolkit “Image::ExifTool 12.76”.
The IPTC Photo Metadata Standard 2025.1 maps Creator to XMP dc:creator and to IIM 2:80 By-line, with a 32-byte IIM text limit, and Description to XMP dc:description and to IIM 2:120 Caption-Abstract, with a 2,000-byte IIM text limit. Our strings sit well under those caps. IPTC’s quick guide for Google Images says Google reads Creator from XMP dc:creator first and, if that is empty, from IIM 2:80; Credit from XMP photoshop:Credit, then IIM 2:110; Copyright Notice from XMP dc:rights, then IIM 2:116.
| Command on a copy of the 18,138-byte JPEG | Bytes after | What ExifTool 12.76 still listed |
|---|---|---|
| exiftool -EXIF:all= | 17,684 | IPTC headline, caption, by-line, copyright and keywords stayed, and so did the XMP description, creator, rights, credit and city. Make, Model, DateTimeOriginal and GPS were gone. |
| exiftool -IPTC:all= | 17,946 | EXIF and GPS stayed. XMP description, creator, rights, credit and city stayed. The IPTC headline, caption, by-line, copyright notice and keywords were gone. |
| exiftool -XMP:all= | 14,793 | EXIF and GPS stayed. IPTC headline, caption, by-line, credit, copyright, city and keywords stayed. XMP-dc and XMP-photoshop were gone. |
| exiftool -all= | 14,129 | File type and 800×600 only. No Make, no GPS, no IPTC, no XMP. |
| mat2 0.13.4 --inplace | 11,748 | File type and 800×600 only. Smaller than the exiftool -all= copy, so mat2 rewrote image data as well as dropping the tags. It printed nothing and finished in 81.6 ms. |
Deleting EXIF left the caption. Deleting IPTC left the XMP description, which was a different sentence. Deleting XMP left the IPTC caption, and Credit and City then showed under the IPTC group. A control that only offers “remove EXIF” did not, on this file, remove the press caption or the credit line that Google’s guide reads from XMP first.
The same GPS tags were also readable on a PNG copy (8,529 bytes) and a WebP copy (5,524 bytes) of the drawing. This run wrote the IPTC and XMP packets on the JPEG only. Pages that explain EXIF versus IPTC versus XMP in a glossary do not show this split: IPTC Photo Metadata 2025.1, IPTC’s Google Images guide.