{
  "$schema": "https://appvau.lt/api/v1/openapi.json",
  "dataset": "metadata-fields",
  "title": "What photo metadata reveals, field by field",
  "description": "Every EXIF, XMP, IPTC and C2PA carrier a JPEG, PNG or WebP can hold, with a plain-language statement of what each field gives away and how strongly it identifies a person, a place or a device.",
  "updated": "2026-09-11",
  "source": "https://appvau.lt",
  "documentation": "https://appvau.lt/tools/photo-metadata/",
  "publisher": "Vast Flow, LLP",
  "licence": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "App-Vault (https://appvau.lt)",
    "terms": "Free to reuse, republish and build on, including commercially, with attribution and a link to the source page."
  },
  "caveats": [
    "`risk` is a judgement about identification made by this publisher, not a rating from any standard. `reveals` is the part worth quoting.",
    "A field that is individually low-risk can be high-risk in combination: a model, a timestamp and a time-zone offset together often identify one person.",
    "An AI-generator signature proves only that a file DECLARES a generator. Absence proves nothing — these strings are removable in one click, including by the tool this dataset describes.",
    "Invisible pixel watermarks (SynthID and similar) are not metadata, survive re-encoding, and are not detectable by any reader that parses these containers.",
    "The field list covers what the tool on this site parses and names. A camera may write hundreds of proprietary MakerNote tags that are removed with the rest and are not described here."
  ],
  "counts": {
    "fields": 41,
    "carriers": 7,
    "groups": 7,
    "generator_signatures": 21
  },
  "risk_scale": [
    {
      "level": "high",
      "means": "On its own, locates a person, a place or a specific device."
    },
    {
      "level": "medium",
      "means": "Narrows the set of possible authors or devices, or dates the file."
    },
    {
      "level": "low",
      "means": "Describes the picture as a picture."
    }
  ],
  "groups": [
    {
      "id": "gps",
      "label": "Location",
      "what": "Where the shutter was pressed, to a few metres, plus direction and altitude.",
      "field_count": 10
    },
    {
      "id": "device",
      "label": "Device",
      "what": "Which camera or phone took it, and sometimes exactly which unit.",
      "field_count": 7
    },
    {
      "id": "time",
      "label": "Time",
      "what": "When it was taken, to the second, often with the time-zone offset.",
      "field_count": 5
    },
    {
      "id": "author",
      "label": "Author",
      "what": "Who the file says made it, and who claims the copyright.",
      "field_count": 6
    },
    {
      "id": "edit",
      "label": "Editing history",
      "what": "What software touched the file, and sometimes every step it took.",
      "field_count": 4
    },
    {
      "id": "capture",
      "label": "Capture settings",
      "what": "Exposure, focal length, flash — the photographic record.",
      "field_count": 9
    },
    {
      "id": "origin",
      "label": "Origin and provenance",
      "what": "Whether the file declares that a model generated it, and who signed that claim.",
      "field_count": 0
    }
  ],
  "carriers": [
    {
      "id": "exif",
      "label": "EXIF",
      "stored_in": "JPEG APP1, PNG eXIf chunk, WebP EXIF chunk",
      "what": "The camera record: the fields above, in a TIFF structure.",
      "specification": "https://www.cipa.jp/std/documents/download_e.html?DC-008-Translation-2023-E"
    },
    {
      "id": "xmp",
      "label": "XMP",
      "stored_in": "JPEG APP1 (Adobe namespace), PNG iTXt, WebP XMP chunk",
      "what": "An RDF/XML sidecar Adobe software writes. Holds edit history, ratings, captions, the originating document ID, and the IPTC \"digital source type\" that declares AI generation.",
      "specification": "https://developer.adobe.com/xmp/docs/XMPSpecifications/"
    },
    {
      "id": "iptc",
      "label": "IPTC-IIM",
      "stored_in": "JPEG APP13, inside a Photoshop image resource block",
      "what": "The newsroom caption format: byline, credit, source, keywords, city, country. Older than XMP and still written by wire services.",
      "specification": "https://www.iptc.org/std/photometadata/specification/IPTC-PhotoMetadata"
    },
    {
      "id": "icc",
      "label": "ICC profile",
      "stored_in": "JPEG APP2, PNG iCCP, WebP ICCP chunk",
      "what": "The colour profile. Not identifying, and removing it can shift colours on a wide-gamut screen — which is why it has its own switch in the tool rather than being swept up with the rest.",
      "specification": "https://www.color.org/icc_specs2.xalter"
    },
    {
      "id": "c2pa",
      "label": "C2PA Content Credentials",
      "stored_in": "JPEG APP11 (JUMBF), PNG caBX chunk, WebP C2PA chunk",
      "what": "A cryptographically signed record of where the file came from and what was done to it, including whether a generative model made it. Removing it does not alter the pixels; it removes the provenance claim, and a platform that checks for one will report the file as unverified.",
      "specification": "https://c2pa.org/specifications/specifications/2.1/index.html"
    },
    {
      "id": "mpf",
      "label": "MPF (Multi-Picture Format)",
      "stored_in": "JPEG APP2",
      "what": "An index of additional images stored inside one JPEG — a depth map, a motion photo, or the gain map of an Ultra HDR file.",
      "specification": "https://www.cipa.jp/std/documents/download_e.html?CIPA_DC-007-2021_E"
    },
    {
      "id": "thumbnail",
      "label": "Embedded thumbnail",
      "stored_in": "JPEG IFD1, inside the EXIF block",
      "what": "A small copy of the image, written at capture. It is not updated when you crop or redact the main image, so the thumbnail can still show what you removed. This is a documented, repeatedly-exploited failure.",
      "specification": "https://www.cipa.jp/std/documents/download_e.html?DC-008-Translation-2023-E"
    }
  ],
  "fields": [
    {
      "key": "GPSLatitudeRef",
      "label": "Latitude hemisphere",
      "ifd": "gps",
      "tag": "0x0001",
      "group": "gps",
      "risk": "high",
      "reveals": "North or south. Useless alone, required to read the latitude."
    },
    {
      "key": "GPSLatitude",
      "label": "Latitude",
      "ifd": "gps",
      "tag": "0x0002",
      "group": "gps",
      "risk": "high",
      "reveals": "Where the photo was taken, typically within 5-10 metres on a phone with a clear sky."
    },
    {
      "key": "GPSLongitudeRef",
      "label": "Longitude hemisphere",
      "ifd": "gps",
      "tag": "0x0003",
      "group": "gps",
      "risk": "high",
      "reveals": "East or west."
    },
    {
      "key": "GPSLongitude",
      "label": "Longitude",
      "ifd": "gps",
      "tag": "0x0004",
      "group": "gps",
      "risk": "high",
      "reveals": "The other half of the coordinate. A home address is one lookup away."
    },
    {
      "key": "GPSAltitudeRef",
      "label": "Altitude reference",
      "ifd": "gps",
      "tag": "0x0005",
      "group": "gps",
      "risk": "medium",
      "reveals": "Above or below sea level."
    },
    {
      "key": "GPSAltitude",
      "label": "Altitude",
      "ifd": "gps",
      "tag": "0x0006",
      "group": "gps",
      "risk": "medium",
      "reveals": "Height in metres. In a city this can imply a floor."
    },
    {
      "key": "GPSTimeStamp",
      "label": "GPS time",
      "ifd": "gps",
      "tag": "0x0007",
      "group": "gps",
      "risk": "medium",
      "reveals": "UTC time from the satellites, which does not lie about the time zone the way a camera clock does."
    },
    {
      "key": "GPSDateStamp",
      "label": "GPS date",
      "ifd": "gps",
      "tag": "0x001d",
      "group": "gps",
      "risk": "medium",
      "reveals": "UTC date from the satellites."
    },
    {
      "key": "GPSImgDirection",
      "label": "Camera direction",
      "ifd": "gps",
      "tag": "0x0010",
      "group": "gps",
      "risk": "medium",
      "reveals": "The compass bearing the lens was pointing. With the coordinate, it says which window you were standing at."
    },
    {
      "key": "GPSProcessingMethod",
      "label": "Positioning method",
      "ifd": "gps",
      "tag": "0x001b",
      "group": "gps",
      "risk": "medium",
      "reveals": "GPS, network-assisted or manual. \"CELLID\" means the position came from a cell tower."
    },
    {
      "key": "Make",
      "label": "Camera maker",
      "ifd": "0",
      "tag": "0x010f",
      "group": "device",
      "risk": "medium",
      "reveals": "Apple, Samsung, Canon. Narrows a pool of suspects quickly in a leak investigation."
    },
    {
      "key": "Model",
      "label": "Camera model",
      "ifd": "0",
      "tag": "0x0110",
      "group": "device",
      "risk": "medium",
      "reveals": "The exact model, e.g. \"iPhone 17 Pro\". Combined with a date, this is often one person."
    },
    {
      "key": "LensMake",
      "label": "Lens maker",
      "ifd": "exif",
      "tag": "0xa433",
      "group": "device",
      "risk": "low",
      "reveals": "Who made the lens."
    },
    {
      "key": "LensModel",
      "label": "Lens model",
      "ifd": "exif",
      "tag": "0xa434",
      "group": "device",
      "risk": "medium",
      "reveals": "The lens, which on a system camera is a purchase record."
    },
    {
      "key": "BodySerialNumber",
      "label": "Camera serial number",
      "ifd": "exif",
      "tag": "0xa431",
      "group": "device",
      "risk": "high",
      "reveals": "The individual camera body. This is the field that ties every photo you have ever published to one device — and to the receipt."
    },
    {
      "key": "LensSerialNumber",
      "label": "Lens serial number",
      "ifd": "exif",
      "tag": "0xa435",
      "group": "device",
      "risk": "high",
      "reveals": "The individual lens."
    },
    {
      "key": "ImageUniqueID",
      "label": "Image unique ID",
      "ifd": "exif",
      "tag": "0xa420",
      "group": "device",
      "risk": "high",
      "reveals": "A per-image identifier some cameras write, which can link copies of a file across the internet."
    },
    {
      "key": "CameraOwnerName",
      "label": "Camera owner",
      "ifd": "exif",
      "tag": "0xa430",
      "group": "author",
      "risk": "high",
      "reveals": "A name typed into the camera menu once and then forgotten about for years."
    },
    {
      "key": "DateTime",
      "label": "File date",
      "ifd": "0",
      "tag": "0x0132",
      "group": "time",
      "risk": "medium",
      "reveals": "When the file was last written by the camera or an editor."
    },
    {
      "key": "DateTimeOriginal",
      "label": "Date taken",
      "ifd": "exif",
      "tag": "0x9003",
      "group": "time",
      "risk": "medium",
      "reveals": "When the shutter fired, to the second."
    },
    {
      "key": "DateTimeDigitized",
      "label": "Date digitised",
      "ifd": "exif",
      "tag": "0x9004",
      "group": "time",
      "risk": "medium",
      "reveals": "When the image was recorded to storage."
    },
    {
      "key": "OffsetTimeOriginal",
      "label": "Time-zone offset",
      "ifd": "exif",
      "tag": "0x9011",
      "group": "time",
      "risk": "medium",
      "reveals": "The UTC offset at the moment of capture, which is a coarse location on its own."
    },
    {
      "key": "SubSecTimeOriginal",
      "label": "Sub-second",
      "ifd": "exif",
      "tag": "0x9291",
      "group": "time",
      "risk": "low",
      "reveals": "Fractions of a second. Used to order a burst."
    },
    {
      "key": "Artist",
      "label": "Artist",
      "ifd": "0",
      "tag": "0x013b",
      "group": "author",
      "risk": "high",
      "reveals": "A name, written by the camera or by editing software from its own settings."
    },
    {
      "key": "Copyright",
      "label": "Copyright",
      "ifd": "0",
      "tag": "0x8298",
      "group": "author",
      "risk": "high",
      "reveals": "Usually a name, sometimes an email address or a studio."
    },
    {
      "key": "ImageDescription",
      "label": "Description",
      "ifd": "0",
      "tag": "0x010e",
      "group": "author",
      "risk": "medium",
      "reveals": "A caption. Frequently holds an internal filename or a client name."
    },
    {
      "key": "UserComment",
      "label": "User comment",
      "ifd": "exif",
      "tag": "0x9286",
      "group": "author",
      "risk": "medium",
      "reveals": "Free text. Apps use it for anything, including internal identifiers."
    },
    {
      "key": "RelatedSoundFile",
      "label": "Related sound file",
      "ifd": "exif",
      "tag": "0xa004",
      "group": "author",
      "risk": "low",
      "reveals": "The name of an audio annotation file."
    },
    {
      "key": "Software",
      "label": "Software",
      "ifd": "0",
      "tag": "0x0131",
      "group": "edit",
      "risk": "medium",
      "reveals": "The firmware or editor that wrote the file. This is the field that most often names an AI image generator."
    },
    {
      "key": "Orientation",
      "label": "Orientation",
      "ifd": "0",
      "tag": "0x0112",
      "group": "edit",
      "risk": "low",
      "reveals": "How the image should be rotated for display. Removing it can leave a photo sideways."
    },
    {
      "key": "XResolution",
      "label": "X resolution",
      "ifd": "0",
      "tag": "0x011a",
      "group": "edit",
      "risk": "low",
      "reveals": "Print resolution. Not the pixel dimensions."
    },
    {
      "key": "YResolution",
      "label": "Y resolution",
      "ifd": "0",
      "tag": "0x011b",
      "group": "edit",
      "risk": "low",
      "reveals": "Print resolution."
    },
    {
      "key": "ExposureTime",
      "label": "Shutter speed",
      "ifd": "exif",
      "tag": "0x829a",
      "group": "capture",
      "risk": "low",
      "reveals": "How long the sensor was exposed."
    },
    {
      "key": "FNumber",
      "label": "Aperture",
      "ifd": "exif",
      "tag": "0x829d",
      "group": "capture",
      "risk": "low",
      "reveals": "The f-number."
    },
    {
      "key": "ISOSpeedRatings",
      "label": "ISO",
      "ifd": "exif",
      "tag": "0x8827",
      "group": "capture",
      "risk": "low",
      "reveals": "Sensor sensitivity, which implies how dark the room was."
    },
    {
      "key": "FocalLength",
      "label": "Focal length",
      "ifd": "exif",
      "tag": "0x920a",
      "group": "capture",
      "risk": "low",
      "reveals": "The lens setting in millimetres."
    },
    {
      "key": "FocalLengthIn35mmFilm",
      "label": "Focal length (35 mm)",
      "ifd": "exif",
      "tag": "0xa405",
      "group": "capture",
      "risk": "low",
      "reveals": "The equivalent focal length."
    },
    {
      "key": "Flash",
      "label": "Flash",
      "ifd": "exif",
      "tag": "0x9209",
      "group": "capture",
      "risk": "low",
      "reveals": "Whether the flash fired."
    },
    {
      "key": "MeteringMode",
      "label": "Metering mode",
      "ifd": "exif",
      "tag": "0x9207",
      "group": "capture",
      "risk": "low",
      "reveals": "How the exposure was measured."
    },
    {
      "key": "PixelXDimension",
      "label": "Stored width",
      "ifd": "exif",
      "tag": "0xa002",
      "group": "capture",
      "risk": "low",
      "reveals": "The width the camera recorded, which can differ from the pixels after an edit."
    },
    {
      "key": "PixelYDimension",
      "label": "Stored height",
      "ifd": "exif",
      "tag": "0xa003",
      "group": "capture",
      "risk": "low",
      "reveals": "The recorded height."
    }
  ],
  "digital_source_types": [
    {
      "value": "trainedAlgorithmicMedia",
      "uri": "http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia",
      "means": "Created entirely by a generative model."
    },
    {
      "value": "compositeWithTrainedAlgorithmicMedia",
      "uri": "http://cv.iptc.org/newscodes/digitalsourcetype/compositeWithTrainedAlgorithmicMedia",
      "means": "A composite that includes model-generated elements."
    },
    {
      "value": "algorithmicMedia",
      "uri": "http://cv.iptc.org/newscodes/digitalsourcetype/algorithmicMedia",
      "means": "Created by an algorithm that was not trained on data — a fractal, a render."
    },
    {
      "value": "digitalCapture",
      "uri": "http://cv.iptc.org/newscodes/digitalsourcetype/digitalCapture",
      "means": "A photograph from a camera sensor."
    },
    {
      "value": "composite",
      "uri": "http://cv.iptc.org/newscodes/digitalsourcetype/composite",
      "means": "A composite of captured images."
    },
    {
      "value": "algorithmicallyEnhanced",
      "uri": "http://cv.iptc.org/newscodes/digitalsourcetype/algorithmicallyEnhanced",
      "means": "A capture that a model has modified."
    }
  ],
  "generator_signatures": [
    {
      "matches": "dall-e",
      "names": "OpenAI DALL-E"
    },
    {
      "matches": "dalle",
      "names": "OpenAI DALL-E"
    },
    {
      "matches": "openai",
      "names": "OpenAI"
    },
    {
      "matches": "midjourney",
      "names": "Midjourney"
    },
    {
      "matches": "stable diffusion",
      "names": "Stable Diffusion"
    },
    {
      "matches": "stablediffusion",
      "names": "Stable Diffusion"
    },
    {
      "matches": "automatic1111",
      "names": "Stable Diffusion (AUTOMATIC1111)"
    },
    {
      "matches": "comfyui",
      "names": "Stable Diffusion (ComfyUI)"
    },
    {
      "matches": "invokeai",
      "names": "InvokeAI"
    },
    {
      "matches": "firefly",
      "names": "Adobe Firefly"
    },
    {
      "matches": "generative fill",
      "names": "Adobe Photoshop Generative Fill"
    },
    {
      "matches": "imagen",
      "names": "Google Imagen"
    },
    {
      "matches": "gemini",
      "names": "Google Gemini"
    },
    {
      "matches": "grok",
      "names": "xAI Grok"
    },
    {
      "matches": "flux",
      "names": "Black Forest Labs FLUX"
    },
    {
      "matches": "leonardo.ai",
      "names": "Leonardo.Ai"
    },
    {
      "matches": "ideogram",
      "names": "Ideogram"
    },
    {
      "matches": "runway",
      "names": "Runway"
    },
    {
      "matches": "nightcafe",
      "names": "NightCafe"
    },
    {
      "matches": "dream by wombo",
      "names": "WOMBO Dream"
    },
    {
      "matches": "craiyon",
      "names": "Craiyon"
    }
  ],
  "removal": {
    "tool": "https://appvau.lt/tools/photo-metadata/",
    "method": "The container is rebuilt without its metadata blocks and the compressed image data is copied across byte for byte. The picture is not re-encoded, so no quality is lost — unlike the usual advice of re-saving the file in an editor.",
    "kept_by_default": [
      "The ICC colour profile: it names a colour space, not a person, and removing it shifts colours on a wide-gamut display.",
      "The EXIF orientation flag, written back as a 34-byte block containing that tag and nothing else, because stripping it displays a phone photograph sideways."
    ],
    "what_it_does_not_do": [
      "It does not make a photograph anonymous. The picture itself — a street, a reflection, a name badge, a screen in the background — identifies people, and reverse image search matches pixels rather than headers.",
      "It does not reach copies already sent, backed up or uploaded.",
      "It does not remove a visible or an invisible watermark."
    ]
  }
}
