You take a real photo, remove a stray object with a generative fill tool, post it, and Instagram adds "AI info" under your name. The picture is 99% camera, but the label says otherwise.
The label usually isn't about the pixels. It's about metadata the editing tool wrote into the file. Once you know where it lives, you can see it in seconds, and remove it without touching the image.
Meta has said it labels images using industry-standard signals in the file. Two of them do most of the work:
1. C2PA Content Credentials. A signed manifest embedded in the file (in a JPEG it sits in APP11 segments as JUMBF boxes). It records which app made or edited the image and what it did: c2pa.opened, c2pa.edited, and, for AI tools, a digitalSourceType saying generative AI was involved. Photoshop, Firefly, ChatGPT's image generation and a growing list of phones and cameras write it.
2. The IPTC digital source type. A single XMP field, Iptc4xmpExt:DigitalSourceType, whose value is a URL from the IPTC vocabulary. The two that matter:
trainedAlgorithmicMedia: made with generative AI compositeWithTrainedAlgorithmicMedia: edited with generative AI (your generative-fill case)
Either one is enough to earn the label.
With ExifTool installed:
exiftool -XMP-iptcExt:DigitalSourceType photo.jpg
exiftool -a -JUMDLabel photo.jpg
For the full, human-readable manifest (signer, actions, validation state), use the official c2patool:
c2patool photo.jpg
While you're in there, check what else the file carries. Most phones add GPS once the camera has location access:
exiftool -GPSPosition -Model -SerialNumber photo.jpg
No command line handy? I built a free in-browser EXIF and C2PA viewer that reads all of this, including the prompts Stable Diffusion and ComfyUI hide in PNGs. The file is read locally and never uploaded; switch off your Wi-Fi after the page loads and it still works.
The classic one-liner does remove the C2PA manifest, the IPTC tag and your GPS:
exiftool -all= photo.jpg
But run it on a photo from a phone and look closely:
Warning: ICC_Profile deleted. Image colors may be affected - photo.jpg
-all= also deletes the colour profile and the orientation flag. iPhone photos are usually Display P3, so they come out duller, and portrait shots can come out sideways. The fix is to copy those two back from the original in the same command:
exiftool -all= -tagsfromfile @ -icc_profile -orientation photo.jpg
I tested both on a C2PA-signed, Display P3, rotated JPEG: the second command removed the manifest (c2patool reports No claim found), the IPTC tag and the GPS, kept the profile and rotation, and left the decoded pixels identical.
Then check your result, because a clean-looking command isn't proof:
exiftool -a -JUMDLabel -XMP-iptcExt:DigitalSourceType -GPSPosition photo.jpg # should print nothing
c2patool photo.jpg # should say No claim found
For one JPEG, the ExifTool commands above are all you need. For folders full of photos and videos (where metadata lives in QuickTime atoms and its own C2PA box), I made MetaClean, a Mac and Windows app that does the whole thing offline. It bundles pinned versions of ExifTool, c2patool and FFmpeg, never re-encodes (video is remuxed with stream copy), keeps colour profiles and orientation, and re-inspects every output before saving it as clean_<name>, leaving the original untouched. There's a 3-day free trial, then it's $5 once.
Disclosure: I'm the developer of MetaClean and the viewer linked above.
exiftool -XMP-iptcExt:DigitalSourceType -a -JUMDLabel photo.jpg, or c2patool photo.jpg. exiftool -all= -tagsfromfile @ -icc_profile -orientation photo.jpg, then verify.