# C2PA metadata stripped? How to check and why to keep it

When you re-encode an image, its C2PA metadata is stripped. Platforms read it to label AI posts. See which tools strip it, how to check, and how to keep it.

- Canonical: https://aiofmcity.com/blog/dont-strip-your-watermarks-provenance
- Topic: EU compliance (https://aiofmcity.com/topics/eu-compliance)
- Author: Gus
- Published: 2026-09-07
- Updated: 2026-10-05

---
## Key points

- Ordinary resizes, transcodes and upscales drop C2PA manifests by default. Nobody has to strip them on purpose.
- The AI Act makes the generator's maker put the marker in. It does not ban you from removing it. Keep it anyway, because platforms read it.
- Run c2patool on an exported file. It either prints the manifest or reports that none was found.
- Keeping the manifest does not replace the visible AI label. A viewer cannot see a machine-readable marker.

---
> **This is not legal advice, and I am not a lawyer.** It is my reading of the rules
> named in each source box below. It is written so you know which questions to ask a
> qualified IT and media lawyer.

Almost every AI content pipeline destroys provenance data by accident. The generator embeds a C2PA manifest, a piece of data in the file that says an AI model made the image. Then a resize, an upscale, a format conversion or a video export writes a new file. The new file does not carry the manifest, so the marker is gone.

**Corrected on 1 October 2026.** An earlier version said the EU AI Act forbids you to remove these markers. It does not. The Act puts the marking duty on the tool maker. The reasons to keep the markers are practical, and they are below.

There are good reasons to keep the markers. TikTok, Meta and YouTube read them to label your posts automatically. Your generator's terms may also forbid removing them. And a master file with its manifest shows where an image came from.

## What the rule says

> Article 50(2): "Providers of AI systems, including general-purpose AI systems, generating
> synthetic audio, image, video or text content, shall ensure that the outputs of the AI system
> are marked in a machine-readable format and detectable as artificially generated or
> manipulated." Recital 133 names the techniques: "watermarks, metadata identifications,
> cryptographic methods for proving provenance and authenticity of content, logging methods,
> fingerprints".
>
> — Source: EU AI Act Art. 50, read 2026-10-01 — https://eur-lex.europa.eu/eli/reg/2024/1689/oj

This duty is on the provider, the company that makes the generator. Most big generators use C2PA Content Credentials for it. Article 50 does not tell you, the deployer, what to do with the marker afterwards. Your own rule is the visible label, further down this page.

If you train and publish your own model, you may count as a provider yourself. That is a question for a lawyer.

One document does ban removing markers. It is the EU Code of Practice on AI-generated content, and it is not law. Tool makers can choose to sign it. Those who sign promise to put this into their terms:

> Section 1, Measure 1.2(b): signatory providers will include in their terms "a prohibition of
> the intentional removal of or tampering with metadata markings by deployers or any other third
> party".
>
> — Source: European Commission — Code of Practice on transparency of AI-generated content, read 2026-10-01 — https://digital-strategy.ec.europa.eu/en/policies/code-practice-ai-generated-content

So if your generator signed the Code, its terms may forbid you to remove the markers on purpose. Read the terms of the tools you use. Most markers are not removed on purpose, though. Ordinary tools strip them by default, and you can check any file in one command.

## Which tools remove C2PA metadata

Check these in your own pipeline and do not just trust the list. Versions change, and the defaults change with them. Run the check from the next section before and after each stage.

- **Format conversion and video export.** `ffmpeg` has no C2PA support. Every transcode builds a
  new container from the streams it decoded. `-map_metadata 0` copies the tag dictionary, but
  not the JUMBF box that holds a C2PA manifest. Most NLE (video editor) exports have the same
  problem.

- **Batch resizing.** ImageMagick and similar tools often keep EXIF and ICC but drop
  application segments they do not know. If your posting routine ends with a resize to
  platform dimensions, that resize is the most likely place where you lose the manifest.

- **Anything written by a Python script.** `PIL.Image.open(src).save(dst)` writes a file
  with exactly the metadata you passed in the call. Usually that is none. If your scheduler,
  watermarker or collage builder is written in Python, assume it strips the manifest until
  you have proved that it does not.

- **Upscalers and face restoration.** GFPGAN, CodeFormer, Real-ESRGAN and the ComfyUI nodes
  that wrap them decode the image to tensors and encode a new image. The metadata is lost
  on the way.

- **"Export for web" in an image editor.** This setting exists to remove everything that is
  not pixels.

- **Screenshots of your own work.** If you screenshot a generated image to crop it, all
  provenance data is gone. Many people do this.

### What did not work: A one-line batch convert that ran before every upload

The posting routine ended with `magick mogrify -resize 1080x -quality 88 *.png` to get
Instagram's dimensions in one pass. It ran for months. Every file that reached a platform had
been through it.

Checking a single output with `c2patool` returned no claim found. The source files straight
out of the generator all had a valid manifest. Nothing after that step did. The resize
step in the middle removed the marker that the generator had put in.

The fix was simple: keep the generator output as the master, do the resize with a tool
that keeps the manifest, and check one file per batch instead of assuming. The extra
step costs about ten seconds per batch.

## How to check a file in one command

`c2patool` is the reference implementation from the Content Authenticity Initiative. Point it at a file and it prints the manifest as JSON. The output includes which software generated the file and what was done to it afterwards:

```bash
c2patool output.jpg
```

If the manifest is gone, it tells you so and prints no claim. That is the full test.

For a second check without installing anything made for C2PA, use `exiftool`. It shows whether the JUMBF container that carries the manifest survived:

```bash
exiftool -G1 -a output.jpg
```

Build one of these into your pipeline as an automatic check after export, so you do not have to run it by hand. A batch that produces files with no manifest should fail loudly, the same way a broken build does.

## How to keep the C2PA manifest

- **Keep the generator output as a master that never changes.** Never edit in place. Make
  every derivative from the master. The master keeps its manifest whatever happens later. If
  you ever have to show what a file was, you have it.

- **Move the destructive step out of the default path.** Do resize, crop and colour work in a
  tool that you have checked keeps the manifest, or do not do it at all. You can usually avoid
  cropping to a platform aspect ratio: set the dimensions in the prompt pipeline when you
  generate.

- **Where an edit really has to break the chain, add a manifest and do not replace the old one.**
  C2PA supports a new manifest that points to the previous one, so the history stays intact.
  This needs a signing certificate. For most solo operators that is more effort than changing
  the pipeline so the lossy step is not needed.

- **Separate platform behaviour from your own.** Most social platforms re-encode on upload,
  and many throw away metadata when they do. That happens after the file has left your hands,
  and you cannot change it. It also means the machine-readable layer cannot be your AI label
  for the viewer.

## You still need a visible AI label

People often get this the wrong way round. Keeping the C2PA manifest does not replace the visible AI label. You still have to label the content. The [AI disclaimer generator](https://aiofmcity.com/ai-disclaimer-generator) has a ready line for each platform.

> Disclosure of artificially generated or manipulated image, audio and video content must be
> made in a clear and distinguishable manner at the latest at the time of the first interaction
> or exposure. A machine-readable marker embedded in the file is not perceptible to a viewer and
> does not satisfy that requirement on its own.
>
> — Source: EU AI Act Art. 50(4) and 50(5), read 2026-09-08 — https://eur-lex.europa.eu/eli/reg/2024/1689/oj

Keep both. The viewer sees the visible caption. A platform or a verification tool sees the manifest. For the labelling side, read [what the EU AI Act means for AI persona operators](https://aiofmcity.com/blog/eu-ai-act-article-50-persona-operators). It covers what counts as first contact, why an invented persona is still covered, and where Instagram and Fanvue policy overlap.

The fines in the AI Act are for breaking its rules, such as your labelling rule:

> Non-compliance with the Article 50 transparency obligations is subject to administrative fines
> of up to EUR 15 000 000 or, for undertakings, up to 3% of total worldwide annual turnover for
> the preceding financial year, whichever is higher. There is no turnover threshold below which
> the obligation ceases to apply.
>
> — Source: EU AI Act Art. 99(4), read 2026-09-08 — https://eur-lex.europa.eu/eli/reg/2024/1689/oj

For small businesses, including a one-person business, the lower of the two amounts is the limit:

> In the case of SMEs, including start-ups, each fine referred to in this Article shall be up to the percentages or amount referred to in paragraphs 3, 4 and 5, whichever thereof is lower.
>
> — Source: EU AI Act Art. 99(6), read 2026-10-04 — https://eur-lex.europa.eu/eli/reg/2024/1689/oj

A solo operator is unlikely to get that maximum fine. A platform will usually act on a missing label long before a regulator does.

## A 15-minute setup for your pipeline

Fifteen minutes of setup removes most of this risk for good:

1. Write down every tool your files pass through between the generator and the platform. Most
   operators cannot write this list from memory.
2. Run `c2patool` on one file at each stage. Mark where the manifest disappears.
3. Replace or remove that stage.
4. Add the check to the pipeline as an automatic test. Then you notice within a week
   when a tool update changes a default.
5. Keep the masters. Cold storage is cheap, and a regenerated file is not the same evidence.

The [EU compliance hub](https://aiofmcity.com/topics/eu-compliance) has more on the regulation and where it affects your daily work.

The masters have a second use. When an account disappears, a copy of every file with its provenance intact is the most useful thing you can have. [Risk, bans and recovery](https://aiofmcity.com/guides/risk-bans-and-recovery) builds it into the recovery plan. The re-encoding step that strips manifests is usually an automation step. [Where the hours go](https://aiofmcity.com/blog/where-the-hours-go-ai-persona) helps you decide which steps you should automate at all.

## Frequently asked

### Does re-encoding an image count as removing a watermark?

In effect, yes. After your pipeline ran, the marker is gone. The file does not show whether your tool deleted it on purpose or just failed to copy it. The AI Act does not ban you from removing it. But platforms can no longer read it, and your generator's terms may forbid removing it.

### How do I check whether a file still has its C2PA manifest?

Run c2patool on the file. If there is a manifest, it prints the claim as JSON. If not, it reports that no claim was found. exiftool with the -G1 -a flags also shows whether a JUMBF block survived the export.

### The platform strips metadata when I upload. Am I in breach?

No. The AI Act sets no rule for you about these markers. The platform also re-encodes the file after it has left your hands. It does mean that provenance data cannot be your AI label. The visible label is the part you control from start to finish, and it is what Article 50(5) wants the viewer to see.

### Does keeping the C2PA manifest mean I do not need a visible label?

No. They do different jobs. Article 50(4) says you have to tell people the content is AI. Article 50(5) says they must see that clearly at first contact. A viewer cannot see a machine-readable manifest. Keep both.

### Can I re-sign a file after editing it?

C2PA lets you add a new manifest that points to the previous one. That keeps the chain and does not replace it. Signing needs a certificate. For most solo operators it is easier to pick editing tools that carry the existing manifest through.

