What AI image generators embed in your files
Stable Diffusion, Midjourney, DALL·E, and Firefly all write metadata into the images they produce. Here's a generator-by-generator breakdown of what's actually in there.
- AI
- Stable Diffusion
- Midjourney
- metadata
- provenance
When an AI image generator produces a file, it usually writes something into that file beyond the pixels. How much, and in what format, varies significantly by tool. This is a practical breakdown of what each major generator embeds — and what it means if you're sharing those files.
Updated August 2026: corrected the Midjourney section (it does not ship C2PA — see below), and added OpenAI's May 2026 move to dual C2PA + SynthID marking.
Stable Diffusion (local, ComfyUI, A1111)
Stable Diffusion's local UIs write the most verbose metadata of any generator. In Automatic1111 (A1111), the generation parameters are embedded directly as a PNG text chunk with the key parameters. The value is a plain-text block that looks like:
a portrait of a woman, cinematic lighting, sharp focus
Negative prompt: blurry, deformed, ugly
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 3847291056,
Size: 512x768, Model hash: 6ce0161689, Model: v1-5-pruned-emaonly
This single chunk contains: your full positive prompt, your negative prompt, every generation parameter (steps, sampler, CFG scale, seed, dimensions), and the model name and hash. The seed alone is enough to reproduce the image exactly on the same model.
ComfyUI is more structured. It writes the entire workflow graph as a JSON object into the PNG workflow and prompt chunks. This is significantly more detailed — it includes every node in the workflow, every parameter value, every connection, and the full node class names. If you've built a complex multi-model or ControlNet workflow, the entire thing is serialized into the PNG.
ControlNet users: the ControlNet preprocessor, model, weight, and input image guidance type are all in there.
AUTOMATIC1111 img2img: if you generated from a source image, the parameters block will note the denoising strength. The source image itself is not embedded — just the parameters.
Midjourney — the holdout
Correction (August 2026): an earlier version of this post said Midjourney embeds a C2PA manifest. That was wrong, and worth being precise about: despite 2024-era industry announcements suggesting adoption was coming, Midjourney still does not embed C2PA Content Credentials — or any watermark — as of August 2026. It's the notable holdout among major generators, called out by press coverage as non-compliant on the very day California's AI Transparency Act became operative (August 2, 2026).
What Midjourney images actually carry is minimal: standard JPEG/PNG structure, sometimes an EXIF Software artifact from its processing pipeline, and possibly Artist/Creator fields referencing Midjourney. No signed provenance manifest, no prompt, no pixel watermark.
The practical upshot cuts both ways. A Midjourney image carries less identifying data than almost any other generator's output — but it also carries no provenance for anyone who wants to demonstrate origin. With EU marking deadlines hitting existing tools in December 2026, expect this to change; we'll update this post when it does.
DALL·E / GPT images (via ChatGPT and the API)
Images from ChatGPT and OpenAI's API are metadata-light on the traditional layers — basic dimensions and color profile, sometimes an odd Software tag, no prompt — but carry the industry's most complete provenance marking:
- C2PA manifest: OpenAI has embedded signed Content Credentials since 2024, asserting the image was AI-generated by OpenAI, with tool and timestamp.
- SynthID watermark (new, May 2026): OpenAI now also embeds Google DeepMind's invisible pixel-level watermark in ChatGPT and API images, and launched a public Verify site for checking any image against its systems.
The prompt is not embedded in OpenAI output. You can't recover a generation prompt from the file. Full details: what metadata ChatGPT embeds.
Adobe Firefly
Firefly images carry the most explicit provenance metadata, which is consistent with Adobe's position as the organization pushing hardest for C2PA adoption. Every Firefly-generated image embeds:
- A C2PA Content Credentials manifest, signed with Adobe's key
- The
c2pa.createdaction assertion: identifies that the content was AI-generated - The model used (the specific Firefly model version)
- The creation timestamp
Firefly images also commonly carry standard XMP fields: xmp:CreatorTool set to Adobe Firefly, and dc:source fields. If you've used Generative Fill in Photoshop, the edited image carries Firefly credentials in the XMP sidecar or embedded XMP block.
The C2PA manifest in Firefly images survives many common operations — including resaves through Photoshop — because Adobe's tools are designed to preserve the credentials chain, not strip it. Those credentials are also exactly what triggers Instagram's "AI info" label on lightly-edited real photos.
Google Gemini / Imagen
Google marks on both layers: a C2PA manifest in the metadata and a SynthID watermark in the pixels (plus, on some consumer outputs, a small visible watermark). SynthID is the durable one — it survives metadata stripping, screenshots, compression, and resizing. The metadata/pixel distinction matters enough that we gave it its own post.
Why this matters beyond provenance
The obvious concern is detection: platforms and employers increasingly use metadata to flag AI-generated content, and a Stable Diffusion image with its full parameters block is trivially identifiable. Removing that metadata doesn't make the image "not AI" — pixel-level detectors exist and work independently of metadata — but it does remove a readable signal.
Less obviously, the metadata can expose other things:
Local Stable Diffusion users: if you're running models locally and you've fine-tuned or merged models, the model hash in the parameters block identifies which model you're using. If you've kept private models private for professional reasons, that information is in every output you share.
ComfyUI workflow users: the full JSON workflow embedded in your PNG includes every node, connection, and parameter. If your workflow uses custom nodes that reveal what you're building, or if you've referenced specific input images by path, that structural information is in the file.
Prompt confidentiality: for professional use cases where you've developed effective prompts through iteration, those prompts are in the file. If you're sharing the output image, you're sharing the recipe.
What removal actually does
Stripping AI metadata removes the text chunks from PNG files and the C2PA manifest from any format. What it doesn't do:
- It doesn't make the image undetectable as AI-generated. Pixel-level classifiers (Hive, Illuminarty, various academic models) analyze the image content itself and aren't fooled by metadata removal.
- It doesn't remove pixel watermarks. SynthID — now in both Google's and OpenAI's images — lives in the pixel values and survives metadata stripping entirely.
- It doesn't erase the generation. Anyone with the right tools can run image analysis independently of what the file's metadata says.
What it does do: removes the plaintext signal. A stripped Stable Diffusion PNG no longer contains your prompt, model, seed, and parameters in plain text. That's a meaningful privacy step for prompt confidentiality and for reducing the casual leakage of "this was definitely AI-generated, here's exactly how."
A quick reference
| Generator | What's embedded | Prompt included? | C2PA? | Pixel watermark? |
|---|---|---|---|---|
| Stable Diffusion (A1111) | Full parameters as PNG text chunk | Yes | No | No |
| ComfyUI | Full workflow JSON | Yes | No | No |
| Midjourney | Minimal EXIF artifacts | No | No | No |
| DALL·E / GPT images | Minimal EXIF + C2PA manifest | No | Yes | Yes (SynthID, since May 2026) |
| Adobe Firefly | XMP CreatorTool + C2PA manifest | No | Yes | No |
| Google Gemini / Imagen | C2PA manifest | No | Yes | Yes (SynthID) |
The pattern: local open-source tools write the most (including prompts), commercial API tools write provenance claims but not prompts — and the biggest two now mark pixels as well as metadata. The tradeoffs are different for each.
To see what's in a specific file before sharing it, drop it into the metadata viewer — the report shows which AI-related fields are present before you decide whether to strip them.