SynthID remove vs. metadata: what's actually inside an AI image file (EXIF, XMP, C2PA)
If you've ever downloaded an image from an AI generator and opened it in exiftool , you've probably noticed the file carries a lot more than pixels. Generators, editors and even some phones now write provenance data into the file: software names, prompts, creation tools and, increasingly, signed C2

If you've ever downloaded an image from an AI generator and opened it in exiftool, you've probably noticed the file carries a lot more than pixels. Generators, editors and even some phones now write provenance data into the file: software names, prompts, creation tools and, increasingly, signed C2PA manifests. A lot of the "synthid remove" searches I see from photographers and indie devs are really about this layer, so it's worth separating the two things clearly.
Embedded metadata lives in containers alongside the image data:
Pixel-level watermarks such as Google's SynthID are different: they're woven into the image content itself, so stripping metadata does nothing to them. Keep that distinction in mind when someone promises a one-click fix for both.
There are plenty of honest reasons to strip metadata from images you own or are authorized to edit:
What it is not for: passing off generated images as camera photos where a platform, client or publication requires disclosure. If the rules say "label AI images", label them, in the caption or alt text, regardless of what's in the file.
Before removing anything, look at what's there:
exiftool -a -G1 image.png # every tag, grouped by container exiftool -XMP:all image.jpg # just the XMP packet c2patool image.jpg # C2PA manifest, if any Enter fullscreen mode Exit fullscreen mode For a PNG from a local SD install you'll often see a parameters text chunk containing the whole prompt.
You can do the cleanup locally with the Canvas API: draw the decoded image to a canvas and export a fresh blob. The re-encoded file contains pixels only, none of the original EXIF/XMP/IPTC/C2PA/text chunks.
async function cleanCopy ( file, type = file. type ) { const bitmap = await createImageBitmap ( file ); const canvas = new OffscreenCanvas ( bitmap. width, bitmap. height ); canvas. getContext ( ' 2d ' ). drawImage ( bitmap, 0, 0 ); return canvas. convertToBlob ({ type, quality: 0.95 }); } Enter fullscreen mode Exit fullscreen mode Caveats: JPEG re-encoding is lossy, color profiles may change, and orientation metadata is applied before drawing in modern browsers, so check the result.
If you don't want to wire that up yourself, the free Remove AI Label tool on SynthClear does exactly this kind of local cleanup: you drop in JPG, PNG or WEBP files and it creates fresh copies without the original EXIF, XMP, C2PA and other embedded metadata, processed in your browser rather than uploaded.
The free Remove AI Label page on SynthClear (screenshot).
Since SynthID isn't metadata, the browser trick above won't touch it. SynthClear also has a separate, paid tool on its homepage that attempts to remove supported SynthID watermarks from images you own or are authorized to edit; the site itself says results vary by image and aren't guaranteed. I'd treat that as a niche tool for your own assets, not a way around disclosure rules.
SynthClear's homepage, where the separate SynthID tool lives (screenshot).
For more background, see this guide on SynthID remove vs. metadata and disclosure for photographers and this short publishing checklist for AI images.
Metadata is useful, and sometimes it says more than you meant to share. Knowing which layer you're dealing with is most of the battle.