ChatGPT image watermark remover: the two layers

Answer in the first paragraph OpenAI's own documentation quoted Measured, not asserted

A ChatGPT image carries two marks, and only one of them is removable. OpenAI says images generated with ChatGPT, Codex or the OpenAI API "include both signals": Content Credentials, which is C2PA metadata sitting in the file header, and a SynthID watermark embedded in the pixels. The first comes off with a segment-level strip that never decodes the picture — measured below at a decoded-pixel hash that does not move. The second is the picture, so nothing removes it without changing the image. A tool that promises to remove the ChatGPT image watermark is doing the first and naming the second.

What OpenAI says it puts on an image

OpenAI's provenance documentation, updated 2026-10-12, describes the two signals and why it uses both. On the images row of its own table it states that images generated with ChatGPT, Codex or the OpenAI API "include both signals", and on the design it says: "Metadata can carry detailed information, but platforms, editing tools, and file conversions may remove it. Watermarks carry less context, but because they are embedded in the generated content itself, they may survive some transformations that remove metadata."

That sentence is the whole page in one line. The two layers fail in opposite directions, which is exactly why one is removable and the other is not.

LayerWhere it livesHow it failsWhat removes it
Content Credentials (C2PA)The file header, in a JUMBF manifest"can be lost through everyday actions, such as taking a screenshot or converting a file"A segment-level strip. No re-encoding, no pixel change.
SynthID watermarkThe pixels of the image itselfsurvives light edits; "extensive changes such as heavy image cropping, file compression, substantial paraphrasing, or translation" can make it undetectableNothing, without changing the image. See the measured cost of every route.

What the removable half costs, measured

There is no OpenAI account behind this workspace, so no ChatGPT image was generated and nothing here claims to have stripped one. What can be measured without one is the property that makes the metadata route honest, and it is the same measurement the rest of this site uses: a header operation never decodes the picture, so the picture cannot change.

ONE FILE, TWO PLACES A MARK CAN SIT 1280x960 JPEG, 84,784 bytes with one APP11 segment after SOI SOI APP11 Content Credentials 4,415 B · comes off compressed pixel data SynthID lives here, if the file has it nothing reaches it losslessly header strip → 84,784 → 80,369 bytes, decoded md5 6ff108b4bdff unchanged both sides, PSNR inf

The strip takes 4,415 bytes out of the header and the decoded pixels hash identically before and after. That is the whole claim behind "removes metadata without re-encoding", and it is why the honest half of this page is genuinely good news. It is also why it is not an answer to the question you asked: the route that leaves the image alone is the route that never looks inside it.

Reproduce it with python dev/synthid_edits.py, which builds the fixture with ffmpeg, splices the APP11 segment in, and runs five routes including this one.

What you can actually run on a ChatGPT image

  1. Strip the header. Drop the file into the cleaner above. It removes the Content Credentials manifest along with the rest of the metadata, keeps the colour profile and the orientation tag so the picture still renders correctly, and never re-encodes. What each segment is and what gets kept →
  2. Check what is left. openai.com/verify takes PNG, JPG and WEBP plus several audio formats and reports whether it found OpenAI provenance signals in the file. That is the only way to know which layer you are looking at.
  3. Do not expect the second layer to move. Every route that disturbs a pixel mark changes the image, priced between 45.9 and 49.4 dB on the SynthID page.

The boundary that matters if you are publishing

OpenAI is blunt about what a watermark does and does not establish: it is "evidence that an OpenAI model likely generated or processed the content", and on its own it does not establish who authored or owns the content, whether disclosure was required, or who is legally responsible. It also says plainly that provenance signals do not replace visible labels or other disclosures, and that its tools are not designed to detect content generated by other AI models.

Two consequences worth stating. A negative detector result is not proof a person made the file, and a stripped header is not proof of anything either. And if you are the one publishing, removing the credentials does not discharge a labelling obligation — that is a separate question and not one a metadata tool answers.

Frequently asked questions

Can a ChatGPT image watermark remover work?

Half of one can. OpenAI puts two signals on an image generated through ChatGPT, Codex or the OpenAI API: Content Credentials, which is C2PA metadata in the file header, and a SynthID watermark embedded in the pixels. The metadata half is removed by a segment-level tool without re-encoding, and our measurement shows the decoded pixels coming out byte-identical. The SynthID half is part of the picture, so removing it means changing the picture. Any site that promises both is describing one of them and naming the other.

Is the ChatGPT image watermark visible in the picture?

No. The SynthID layer is invisible, and OpenAI's documentation describes it as a signal embedded in the content itself rather than something added on top. There is no sparkle, badge or corner mark on a ChatGPT image from this mechanism, which is why a visible-mark remover will report finding nothing. If you are looking at a visible mark in the corner of an image, it is a different generation and a different answer.

Does removing the metadata also remove the watermark?

No, and the pair is the interesting part. Content Credentials sit in the header and are lost through everyday actions such as a screenshot or a file conversion, which OpenAI says is why it uses both signals: a watermark carries less context but, being embedded in the content, may survive the transformations that strip metadata. So a clean header does not mean an unmarked image, and the site that tells you otherwise has stripped one layer and billed it for both.

How do I check whether my ChatGPT image still carries the mark?

Use the official checkers, not a remover. openai.com/verify takes PNG, JPG and WEBP images plus several audio formats and reports whether it found provenance signals associated with content generated or exported by OpenAI tools. The Content Provenance API does the same from code. Google's SynthID Detector at synthid.com also covers OpenAI among its partners. A positive result is strong evidence; a negative one is not, and OpenAI lists the reasons a supported file can still come back clean.

Will stripping metadata make my image undetectable as AI-made?

It removes one of two signals, and the one it removes is the weaker one. OpenAI describes Content Credentials as removable through ordinary handling and the watermark as the layer designed to survive, so stripping metadata reduces what a checker can see without removing the mark itself. It also does not make the image look handmade to any classifier: statistical AI detectors read the render, not the header. Neither does it change what you should do about disclosure, which is a separate question and not one a metadata tool answers.

Does a ChatGPT image watermark remover work on text or audio?

Different media, different layers, so read the page for the medium you have. On text, OpenAI's EU rollout uses textGrain, which adjusts how the model chooses between words and inserts no characters, while the rest of the world has no production text watermark documented — that part is on the ChatGPT watermark page. On audio, OpenAI says generated audio carries a SynthID watermark in the waveform itself, which is the same situation as image pixels. The metadata route is the one that is honest across all three.

Sources: OpenAI Help Center, Provenance signals in OpenAI-generated content (updated 2026-10-12) · openai.com/verify · Google DeepMind, Google SynthID. The measurement is reproduced by dev/synthid_edits.py. Related: the ChatGPT text watermark, Claude vs ChatGPT, a watermark on an ordinary photo.