Load Image Metadata Viewer
Read the recipe baked into any PNG
- image
- mask
- metadata_json
- workflow_json
Every ComfyUI output PNG quietly carries its own recipe: the workflow is embedded in the file's metadata, which is why dragging an image back onto the canvas reconstructs the graph. That's the "workflow included" culture in a single file. Load Image Metadata Viewer (class MSV_LoadImageMetadata, from the Metadata Saver Viewer pack) is the node that finally lets you read that recipe instead of guessing. Pick an image, and it hands you the generation metadata as clean JSON strings - plus the image and mask, so it slots straight into whatever you were doing.
You'll reach for it when someone posts a great result and you want to know the actual settings, when you're auditing your own output folder ("what seed was that, again?"), or when you've got a .json sidecar from the pack's Save node and want to view it without opening a file editor. It's a reader, not a generator - think of it as a magnifying glass for PNG metadata.
How it works
Pick an image from your ComfyUI/input folder (or upload one via the node's widget). The node opens the file with Pillow and pulls out everything that's hiding in there:
- Embedded PNG text chunks - including ComfyUI's
promptandworkflowentries, and this pack's ownmetadata_saver_viewersummary. - EXIF data, for whatever the camera/app left behind.
- A sidecar
.jsonsitting next to the image (same name,.jsonextension).
Then it decides what to show you: the sidecar JSON wins if it's a current-format (v5) metadata file, otherwise the embedded MSV summary, otherwise it rebuilds a Fooocus-style summary on the fly from the raw prompt it found embedded. In other words, it works on stock ComfyUI PNGs too - you don't need the Save node to benefit. The metadata and workflow are returned as pretty-printed JSON strings and also displayed in a text panel on the node itself, so you can just read them without wiring anything up.
The inputs and outputs
Two inputs, and you'll usually touch one:
image- the file picker. Upload a PNG if it isn't already in your input folder.prefer_sidecar_json(defaultTrue) - when both an embedded summary and a sidecar file exist, trust the sidecar. Flip it off if you edited the PNG's embedded metadata and want that shown instead.
Four outputs:
image(IMAGE) andmask(MASK) - the image, with any alpha channel converted to a ComfyUI-style mask, same as coreLoadImage. Pass these down to a sampler or VAE decode if you're chaining.metadata_json(STRING) andworkflow_json(STRING) - the readable summary and the full graph. Wire them into a ShowText node or any string consumer; the workflow JSON is exactly what you'd drag back onto the canvas.
Install
Search "Metadata Saver Viewer" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/bbc-s/metadata-saver-viewer
Restart ComfyUI and you're done - the pack declares zero Python dependencies (dependencies = [], no requirements.txt), so there's nothing to pip-install or fight about.
Gotchas
The file list is built from your input folder at node-creation time - upload the image through the widget rather than dropping it in the folder and expecting it to appear mid-session. If metadata_json comes back with sha256 placeholders where you expected a huge prompt, that's the pack's 50k-character compaction, not corruption: the full prompt lives in your saved workflow. And if a PNG gives you nothing, the metadata was stripped somewhere along the line (re-encoding, social apps) - that's exactly the case where the Save node's sidecar JSON, which survives re-encoding, earns its keep.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | COMBO | 1 options: example.png | |
| prefer_sidecar_json | BOOLEAN | true | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| metadata_json | STRING | — |
| workflow_json | STRING | — |