Nodes/Visual Suite (Studio Leiel)/Visual Filename Manager (Studio Leiel)
ComfyUI Node

Visual Filename Manager (Studio Leiel)

Stop wiring 40 string nodes together — drag your filename into shape instead

By StudioLeiel·Created 14 days ago·Updated about 24 hours ago· 2
Visual Filename Manager (Studio Leiel)
  • run_after
  • text_1
  • text_2
  • text_3
  • text_4
  • text_5
  • text_6
  • text_7
  • text_8
  • text_9
  • text_10
  • filename_prefix
  • folder
  • filename
  • report
layout_json
folder_sep/
file_sep_
max_filename_chars190
resolve_modeui_snapshot
folder_stylenames_only
escape_percenttrue
fallback_nameLEIEL_FALLBACK
lora_text

You care about filenames, and ComfyUI makes you pay for it. A name like 2026-08-21_Le Seuil_retrovintage(1.0)_Elise_v2(0.95)_steps(10)_time(57.4s)_00001_.png normally costs you 40–60 nodes of Widget To String, Text Concatenate, and Text Find and Replace - and every one of them runs after rendering. One mistake means a finished render that never gets saved. Visual Filename Manager (Studio Leiel) is the person who sat down and said "there has to be a better way."

The name undersells it, honestly. It's a drag-and-drop filename builder. Every widget in your workflow - sampler, steps, shift, LoRA names and strengths, checkpoint, seed - appears as a chip in a palette at the top of the node. You drag chips into a FOLDER box and a FILE box, and a live preview at the bottom shows the exact path before you ever hit Queue. No API, no key, nothing to train. It's plumbing, but it's the good kind.

How it works

The trick is that ComfyUI hands every node two hidden inputs: PROMPT (node id → class → widget values for the whole graph) and EXTRA_PNGINFO (the workflow JSON, including node titles and modes). This node reads those and looks up "node title → widget → value" for the entire workflow. That's the whole magic - no wiring needed, because the data was already there.

Bypass sync is where it gets actually clever. The backend checks each chip's node mode (mute = 2, bypass = 4) and drops the chip from the name in real time. Bypass your enhancer and Enhancer(0.5) vanishes from the preview while you watch - no re-queue, no rewiring. The filename records what actually ran, which is the entire point. Chips aren't deleted, just marked bypassed - omitted, so your layout survives a day of toggling nodes.

The layout lives in the node as layout_json, so it travels with the workflow file and re-points itself at whatever graph it's pasted into (matched by node class, then title, then unique widget). Every change is also snapshotted to browser storage, and the SAVE panel can export the layout as plain text.

The inputs that matter

Both real inputs are optional, and the node labels them with what they're for:

  • run_after (for elapsed) - connect the image line feeding Save Image here if you use the elapsed chip. The node otherwise may run before sampling and report a near-zero time. The value is discarded; it exists purely to force ordering.
  • lora_text (for LoraManager) - with willmiao's Lora Manager, the browser can only see every registered LoRA (often 20+). Feeding its trigger_words output in here narrows the palette to the ones actually switched on.

Widgets worth knowing: folder_style = names_only (default) strips strengths and drops numeric chips from the folder path while keeping them in the filename - same chip gives you retrovintage in the folder and retrovintage(1.0) in the name. resolve_mode = ui_snapshot (default) means the preview equals the output; switch to live_prompt only if you want runtime values like a randomized seed, and accept the tradeoffs.

Outputs: filename_prefix (folder + name - feed it to Save Image's filename_prefix widget after converting that to an input), plus separate folder, filename, and a report string that lists anything dropped and why. The report is the first place to look when a name isn't what you expected.

Install

Via ComfyUI Manager: Manager → Custom Nodes Manager, search "Visual Filename Manager", install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/studioleiel/comfyui-visual-filename-manager

Then restart ComfyUI and hard-refresh the browser (Ctrl+Shift+R) - the UI is a frontend extension and browsers cache it aggressively. Zero dependencies, Python standard library only. No models, no heavy downloads.

Troubleshooting

  • Node appears but no UI inside → cached JS. Hard-refresh.
  • Palette empty → press the R button to rescan the workflow.
  • Time reads near zerorun_after isn't connected (only matters if you use elapsed).
  • Chip shows skipped in folder → expected; numeric chips are dropped from folders under names_only.
  • Chip resolves to the wrong value → flip resolve_mode back to ui_snapshot.

Worth knowing before you fall in love: this is a brand-new pack with no community track record yet, so the edge-case lore a battle-tested node accumulates hasn't had time to form. The code is defensive - it never raises and always falls back to a valid name - which is more than most custom nodes can claim, but treat early versions with caution. Prefer typing? The same pack ships the text-template sibling Filename Template.

CategoryStudio Leiel

Inputs (20)

NameTypeDefaultDescription
layout_jsonSTRING
folder_sepSTRING/
file_sepSTRING_
max_filename_charsINT19040–250
resolve_modeCOMBOui_snapshot2 options: ui_snapshot, live_prompt
folder_styleCOMBOnames_only2 options: names_only, as_is
escape_percentBOOLEANtrue
fallback_nameSTRINGLEIEL_FALLBACK
run_afteropt*
lora_textoptSTRING
text_1opt*
text_2opt*
text_3opt*
text_4opt*
text_5opt*
text_6opt*
text_7opt*
text_8opt*
text_9opt*
text_10opt*

Outputs (4)

NameTypeDescription
filename_prefixSTRING
folderSTRING
filenameSTRING
reportSTRING