Nodes/ComfyUI_SimpleButcher/Simple Image Saver (as Forge) πŸ“š
ComfyUI Node

Simple Image Saver (as Forge) πŸ“š

Save PNGs with Forge-compatible metadata

By KLL535Β·Created 2 years agoΒ·Updated 12 months agoΒ· 13
Simple Image Saver (as Forge) πŸ“š
  • images
  • sampler
  • schedule
  • metadata_text
β—„output_pathβ–Ί
β—„prompt_textβ–Ί
β—„SEEDβ€”β–Ί
β—„modelnameβ–Ί
β—„steps0β–Ί
β—„CFG_scale0.00β–Ί
β—„distilled_CFG_scale0.00β–Ί
β—„width0β–Ί
β—„height0β–Ί
β—„beta_schedule_alpha0.00β–Ί
β—„beta_schedule_beta0.00β–Ί
β—„civitai_loraβ–Ί
β—„civitai_lora_hashβ–Ί
β—„negativeβ–Ί
β—„save_comfy_workflowtrueβ–Ί
β—„save_comfy_promptfalseβ–Ί
β—„override_parametersβ€”β–Ί
β—„override_workflowβ€”β–Ί
β—„override_promptβ€”β–Ί

Every image tool that reads generation metadata - CivitAI's upload page, most gallery apps, half the community's prompt-sharing tools - grew up parsing Forge and A1111's metadata format, not ComfyUI's native workflow JSON. Save straight out of ComfyUI's default Save Image node and a lot of that tooling either shows nothing useful or shows nothing at all. Simple Image Saver (as Forge) exists to close that gap on the output side: it writes the same parameters-style text block Forge produces, organizes files into date subfolders the way Forge does, and - because it's from the same pack - can pull LoRA names and CivitAI-format hashes directly from Simple Lora Loader so your images carry proper LoRA credit without you typing it in by hand.

How it works

images and output_path are the only two things it strictly needs to save a file at all. Everything else is optional metadata, and the design is deliberately additive: the README states it plainly - fields you don't connect simply don't appear in the saved metadata, rather than showing up as blank or zero. So you wire only what you actually have. Filenames get a sequence number plus the seed baked in, mirroring how Forge names its output, and it computes and caches a sha256 hash of the checkpoint the first time it sees it, the same hashing behavior Simple Lora Loader uses for LoRAs - which is what lets the saved metadata carry a CivitAI-recognizable model hash.

There are two ways to feed it metadata. The granular way is wiring individual fields - prompt_text, SEED, steps, CFG_scale, and so on - one at a time from your actual pipeline. The README points at companion nodes named Checkpoint Loader with Name (Image Saver), Sampler Selector (Image Saver), and Scheduler Selector (Image Saver) for the modelname, sampler, and schedule fields specifically, so those come through as the right type instead of you typing strings by hand (this pack credits alexopus/ComfyUI-Image-Saver as one of its code sources, which is where that naming convention comes from). The other way is the override path: override_parameters, override_workflow, and override_prompt each take a complete pre-built string and replace everything the granular fields would have assembled - useful if you're re-saving an image and just want to pass its original metadata straight through untouched.

The inputs and outputs that matter

Beyond the two required fields, the ones worth actually setting by hand for a typical run: prompt_text and negative (your prompt text), SEED, modelname, and - if you ran Simple Lora Loader upstream - civitai_lora and civitai_lora_hash, which wire straight across from that node's outputs. save_comfy_workflow (defaults on) and save_comfy_prompt (defaults off) control whether ComfyUI's own native metadata also gets embedded alongside the Forge-style block, so you keep the drag-and-drop-to-reload convenience too.

The single output is metadata_text - the actual string that got written to the file. It doesn't feed anywhere by necessity; it's there so you can inspect or log exactly what metadata ended up on disk, which is genuinely useful the first time you're debugging why a field didn't show up.

Installing it

ComfyUI Manager β†’ search ComfyUI_SimpleButcher β†’ install β†’ restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/KLL535/ComfyUI_SimpleButcher.git
cd ComfyUI_SimpleButcher
pip install -r requirements.txt

Common issues

A metadata field is just missing. Check that it's actually wired - this node's whole design is "connected fields appear, unconnected fields don't," so an empty field almost always means nothing's plugged into it, not a bug.

Override output looks wrong or incomplete. Remember override_parameters / override_workflow / override_prompt each fully replace their corresponding metadata block. If you've wired both the granular fields and an override for the same data, the override wins - don't expect them to merge.

It's writing hash files into your model folder. Same caution as its sibling node: computing a checkpoint's sha256 writes a .sha256 file next to the model. It's a one-time cost per checkpoint and it's what makes the CivitAI-format hash possible, but it does mean this node isn't purely read-only with respect to your models directory.

CategoryπŸ“š SimpleButcher

Inputs (22)

NameTypeDefaultDescription
imagesIMAGEimage(s) to save
output_pathSTRINGPath where images will be saved
prompt_textoptSTRINGSTRING
SEEDoptINTINT
modelnameoptSTRINGSTRING, use Checkpoint Loader with Name (Image Saver) node
stepsoptINT0INT
sampleropt*ANY, use Sampler Selector (Image Saver) node
scheduleopt*ANY, use Scheduler Selector (Image Saver) node
CFG_scaleoptFLOAT0.00FLOAT
distilled_CFG_scaleoptFLOAT0.00FLOAT
widthoptINT0INT
heightoptINT0INT
beta_schedule_alphaoptFLOAT0.00FLOAT
beta_schedule_betaoptFLOAT0.00FLOAT
civitai_loraoptSTRINGSTRING, Loras name from Simple Lora Loader node
civitai_lora_hashoptSTRINGSTRING, Loras hash from Simple Lora Loader node
negativeoptSTRINGSTRING, Negative prompt
save_comfy_workflowoptBOOLEANtrueif True, saves workflow in the image
save_comfy_promptoptBOOLEANfalseif True, saves workflow in the image
override_parametersoptSTRINGIf present, this text will be written to image metadata (parameters)
override_workflowoptSTRINGIf present, this text will be written to image metadata (workflow)
override_promptoptSTRINGIf present, this text will be written to image metadata (prompt)

Outputs (1)

NameTypeDescription
metadata_textSTRINGβ€”