Metadata Reader π
Read any PNG's hidden text chunks back out
- metadata_raw
- metadata_json
Every PNG that came out of a real pipeline is carrying luggage you can't see. A ComfyUI image has the whole workflow graph stuffed into text chunks; an A1111/Forge image has a flat parameters block with prompt, seed, sampler and settings; and if you've used this pack's Metadata Embed, your own tags are in there too. Metadata Reader π opens the file and dumps all of it back out - the read-side companion to Metadata Embed, and the fastest way to answer "what actually made this image?" without eyeballing it.
It's the kind of node that quietly earns its place once you have a few hundred downloaded PNGs and need to sort out what checkpoint a render used, or whether a shared image carries a usable workflow. Point it at a file path and it hands you the chunks.
How it works
Under the hood it's almost embarrassingly simple: PIL.Image.open(file_path) and read the .info dict, which is where PIL surfaces PNG text chunks. Every key/value pair found is returned two ways - metadata_raw, a human-readable key: value per line, and metadata_json, the same data as a pretty-printed JSON string for downstream parsing. If the file doesn't exist, it returns a clear "File not found" message instead of crashing the queue; if the file has no text metadata, it says so.
The inputs and outputs
One input: file_path, a plain string - either a ComfyUI-relative path or an absolute one. Outputs are metadata_raw and metadata_json. metadata_json is the interesting one because JSON is wireable: feed it into a JSON Field Extractor or a Show Text node and you can pull a single field (the seed, the checkpoint name) out of a pile of chunks without reading the whole dump.
The natural pairing in this pack is the full loop: Metadata Embed writes your tags at save time, Metadata Reader pulls them back on the audit side. It also reads what other tools wrote, so it's useful alongside the pack's Model Info Inspector when you're checking where a generation actually came from.
Installing it
Same pack, same install:
cd ComfyUI/custom_nodes/
git clone https://github.com/TensorVizion/OmniNodes
Restart ComfyUI afterward (ComfyUI Manager users: search "OmniNodes"). It needs only PIL, already bundled - no pip install. Note the category quirk: like Metadata Embed, it lives under TensorVizion/Model, which sits in a separate submenu from the pack's other Model Utilities nodes. If it doesn't show up, restart completely and look for [OmniNodes] β
Loaded in the terminal.
One expectation to set: it reads whatever chunks are actually in the file. A screenshot or a re-encoded upload has none, and no reader can conjure metadata that was stripped. But for original PNGs - including the ones still sitting in your own output folder - this is the quickest way to see everything that's riding along inside them.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| file_path | STRING | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| metadata_raw | STRING | β |
| metadata_json | STRING | β |