4.6

EXIF, IPTC, XMP, and C2PA compared

Three of these are descriptive metadata that anyone can write and anyone can edit. The fourth is a signed statement that makes editing detectable. They are complementary, frequently stored side by side, and routinely confused.

An image file from a modern camera or editor can carry four overlapping kinds of metadata. EXIF records how the picture was taken. IPTC records what it shows and who owns it. XMP is a flexible container that carries IPTC fields, editing history, and almost anything else. C2PA, marketed as Content Credentials, is a signed provenance record that can repeat some of the same information but makes it tamper-evident.

The practical difference is trust. EXIF, IPTC, and XMP are unsigned: any tool can write any value, and nothing in the file records that it was changed. C2PA binds its statements to the file's bytes with a cryptographic signature, so a change after signing is detectable. None of the four is guaranteed to survive a trip through the internet. This page compares them side by side; the reading image metadata page covers what the individual fields reveal.

At a glance

EXIFIPTCXMPC2PA
PurposeCapture settings and device dataEditorial description and rightsGeneral-purpose, extensible metadataSigned provenance and edit history
Maintained byCIPA with JEITA (Japan)International Press Telecommunications CouncilAdobe; ISO 16684-1Coalition for Content Provenance and Authenticity
EncodingTIFF-style binary tagsLegacy binary IIM records, or XMP propertiesRDF/XML text packetCBOR and JSON assertions in JUMBF boxes
Location in a JPEGAPP1 segmentAPP13 (IIM, inside Photoshop resources) or APP1 (as XMP)APP1 segment; also .xmp sidecar filesAPP11 segments; also .c2pa sidecar or remote URL
SignedNoNoNoYes, X.509 certificate
Edits detectableNoNoNoYes, the manifest fails validation
Typical writersCameras, phonesPhotographers, agencies, newsroom systemsEditing and asset-management softwareC2PA-enabled cameras, phones, editors, AI generators
Read withExifTool, most image viewersExifTool, photo-management softwareExifTool, Adobe appsc2patool, Verify, Adobe Inspect; ExifTool (raw data)

EXIF

The Exchangeable image file format dates to the mid-1990s and is now maintained jointly by the Camera and Imaging Products Association (CIPA) and the Japan Electronics and Information Technology Industries Association (JEITA). The current version, Exif 3.0, was published in 2023 and added a UTF-8 text type, so fields like Artist and Copyright are no longer restricted to ASCII.

EXIF stores numbered tags in TIFF-style image file directories: make and model, exposure time, aperture, ISO, focal length, lens, timestamps, GPS coordinates, orientation, often an embedded thumbnail, and a manufacturer-specific MakerNote. In a JPEG it sits in an APP1 segment; PNG has an eXIf chunk; HEIF stores it as a metadata item. It is written automatically by the device, which makes it the richest source of capture detail and the one with the most privacy exposure, especially GPS.

IPTC

The International Press Telecommunications Council maintains the IPTC Photo Metadata Standard, the vocabulary newsrooms and agencies use for captions, creator, credit line, copyright notice, usage terms, keywords, and location. It exists in two encodings:

IPTC matters for provenance because of its Digital Source Type property, a controlled vocabulary with values such as digitalCapture and trainedAlgorithmicMedia that labels how an image was made. The C2PA specification uses the same vocabulary, and several platforms read the unsigned IPTC version to apply AI labels. The 2025.1 release, published in November 2025, added properties for the AI system used and the prompt.

XMP

The Extensible Metadata Platform was introduced by Adobe in 2001 and standardized as ISO 16684-1. An XMP packet is RDF/XML text organized into namespaces: Dublin Core (dc:), Adobe's basic and media-management schemas, Photoshop and Camera Raw settings, IPTC Core and Extension, and any custom namespace an application defines. In a JPEG it lives in its own APP1 segment; for raw camera files, editors often write it to a separate .xmp sidecar instead.

XMP's media-management namespace can hold a document ID, an instance ID, and a history of save and edit events. This looks like provenance and is sometimes read as such, but it is unsigned and freely editable, so it is a record of what software chose to write, not evidence of what happened. The C2PA specification uses XMP in one small way: when a manifest is stored outside the file, it recommends a dcterms:provenance entry in the XMP pointing to where the manifest can be found.

