Drop your images here
Photo metadata reference: EXIF, IPTC, and XMP tag catalog with privacy risk levels
The tool above strips metadata from your photos in-browser. The reference below is the catalog the tool draws from: every metadata container an image can carry, the most common tags inside each, the privacy risk level for each tag, and the equivalent command-line invocations for users who prefer the terminal.
EXIF tag categories at a glance
| Category | Tag count (typical) | Where it lives | What it carries |
|---|---|---|---|
| Image | 20–40 | IFD0 | Dimensions, color space, ICC pointer, orientation, software |
| EXIF SubIFD | 30–60 | EXIF IFD | Exposure, aperture, ISO, lens, capture time, MakerNote pointer |
| GPS | 10–28 | GPS IFD | Latitude, longitude, altitude, heading, speed, timestamp, datum |
| Interop | 2–4 | Interop IFD | Color interop scheme (R98, THM) |
| Thumbnail | 3–5 | IFD1 | Embedded JPEG thumbnail (up to 64 KB), compression, length |
| MakerNote | 50–500+ | EXIF SubIFD | Vendor-specific tags (Apple, Canon, Nikon, Sony, etc.) |
A single iPhone JPEG produced by Camera.app commonly contains 180 to 250 individual tags across these IFDs, of which only 4 to 6 are surfaced in the iOS Photos.app info pane.
Privacy risk classification
Risk levels used by the inspector above, from highest to lowest:
| Risk | Examples | Why it matters |
|---|---|---|
| Critical | GPS coordinates, body serial number, lens serial number | Locates the photographer or de-anonymizes a specific device |
| High | Owner name, camera owner, host computer model, ICC profile name with username | Often contains real names auto-populated from OS user accounts |
| Elevated | Date taken, software version, embedded thumbnail | Defeats partial redactions; thumbnail may show pre-crop content |
| Moderate | Camera make and model, lens model, focal length | Narrows the population of possible authors |
| Low | Exposure, aperture, ISO, white balance | Useful for forensics, low individual risk |
| Informational | Image dimensions, color space, orientation | No privacy implication |
The classification is conservative on the Critical and High tiers because of how often these fields silently inherit values from the operating system. A Software tag reading “Adobe Lightroom Classic 13.2” plus an Artist tag reading the user’s full name is a common pairing that most desktop editors write without prompting.
Common EXIF tags and their hex IDs
Selected from the EXIF 2.32 specification (CIPA DC-008-2023). Listed in IFD then by tag number.
| Tag name | Hex ID | IFD | Risk | What it typically holds |
|---|---|---|---|---|
| Make | 0x010F | IFD0 | Moderate | "Apple", "Canon", "NIKON CORPORATION" |
| Model | 0x0110 | IFD0 | Moderate | "iPhone 15 Pro", "Canon EOS R5", "ILCE-7M4" |
| Orientation | 0x0112 | IFD0 | Informational | 1–8 rotation/flip code |
| Software | 0x0131 | IFD0 | High | OS or editor version, often with username |
| Artist | 0x013B | IFD0 | High | Photographer name; often the OS user account |
| Copyright | 0x8298 | IFD0 | High | Copyright string, often with name + email |
| HostComputer | 0x013C | IFD0 | High | Editing machine identifier (model + OS user) |
| DateTimeOriginal | 0x9003 | EXIF | Elevated | When the shutter fired |
| OffsetTime | 0x9010 | EXIF | Elevated | UTC offset, leaks timezone |
| SubjectLocation | 0x9214 | EXIF | Elevated | Focus point coordinates within the image |
| MakerNote | 0x927C | EXIF | Critical | Vendor blob, may contain serial numbers |
| UserComment | 0x9286 | EXIF | High | Free-text from editor or scripts |
| LensSerialNumber | 0xA435 | EXIF | Critical | Permanent unique lens ID |
| BodySerialNumber | 0xA431 | EXIF | Critical | Permanent unique body ID |
| CameraOwnerName | 0xA430 | EXIF | High | Owner field set in camera firmware |
| GPSLatitude | 0x0002 | GPS | Critical | Degrees/minutes/seconds triplet |
| GPSLongitude | 0x0004 | GPS | Critical | Degrees/minutes/seconds triplet |
| GPSAltitude | 0x0006 | GPS | Critical | Altitude above sea level (meters) |
| GPSTimeStamp | 0x0007 | GPS | Critical | Hours/minutes/seconds UTC at capture |
| GPSImgDirection | 0x0011 | GPS | Critical | Compass heading the lens was pointed |
IPTC IIM fields (editorial metadata)
IPTC IIM is the photojournalism container, stored in APP13 markers under a Photoshop image-resource block. Used by news agencies, stock libraries, and DAM systems.
| IIM field | Record:Dataset | Risk | What it typically holds |
|---|---|---|---|
| By-line | 2:80 | High | Photographer name |
| By-line Title | 2:85 | Moderate | Job title or role |
| Credit | 2:110 | Moderate | "Photo by X / Agency" |
| Source | 2:115 | Moderate | Original supplier |
| Caption | 2:120 | Moderate | Editorial caption |
| Headline | 2:105 | Moderate | Short title |
| Keywords | 2:25 | Low | Tagging keywords |
| Location | 2:92 | Elevated | Sublocation text, e.g., "Carl’s apartment" |
| City | 2:90 | Elevated | City name |
| Province/State | 2:95 | Low | Region |
| Country/Primary Location Name | 2:101 | Low | Country |
| Copyright Notice | 2:116 | High | Full copyright string |
| Special Instructions | 2:40 | High | Free text, sometimes contact info |
Photoshop, Lightroom, and most DAM tools (Photo Mechanic, FotoStation, Bridge) all read and write IIM. Some legacy CMS pipelines still ingest from IIM and ignore XMP, which is why the same data is often duplicated in both containers.
XMP namespaces and common properties
XMP is Adobe’s XML-in-APP1 container, defined by ISO 16684. A given JPEG can carry properties from many namespaces simultaneously.
| Namespace prefix | URI fragment | Risk | Notable properties |
|---|---|---|---|
| dc | purl.org/dc/elements/1.1/ | Moderate | dc:creator, dc:rights, dc:title, dc:description |
| xmp | ns.adobe.com/xap/1.0/ | Moderate | xmp:CreateDate, xmp:CreatorTool, xmp:Rating |
| xmpMM | ns.adobe.com/xap/1.0/mm/ | Critical | xmpMM:DocumentID, xmpMM:InstanceID, xmpMM:History (full edit chain) |
| xmpRights | ns.adobe.com/xap/1.0/rights/ | High | xmpRights:Owner, xmpRights:UsageTerms |
| photoshop | ns.adobe.com/photoshop/1.0/ | High | photoshop:AuthorsPosition, photoshop:Credit, photoshop:Headline |
| Iptc4xmpCore | iptc.org/std/Iptc4xmpCore/1.0/xmlns/ | Elevated | CreatorContactInfo, Location, IntellectualGenre |
| Iptc4xmpExt | iptc.org/std/Iptc4xmpExt/2008-02-29/ | Elevated | LocationCreated, PersonInImage, OrganisationInImageName |
| crs | ns.adobe.com/camera-raw-settings/1.0/ | Low | Lightroom develop settings (exposure, white balance, masks) |
| GettyImagesGIFT | xmp.gettyimages.com/gift/1.0/ | Moderate | Asset ID, license type |
| stEvt | ns.adobe.com/xap/1.0/sType/ResourceEvent# | Critical | Per-edit history events with timestamps and softwareAgent strings |
The xmpMM:History chain is the most consistently underestimated XMP risk. Each save in Photoshop appends an stEvt:Action record (saved, edited, derived) along with the host machine name, software version, and timestamp. A photo passed through three editors carries three full event blocks.
MakerNote tags by manufacturer
MakerNote is opaque to the EXIF spec; each vendor encodes its own subtree.
| Manufacturer | Notable hidden tags | Risk |
|---|---|---|
| Apple | RunTime (boot-relative monotonic clock), HDRImageType, AccelerationVector, AFMeasuredDepth, ContentIdentifier (links Live Photo MOV to HEIC), LivePhotoVideoIndex | Critical |
| Canon | OwnerName, SerialNumber, InternalSerialNumber, FirmwareVersion, FileNumber, ShutterCount | Critical |
| Nikon | SerialNumber, ShutterCount, LensIDNumber, FlashSerialNumber, Lens (full lens descriptor) | Critical |
| Sony | InternalSerialNumber, ShutterCount, LensType, ReleaseMode, SonyDateTime, SonyImageWidth, SonyImageHeight | Critical |
| Fujifilm | SerialNumber, InternalSerialNumber, FilmMode, DynamicRange, ImageStabilization | Critical |
| Olympus | SerialNumber, EquipmentVersion, BodyFirmwareVersion, ImageProcessingVersion | Critical |
| Pentax | SerialNumber, ProductionCode, InternalSerialNumber, BatteryLevel | Critical |
| Panasonic | InternalSerialNumber, FacesDetected, FacesRecognized, BabyName, Location | Critical |
The BabyName and Location tags on Panasonic cameras are noteworthy: both are user-entered text fields that some owners populate, then forget about, before sharing images online.
ContentIdentifier on Apple HEIC is how the Photos.app pairs an HEIC with its paired MOV. The identifier alone does not reveal location, but combined with the iCloud library it can re-associate a stripped HEIC with a Live Photo motion clip on a synced device.
Browser support for in-browser image formats
Encoder availability is what determines whether an in-browser tool can rewrite a format without converting it.
| Format | Decode in browser | Encode via Canvas.toBlob | OS dependency |
|---|---|---|---|
| JPEG | All | All | None |
| PNG | All | All | None |
| WebP (lossy) | Chromium 32+, Firefox 65+, Safari 14+ | Chromium 38+, Firefox 105+, Safari 14+ | None |
| WebP (lossless) | Same as lossy | Encoder produces lossy by default | None |
| GIF (static) | All | None (encoder is image/png) | None |
| HEIC | macOS Safari, iOS Safari, Chromium on Windows 11 with HEVC codec | None | OS-level HEVC decoder required |
| AVIF | Chromium 85+, Firefox 93+, Safari 16+ | None | None for decode; encoder absent everywhere |
| TIFF | None natively | None | Third-party WASM only |
| BMP | All | None | None |
This is why HEIC and AVIF inputs must convert format on output: no shipping browser can encode them from a <canvas> element. The same constraint applies to every in-browser metadata tool, not just this one.
Command-line equivalents
For users who want the equivalent stripping operation outside the browser:
| Operation | exiftool | mat2 | ImageMagick | jhead |
|---|---|---|---|---|
| Inspect all metadata | exiftool photo.jpg | mat2 -s photo.jpg | magick identify -verbose photo.jpg | jhead photo.jpg |
| Strip all EXIF | exiftool -all= photo.jpg | mat2 photo.jpg | magick photo.jpg -strip out.jpg | jhead -purejpg photo.jpg |
| Strip GPS only | exiftool -gps:all= photo.jpg | n/a (strips everything) | n/a | n/a |
| Strip but keep orientation | exiftool -all= -tagsfromfile @ -orientation photo.jpg | n/a | magick photo.jpg -auto-orient -strip out.jpg | jhead -autorot -purejpg photo.jpg |
| Batch strip in directory | exiftool -all= -overwrite_original *.jpg | mat2 *.jpg | mogrify -strip *.jpg | jhead -purejpg *.jpg |
| Strip from HEIC (in place) | exiftool -all= photo.heic | not supported | not supported | not supported |
| Keep ICC profile, strip rest | exiftool -all= --icc_profile:all photo.jpg | n/a | magick photo.jpg +profile "!icc,*" out.jpg | n/a |
ExifTool is the most thorough; it understands every MakerNote dialect listed above. The trade-off is that ExifTool edits markers in place and may leave Adobe Photoshop image-resource blocks behind unless invoked with -Photoshop:all= as well.
Related concepts
- ICC color profile leakageICC profiles can embed a
desctag naming the source workspace (e.g., “Carl’s MacBook Pro Display”). Inspectors that ignore the ICC block miss this. - C2PA / Content CredentialsA newer Adobe-led signed-manifest format embedded as a JUMBF box in JPEG and HEIF. Designed for AI provenance, not privacy; stripping it removes the chain of custody.
- Live PhotosAn iPhone Live Photo is an HEIC plus a paired MOV. Stripping the HEIC alone leaves the MOV (with its own metadata) on disk.
- PNG ancillary chunksPNG carries metadata in
tEXt,iTXt,zTXt, andeXIfchunks. Older strippers handletEXtbut skipeXIf, which was standardized in PNG 1.5 in 2017. - JFIF vs Exif JPEGA JFIF JPEG starts with an APP0 marker and carries no EXIF. An Exif JPEG starts with an APP1 marker; an Exif/JFIF hybrid carries both. Some browsers prioritize APP0 dimensions over APP1 dimensions, which can cause display issues if only one is stripped.