PNG Info for ComfyUI
Your A1111 archive finally speaks ComfyUI
- seed
- steps
- cfg
- sampler_name
- scheduler
- denoise
- ckpt_name
- lora_01
- strength_01
- lora_02
- strength_02
- lora_03
- strength_03
- lora_04
- strength_04
- positive_prompt
- negative_prompt
- status
Every PNG you've ever generated is a receipt. Automatic1111 bakes the full recipe into a parameters text chunk - prompt, negative, seed, steps, CFG, sampler, scheduler, model, LoRAs - and ComfyUI embeds its own prompt graph the same way. The catch is that only ComfyUI knows how to load that ComfyUI graph back. Drag an A1111 PNG into ComfyUI and you get pixels and nothing else; you retype every setting by hand, squinting at the info tab. PNG Info for ComfyUI is the node that fixes that one specific, very real annoyance.
It reads generation settings out of either metadata format and applies them to a KSampler branch you already have built - your checkpoint loader, your CLIP text encodes, your LoRA stack stay exactly where they are. It doesn't rebuild your workflow from the PNG, it just fills in the numbers. That's the key difference from the handful of read-only "show me the metadata" nodes floating around, and it's why this one is worth installing.
How it works
The backend (png_info_node.py + png_info_parser.py) opens the PNG with Pillow and reads its text chunks without touching pixels. For an A1111 file it parses the parameters chunk: splits positive/negative prompt, strips <lora:name:weight> tags into separate LoRA values, and normalizes A1111 sampler names (so DPM++ 2M SDE becomes ComfyUI's dpmpp_2m_sde, Schedule type: Karras becomes the karras scheduler). For a ComfyUI PNG it walks the embedded prompt JSON, finds the KSampler, and traces upstream through the model link to the checkpoint and LoRAs and back to the CLIP text encodes for the prompts.
The genuinely smart part is asset matching. A1111 stored Model: realcartoonPony_v2, your file is realcartoonPony_v2.safetensors in a subfolder - it resolves that by exact relative path, then filename, then unique filename stem, and even uses the LoRA hashes A1111 records when it has to. It never does fuzzy guessing; if a checkpoint isn't installed, it leaves the loader alone and says so in the status output.
The frontend part is what makes it feel magical. Click Bind all connected nodes & detach and it stores the IDs of five target nodes (checkpoint loader, both CLIP text encodes, KSampler, LoRA loader) in the workflow, rips out all the temporary wires, and immediately applies the current PNG. Every widget stays editable - the bind is a saved shortcut, not a lock-in.
The inputs and outputs that matter
You set exactly one input: image. Upload or pick a PNG from your input folder, and the node does the rest.
The 17 outputs are typed to plug straight into the standard pipeline: seed, steps, cfg, sampler_name, scheduler, denoise, ckpt_name, four lora_01–lora_04 / strength_01–strength_04 pairs, positive_prompt, negative_prompt. For Lora Loader Stack (rgthree) and Power Lora Loader (rgthree) they land on the right sockets by name. The one output beginners overlook is status - it tells you the source format (A1111 or ComfyUI) and, critically, whether anything failed to resolve, like a missing LoRA set to None or "Checkpoint not installed".
Installing
Grab it from ComfyUI Manager (search "PNG Info for ComfyUI") or the registry:
comfy node install png-info
Manual clone works too:
cd ComfyUI/custom_nodes
git clone https://github.com/Gerbesh/png-info-for-comfyui.git
Then restart ComfyUI and look under the PNG Info category. The only dependency is Pillow, which ComfyUI already ships - no models, no weights, no keys. This is one of the rare packs you can install without reading a model card.
Common gotchas
- Bind all 17 outputs for Lora Loader Stack. For Power Lora Loader, leave the eight LoRA outputs disconnected - the node finds the loader itself, populates the first four rows, and disables stale ones.
- More than four LoRAs in the metadata? First four win, with a warning in status.
- Multiple sampler branches in a ComfyUI PNG - it picks the one wired to a save/preview and tells you which.
- Clear binding before wiring a different target set, or the old nodes keep getting your numbers.
- A PNG with no generation metadata just errors out with "No supported A1111 or ComfyUI metadata found" - that's the file, not the node.
If you live in the A1111 half of the community and the migration to ComfyUI has been a wall of re-typing, this is the bridge. Bind once, apply forever.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| image | COMBO | 1 options: example.png |
Outputs (18)
| Name | Type | Description |
|---|---|---|
| seed | INT | — |
| steps | INT | — |
| cfg | FLOAT | — |
| sampler_name | euler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2 | — |
| scheduler | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal | — |
| denoise | FLOAT | — |
| ckpt_name | — | |
| lora_01 | None | — |
| strength_01 | FLOAT | — |
| lora_02 | None | — |
| strength_02 | FLOAT | — |
| lora_03 | None | — |
| strength_03 | FLOAT | — |
| lora_04 | None | — |
| strength_04 | FLOAT | — |
| positive_prompt | STRING | — |
| negative_prompt | STRING | — |
| status | STRING | — |