Image Metadata Remover — EXIF, C2PA & AI Label Stripper avatar

Image Metadata Remover — EXIF, C2PA & AI Label Stripper

Pricing

Pay per usage

Go to Apify Store
Image Metadata Remover — EXIF, C2PA & AI Label Stripper

Image Metadata Remover — EXIF, C2PA & AI Label Stripper

Bulk image metadata remover. Remove EXIF, GPS, IPTC, XMP, ICC, Stable Diffusion prompt chunks, C2PA Content Credentials and the AI-generated label from photos. Lossless by default, optional pixel scrub against classic invisible watermarks.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Andrew Babo

Andrew Babo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Bulk image metadata remover for Apify. Remove metadata from photos and images — EXIF, GPS, IPTC, XMP, ICC, Stable Diffusion prompt chunks, C2PA Content Credentials and the "generated by AI" label — in one run.

The default mode is lossless: the decoded pixels of the output are bit-identical to the input (verified, mean delta 0). Only the metadata containers are removed.

What metadata does it remove?

LayerExamplesHandled
EXIFGPS coordinates, camera Make/Model, serial numbers, timestamps, SoftwareYes
IPTCCaption, credit, byline, copyrightYes
XMPCreator, rights, editing history, DigitalSourceType (the AI label)Yes
PNG text chunksStable Diffusion / ComfyUI / A1111 prompt, seed, model, samplerYes
WebP / HEIC / AVIF boxesEXIF and XMP RIFF/ISOBMFF chunksYes
C2PA / JUMBFContent Credentials manifests and signatures (APP11 / jumb boxes)Yes
ICC profileOptional — keep it with keepColorProfileYes
Embedded thumbnailsThe small preview that often survives naive strippersYes
Classic invisible watermarksDWT-DCT style frequency-domain marksscrub mode
SynthID, Stable Signature, Tree-RingModel-space watermarksNo — flagged, not removed

Supports JPEG, PNG, WebP, HEIC, AVIF, TIFF and GIF.

How to remove metadata from photos in bulk

Send a list of image URLs and pick a mode. One dataset record per image is returned, plus the cleaned file in the run's key-value store.

{
"imageUrls": ["https://example.com/photo.jpg"],
"mode": "clean",
"outputFormat": "auto",
"concurrency": 5
}

Images can also come in as imagesBase64, or as keyValueStoreKeys from an existing key-value store (sourceKeyValueStoreId).

Three modes:

  • inspect — report only. Lists every layer, every tag, whether a C2PA manifest or an AI label is present. The file is not modified.
  • clean (default) — remove all metadata and C2PA. Pixels untouched.
  • scrub — clean, plus a pixel-level pass (re-encode, resize round-trip, light noise, optional border crop) that destroys classic invisible watermarks.

Remove the AI-generated label and C2PA Content Credentials

Modern AI generators tag their output. The IPTC/XMP DigitalSourceType = trainedAlgorithmicMedia field marks an image as AI-made, and C2PA Content Credentials embed a signed provenance manifest (JUMBF boxes / APP11 segments) that can name the generator, the account and the full edit history.

This Actor strips both: the AI label tags and the entire C2PA manifest. The manifest is bound to the exact byte sequence of the file, so dropping it invalidates the signature and removes the provenance chain outright — no C2PA library needed, no pixel touched.

For classic invisible watermarks (DWT-DCT frequency-domain marks), scrub mode applies a pixel-level attack. Verified against a real DWT-DCT watermark: decode accuracy falls from 100 % to 42 %, where random guessing sits at 50 % — nothing recoverable. For scrub runs, set outputFormat to webp or jpeg; PNG cannot compress the added noise and the file grows a lot.

Does it change my pixels?

No, not in the default clean mode. The decoded image is bit-identical before and after (mean/max pixel delta 0 across the test set); only the metadata containers are dropped.

scrub mode intentionally changes pixels — that is how it breaks invisible watermarks. Every scrub record reports the exact pixel mean/max delta and byte sizes so you can see how much the image changed.

Output

One dataset record per image with the layers found before and after, the full tag dump before and after, aiLabelRemoved, c2paRemoved, clean, pixelChanged, pixel mean/max delta, byte sizes, warnings, and a public link to the cleaned file in the run's key-value store.

Limitations

  • Google SynthID, Meta's Stable Signature and Tree-Ring watermarks are embedded in the generative model itself, not in the file. There is no cheap CPU method to remove them, so this Actor does not pretend to. When the source metadata points at such a generator, the record carries an explicit warning instead.
  • clean deliberately does not touch pixels, so any pixel-domain watermark survives it — use scrub for those.

FAQ

Does it reduce image quality? No. The default clean mode is lossless — pixels are bit-identical. Scrub mode changes pixels on purpose and reports the exact difference.

Can it remove metadata from AI-generated images? Yes. It removes the IPTC/XMP AI label (DigitalSourceType), Stable Diffusion / ComfyUI prompt chunks, and C2PA Content Credentials left by generators such as Adobe Firefly.

Can it remove the Gemini / SynthID watermark? No — SynthID lives in the model, not the file, and no cheap removal exists. The Actor flags a warning when an image likely carries it instead of claiming a fake removal.

What does it cost? Fractions of a cent per image on the Apify platform — roughly $0.00002 per image at 1 GB RAM, plus any Actor pricing if set.

Full measurements: docs/ai-footprint-remover-poc.md.