PNG Info Diagnostic V3
What's actually inside that PNG? A forensics dump for the curious
- info
- filename
- metadata
Every AI image you generate carries a little secret life inside it. ComfyUI shoves the full workflow - every node, every connection, every prompt and seed - into a PNG text chunk, and on top of that there's the regular EXIF/XMP metadata and sometimes a sidecar file sitting next to it. Most of the time you never think about any of it. But the moment an image comes out of the workflow wrong, or you grabbed one off a server and need to know exactly what produced it, you want a way to look inside.
That's what PNG Info Diagnostic V3 is: a microscope for PNG files, from the same AAA Metadata System pack as the metadata save/load nodes. Give it a file path and it tears the file apart - chunk list, embedded text metadata, workflow data, and any XMP sidecar - and hands you back a human-readable report plus the raw metadata as a dict.
How it works
Point input_filepath at a PNG on disk and it walks the file in layers:
- File basics - name, path, size.
- PNG chunk inventory - a PNG is a sequence of labeled chunks (IHDR, tEXt, IDAT, IEND, and the ones ComfyUI's image saver adds), and the node lists them with sizes. This is the closest thing to hex-level forensics the node does.
- Text metadata extraction - the tEXt chunks where the parameters and workflow actually live.
- Sidecar check - looks for an XMP sidecar file next to the PNG, which the metadata system writes by default.
output_mode decides how much you see: summary for the digest, full_text and raw_info for progressively more detail, structured_json for machine-parseable output. include_workflow and include_sidecar let you drop those sections if you only care about, say, the settings block.
The outputs
info- the formatted diagnostic text. Wire this into a Show Text node or just read it.filename- the basename of the file you analyzed, handy if you're chaining a batch.metadata- the full parsed structure as aDICT, so you can feed it into another node that works with dicts or pull specific keys.
It's an output node in spirit - nothing flows onward from it into a sampler. Its job is intelligence, not pixels.
Installing it
Part of the AAA Metadata System pack:
cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/AAA_Metadata_System.git
cd AAA_Metadata_System
pip install -r requirements.txt
Restart ComfyUI, or search "AAA Metadata System" in ComfyUI Manager. No model downloads involved - the heavy optional extras (PyExiv2, ExifTool) only matter for the metadata-writing side of the pack, not for reading this report.
Common issues
- "No valid file provided" - it needs an absolute path to a real file. It won't take a dropped image tensor.
- "File is not a PNG" - deliberately strict. If you point it at a JPG it tells you and moves on; the pack's JPEG handling lives in the save/load nodes, not here.
- Empty metadata on files from other apps - a PNG from Photoshop or a game screenshot legitimately has no workflow chunk. Empty isn't a bug, it's the truth about the file.
Honest take: you don't reach for this every day. But when a workflow won't reproduce, or someone asks "how was this made?" and you have the PNG, this turns a 20-minute archaeology session into a two-second answer. For metadata-sniffing of that kind, it's the pack's sharpest tool.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| input_filepath | STRING | — | |
| output_mode | COMBO | summary | 4 options: summary, full_text, raw_info, structured_json |
| include_workflow | BOOLEAN | true | — |
| include_sidecar | BOOLEAN | true | — |
| debug_loggingopt | BOOLEAN | false | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| info | STRING | — |
| filename | STRING | — |
| metadata | DICT | — |