Nodes/Save Image Organized/Save Image Organized
ComfyUI Node

Save Image Organized

Save Images With Model Names and Dates

By Delcado19·Created 4 months ago·Updated 18 days ago· 1
Save Image Organized
  • images
  • FILENAME
  • FILE_PATH
path_template%TOP_FOLDER%/%MODEL_NAME%/%TEXT_ENCODER_NAME%/%FILENAME%%BATCH%
model_sourceFriendly
clip_sourceFriendly
filename_datetime%date:yyyy-MM-dd_hh-mm-ss%
collision_modeincrement
detection_infoOff
export_workflow_metadatatrue
subfolder
model_folder
clip_folder
image_formatPNG
image_quality95
loader_priorityNearest

The default ComfyUI Save Image node works great until you've generated 2,000 test renders and they're all 00001.png through 02000.png in one folder. That's the exact complaint that keeps showing up in r/comfyui threads: people love the graph, hate the output folder. Save Image Organized (node class SaveImageClean) is the fix - a drop-in replacement that names your folders and files based on the model that actually made the image.

It's from the small comfyui-save-image-organized pack (just two nodes, no other dependencies worth fearing). The whole idea: instead of output/2026-08-16_00001.png, you get portraits/FLUX.2 Klein 9B [5K-M]/Lockout Qwen3 4B [Q8]/2026-08-16_15-30-10.png. Searchable folders, searchable filenames, and the workflow metadata you're used to still rides along inside the PNG.

How it figures out the model name

The clever part is detection. When the workflow runs, the node walks the graph upstream from its own images input to find the nearest checkpoint, UNET, or CLIP/text-encoder loader, then reads the model filename off that loader's widget. So %MODEL_NAME% becomes whatever UNETLoader (or CheckpointLoader/CLIPLoader) was feeding your sampler. If more than one loader is visible, it picks the nearest one by default - and if you run a base-pass-then-refine pipeline, you can make it prefer the first-applied loader instead. There's no AI guessing here: it's reading your actual workflow. One current limitation to know: it resolves to one model name and one text encoder name ("Primary only"), no combined multi-loader names.

If no supported loader sits upstream - say your save node is on a postprocessing-only branch with no sampler before it - detection fails gracefully and the node falls back to your Custom Model Name/Custom Text Encoder Name (the model_folder and clip_folder inputs).

The inputs that matter

You'll mostly touch four things:

  • Save Layout (path_template) - the whole path in one string, defaulting to %TOP_FOLDER%/%MODEL_NAME%/%TEXT_ENCODER_NAME%/%FILENAME%%BATCH%. Clear it and you get the built-in folder order.
  • Filename (filename_datetime) - defaults to %date:yyyy-MM-dd_hh-mm-ss%, so no two files collide by the second.
  • If File Exists (collision_mode) - increment is the safe default. overwrite and error will bite you if a batch saves more than one image without %BATCH% in the layout (the node actually warns you about this).
  • Export Workflow Metadata - on by default, matching stock ComfyUI Save Image. Turn it off for clean PNGs without embedded prompt/workflow data.

Then model_source and clip_source pick how names render: Friendly (readable, with [Q8]-style tags), Exact (the raw filename), or Custom. Optional subfolder adds a top-level folder. The template system is deeper than it looks - %node.widget% placeholders like %KSampler.seed%, %SEED%, %WIDTH%, date tokens, and :lower/:upper/:slug filters. Set Detection Info to Summary or Verbose and the node's text output tells you exactly which model and text encoder it picked, and from which loader. You can also switch the output format away from PNG if you don't need lossless saves - just know the workflow metadata only embeds in PNGs.

Install

It's a light pack - only numpy and Pillow, no model downloads, nothing that can drag your whole environment into dependency hell:

comfy node install save-image-organized

or the manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/Delcado19/comfyui-save-image-organized
pip install -r comfyui-save-image-organized/requirements.txt

Restart ComfyUI and the node appears as "Save Image Organized" under image/save.

Common gotchas

  • Names show as model / text-encoder - no supported upstream loader was found on that branch. Postprocessing-only saves, switch nodes bypassing the loader path, or a custom loader with an unusual widget shape all cause this. Set custom names as the fallback.
  • The preview says "Last Detection Snapshot" - it's showing values from the last run after you edited the layout. Queue the workflow once more to refresh.
  • Browser still shows old behavior after updating - hard-refresh; the frontend JS gets cached.
  • Every image in a batch lands on the same filename - your custom layout dropped %BATCH%. Add it or switch to increment.

If you generate a lot and want to actually find your renders later, this is the one. It's not flashy - it's the node that quietly saves you from sorting 2,000 numbered PNGs.

Categoryimage/save

Inputs (14)

NameTypeDefaultDescription
imagesIMAGE
path_templateSTRING%TOP_FOLDER%/%MODEL_NAME%/%TEXT_ENCODER_NAME%/%FILENAME%%BATCH%Main save layout. The default layout is Top Folder / Model Name / Text Encoder Name / Filename plus an automatic batch suffix for multi-image saves. Clear it only if you want the built-in order.
model_sourceCOMBOFriendlyChoose how the model name should look. Friendly is the easiest option for most people.
clip_sourceCOMBOFriendlyChoose how the text encoder name should look. Friendly is the easiest option for most people.
filename_datetimeSTRING%date:yyyy-MM-dd_hh-mm-ss%Filename pattern. The default is year-month-day_hour-minute-second. Supports plain text, %date:...%, and the small %strftime:...% subset.
collision_modeCOMBOincrementWhat to do if the file already exists. Increment is the safest default.
detection_infoCOMBOOffOptional runtime detection summary in the node output text. Use Summary or Verbose when you want to see which model and text encoder names were detected and selected.
export_workflow_metadataBOOLEANtrueStore prompt and workflow metadata in the PNG, like ComfyUI's normal Save Image node. Turn this off when you want clean PNG files without embedded workflow data. PNG only; JPEG and WebP saves never embed it.
subfolderoptSTRINGOptional extra top folder, such as portraits or test-renders.
model_folderoptSTRINGCustom model name. Used directly in Custom mode, and also as a fallback if auto-detection fails.
clip_folderoptSTRINGCustom text encoder name. Used directly in Custom mode, and also as a fallback if auto-detection fails.
image_formatoptCOMBOPNGOutput image file format. JPEG and WebP are lossy and use Image Quality below; PNG is lossless and ignores it.
image_qualityoptINT951–100JPEG/WebP quality (1-100). Ignored when Image Format is PNG.
loader_priorityoptCOMBONearestHow to pick a model/text-encoder when more than one loader feeds this save. Nearest picks the loader with the fewest upstream links (right for most single-pass workflows). First Used picks the loader furthest upstream, i.e. the first one applied in a multi-stage pipeline such as a base pass refined by a second model.

Outputs (2)

NameTypeDescription
FILENAMESTRINGFile name of the first saved image in this batch, without folders.
FILE_PATHSTRINGAbsolute file path of the first saved image in this batch.