Verify an OpenAI-Generated Image

This is the one provider whose watermark can be verified from a browser today. Google’s portal is waitlist-only. Anthropic’s is not shipped. Here is what the OpenAI check does and does not prove.

Local processing · 0 B uploaded
GPT IMAGE WATERMARK STATUS Last checked Sep 14, 2026
Watermark type
Pixel watermark + C2PA metadata
Hidden characters
No
Official detector
Available: Available Verifiable via OpenAI’s Verify tool and API
DetectMark support
DetectMark support: Available Reads C2PA locally; OpenAI check on consent
Removal
Partial: Partial Metadata only; pixel mark stays

What OpenAI checks

Every image from ChatGPT, the API and Codex has carried two marks since May 19, 2026: Google’s SynthID watermark in the pixels, and a C2PA Content Credentials manifest signed by OpenAI in the file. OpenAI’s Verify tool and Content Provenance API look for exactly those two things, using OpenAI’s own keys.

This page sends the file to that API on your say-so and shows the two answers as they come back, one row for SynthID and one for Content Credentials. It is the same check OpenAI runs for its own users, reached through DetectMark so you do not need an OpenAI account.

What happens when you click Verify

  1. The image is read in your browser. The offer names the file and states its size in exact bytes.
  2. Verify with OpenAI opens a dialog that repeats the file name, the byte count and the destination, api.openai.com. Cancel sends nothing.
  3. Confirm, and the original file goes to OpenAI through DetectMark’s relay. The relay adds the API key and forwards the bytes without storing them. The upload counter in the scanner header shows what was sent.
  4. Two rows come back with a Clean or Found badge and a note each, plus the time OpenAI ran the check.

Two rules do not bend. Nothing is ever sent automatically, and a cleaned copy is never sent. OpenAI’s terms forbid using the verifier to test a removal, and a verdict on a stripped file would be worthless anyway.

What a result proves

Found on the SynthID row means OpenAI’s pixel watermark is present, so the image came out of an OpenAI image model, edited since or not. Found on the Content Credentials row means an OpenAI-signed manifest is present and intact. A manifest issued by someone else is reported as not OpenAI-issued, and a broken one is reported as Unknown rather than dressed up as either answer.

What it does not prove

The check covers OpenAI-supported signals only: a not-detected result says nothing about other providers or about a file whose marks were stripped. A Gemini render, a Firefly export, a photograph and a heavily reworked OpenAI image all come back Clean on this page, for four different reasons that the check cannot tell apart. Clean here is the absence of one provider’s marks, not the presence of a human.

Formats follow the API: PNG, JPEG and WebP up to 50 MiB. Other formats are inspected locally where the browser can decode them and are never offered for verification.

The local scan, second on purpose

The browser-side scan still runs on every file: Content Credentials, EXIF, XMP, GPS and PNG text chunks, read in this tab and listed under the verification panel. On this page it is collapsed by default because the question this page answers is “did OpenAI make this”, and only OpenAI can answer it. For the file-level view first, use the AI image watermark detector; for what stays in a file no matter what you strip, read what DetectMark cannot remove.

FAQ

The original image file, and nothing else, sent to api.openai.com only after you confirm a dialog that states the file name and the exact byte count. No text, no other files, no cleaned copies. The upload counter shows the bytes afterwards.