C2PA

C2PA is different in kind. A C2PA manifest is a set of assertions (actions, ingredients, digital source type, creator information) gathered into a claim that is signed with an X.509 certificate. A hard binding, a hash over the file's bytes excluding the manifest itself, ties the signature to this exact file. The structure is stored in JUMBF boxes (ISO/IEC 19566-5): APP11 segments in a JPEG, a caBX chunk in a PNG, and format-specific boxes elsewhere. The manifest structure page covers the details.

C2PA does not replace the older formats. A C2PA-enabled camera still writes EXIF, and an editor still writes XMP. The specification defines a c2pa.metadata assertion that can carry an allowed subset of EXIF, IPTC, XMP, and Schema.org fields inside the signed manifest; a validator rejects fields outside that list. When capture details matter, the version inside the manifest is the one the signer vouched for. The copies in the ordinary metadata segments may have been edited since.

Signed does not mean true A valid C2PA signature proves that a particular certificate holder made these statements and that the file has not changed since. It does not prove the statements are accurate. What it adds over EXIF is accountability and tamper evidence, not truth. See what provenance cannot prove.

What survives common workflows

Survival depends on the specific software, its settings, and the version in use, so treat the table below as typical behaviour, not a guarantee. Test your own pipeline.

WorkflowEXIF, IPTC, XMPC2PA
Metadata edited with ExifTool or similarChanged silently, with no traceManifest still present but fails validation (assertion.dataHash.mismatch)
Re-saved in an editor without C2PA supportUsually preservedDropped, or carried along stale and then invalid
Edited and exported in a C2PA-enabled editor with credentials turned onUsually preservedNew signed manifest, with the previous one as an ingredient
"Export for web" with metadata excludedRemovedRemoved unless the export attaches a new credential
Upload to a social platformMost platforms strip most fields; some keep selected rights fieldsUsually stripped; a few platforms preserve or display it
Messaging-app recompressionUsually strippedUsually stripped
ScreenshotGone; the new file gets the screenshotting device's metadataGone; only watermark or fingerprint recovery can link it back

Platform behaviour changes often and is tracked on the platform policies page. The one case where C2PA has an answer the others lack is the last row: a manifest that used a soft binding, meaning an invisible watermark or a fingerprint, can sometimes be recovered from a repository after the file itself has been stripped. See durable Content Credentials and hard vs. soft bindings.

Reading each with ExifTool

ExifTool reads all four. Group names select a family of tags; -G1 prints the specific group of each tag, -a keeps duplicates (the same field often appears in EXIF, IPTC, and XMP at once), and -s prints tag names instead of descriptions.

# everything, labelled by group
exiftool -a -G1 -s photo.jpg

# EXIF only
exiftool -EXIF:all photo.jpg

# IPTC IIM (legacy binary records)
exiftool -IPTC:all photo.jpg

# IPTC Core and Extension (stored as XMP)
exiftool -XMP-iptcCore:all -XMP-iptcExt:all -G1 photo.jpg

# all XMP, grouped by namespace
exiftool -XMP:all -G1 photo.jpg

# the raw XMP packet
exiftool -xmp -b photo.jpg > photo.xmp

ExifTool also parses C2PA's JUMBF data from JPEG, PNG, TIFF-based, QuickTime-based (including HEIF and MP4), RIFF-based, PDF, SVG, and GIF files. Its tag documentation suggests these arguments for reading it:

exiftool -jumbf:all -G3 -b -j -u -struct photo.jpg

ExifTool shows the contents of a manifest, but it does not validate signatures, check hashes, or apply a trust list. A manifest that has been tampered with looks the same in ExifTool as an intact one. To validate, use c2patool or one of the tools on the viewing Content Credentials page:

c2patool photo.jpg --info

ExifTool can also delete C2PA data from supported formats with -jumbf:all=, and this is why a missing manifest proves nothing. Stripping is the subject of the next page.

Which one to trust for what