EXIF, IPTC, XMP — three metadata standards walk into a photo
"What metadata is in this photo" looks like one question and is actually three. JPEGs (and many other formats) carry up to three independent metadata blocks, written by different actors at different times, defined by different standards, indexed by different field names. Frequently the same piece of information lives in two of them. Sometimes the values disagree.
EXIF — the camera writes this one
Specified by JEIDA in 1995, EXIF lives in a JPEG's APP1 marker (segment FF E1), introduced by the magic bytes "Exif\0\0". Internally it is a TIFF-format Image File Directory. Cameras and phones write EXIF without any human input — it records what the device saw and did at the moment of capture: model name, lens, exposure values, GPS, timestamp from the camera clock, and a thumbnail.
You don't edit EXIF in normal use. You receive it.
IPTC IIM — the newsroom standard
The International Press Telecommunications Council's "Information Interchange Model" predates EXIF: 1991, designed for wire-service photography. It lives in JPEG APP13 (FF ED) wrapped in an Adobe Photoshop "8BIM" container — a historical artefact of how Photoshop chose to save IPTC fields when the standard was retrofitted onto JPEG.
IPTC fields are editorial and human-written: caption, by-line, keywords, copyright notice, location names, credit, source. Stock agencies and newspapers use them heavily; consumer phones write them rarely.
XMP — Adobe's RDF/XML replacement for both
Adobe published XMP (Extensible Metadata Platform) in 2001 and it became ISO 16684 in 2012. It is a self-describing RDF/XML document embedded in another APP1 segment, identified by the namespace declaration xmlns:x="adobe:ns:meta/" wrapping a <rdf:RDF> packet.
XMP was designed to subsume both EXIF and IPTC under a single extensible scheme: Dublin Core for general fields (dc:title, dc:creator, dc:rights, dc:subject), xmp: for technical capture data, photoshop: for edit history, crs: for Camera Raw / Lightroom develop settings, and any number of vendor extensions.
When the three disagree
The same logical field — say, "the photo's caption" — exists in all three standards under different names: ImageDescription in EXIF, Caption-Abstract in IPTC, dc:description in XMP. Editing software is supposed to keep them in sync but frequently doesn't, especially after one tool writes XMP and another tool reads only IPTC.
Common conflicts our viewer surfaces:
- Caption updated in XMP but stale in IPTC — user edited in a recent app, an older app reads only IPTC and shows yesterday's caption.
- Title in IPTC
"Stock photo 4521"vsdc:title"Sunset over the harbour"— bulk-imported file vs. hand-edited title. - EXIF
DateTimeOriginal2024:08:15 vs XMPxmp:CreateDate2024:08:14 — timezone bug or post-import time-shift.
How our viewer handles them
The WASM-bundled reader walks all three blocks separately and labels every tag with its source group: [EXIF], [IPTC], [XMP-dc], [XMP-photoshop], etc. Logically duplicated fields appear under each group they exist in, so you can spot disagreements immediately. The grouping comes straight from the underlying parser; we filter out a few internal "Composite" / "ExifTool" / "System" / "File" pseudo-groups that aren't part of the file itself.
If you only see EXIF in your photo and no IPTC or XMP, that's normal — most consumer phone photos are EXIF-only. IPTC and XMP appear when a human or an editing app has touched the file.