Nodes/ComfyUI-DynamicLoraLoaderStack/LoRA Loader Stack (Dynamic)
ComfyUI Node

LoRA Loader Stack (Dynamic)

Stop resetting LoRAs to None — this stack gives every slot its own off switch

By panjapongr·Created 5 days ago·Updated 5 days ago· 0
LoRA Loader Stack (Dynamic)
  • model
  • clip
  • MODEL
  • CLIP
  • loaded_loras
◄lora_count5►
◄prev_loaded_loras—►
◄enabled_01true►
◄lora_01None►
◄strength_011.00►
◄enabled_02true►
◄lora_02None►
◄strength_021.00►
◄enabled_03true►
◄lora_03None►
◄strength_031.00►
◄enabled_04true►
◄lora_04None►
◄strength_041.00►
◄enabled_05true►
◄lora_05None►
◄strength_051.00►
◄enabled_06true►
◄lora_06None►
◄strength_061.00►
◄enabled_07true►
◄lora_07None►
◄strength_071.00►
◄enabled_08true►
◄lora_08None►
◄strength_081.00►
◄enabled_09true►
◄lora_09None►
◄strength_091.00►
◄enabled_10true►
◄lora_10None►
◄strength_101.00►
◄enabled_11true►
◄lora_11None►
◄strength_111.00►
◄enabled_12true►
◄lora_12None►
◄strength_121.00►
◄enabled_13true►
◄lora_13None►
◄strength_131.00►
◄enabled_14true►
◄lora_14None►
◄strength_141.00►
◄enabled_15true►
◄lora_15None►
◄strength_151.00►
◄enabled_16true►
◄lora_16None►
◄strength_161.00►
◄enabled_17true►
◄lora_17None►
◄strength_171.00►
◄enabled_18true►
◄lora_18None►
◄strength_181.00►
◄enabled_19true►
◄lora_19None►
◄strength_191.00►
◄enabled_20true►
◄lora_20None►
◄strength_201.00►
◄enabled_21true►
◄lora_21None►
◄strength_211.00►
◄enabled_22true►
◄lora_22None►
◄strength_221.00►
◄enabled_23true►
◄lora_23None►
◄strength_231.00►
◄enabled_24true►
◄lora_24None►
◄strength_241.00►
◄enabled_25true►
◄lora_25None►
◄strength_251.00►
◄enabled_26true►
◄lora_26None►
◄strength_261.00►
◄enabled_27true►
◄lora_27None►
◄strength_271.00►
◄enabled_28true►
◄lora_28None►
◄strength_281.00►
◄enabled_29true►
◄lora_29None►
◄strength_291.00►
◄enabled_30true►
◄lora_30None►
◄strength_301.00►
◄enabled_31true►
◄lora_31None►
◄strength_311.00►
◄enabled_32true►
◄lora_32None►
◄strength_321.00►
◄enabled_33true►
◄lora_33None►
◄strength_331.00►
◄enabled_34true►
◄lora_34None►
◄strength_341.00►
◄enabled_35true►
◄lora_35None►
◄strength_351.00►
◄enabled_36true►
◄lora_36None►
◄strength_361.00►
◄enabled_37true►
◄lora_37None►
◄strength_371.00►
◄enabled_38true►
◄lora_38None►
◄strength_381.00►
◄enabled_39true►
◄lora_39None►
◄strength_391.00►
◄enabled_40true►
◄lora_40None►
◄strength_401.00►
◄enabled_41true►
◄lora_41None►
◄strength_411.00►
◄enabled_42true►
◄lora_42None►
◄strength_421.00►
◄enabled_43true►
◄lora_43None►
◄strength_431.00►
◄enabled_44true►
◄lora_44None►
◄strength_441.00►
◄enabled_45true►
◄lora_45None►
◄strength_451.00►
◄enabled_46true►
◄lora_46None►
◄strength_461.00►
◄enabled_47true►
◄lora_47None►
◄strength_471.00►
◄enabled_48true►
◄lora_48None►
◄strength_481.00►
◄enabled_49true►
◄lora_49None►
◄strength_491.00►
◄enabled_50true►
◄lora_50None►
◄strength_501.00►

The problem it actually solves

Stacking LoRAs is normal practice at this point - a character, a style, a detail-fixer, then an afternoon of nudging weights. What isn't normal is how ComfyUI's stock Load LoRA handles it: one LoRA per node, and the only way to switch one off is to set its dropdown back to None. So testing what the third LoRA is even contributing means throwing away the selection and hunting the same file down again.

LoRA Loader Stack (Dynamic) is a five-slot (adjustable) LoRA rack where every row has a checkbox. Uncheck a row and it's skipped - the dropdown and the strength stay put, so re-checking is one click.

Where it sits next to rgthree

Be honest with yourself: if you already run rgthree-comfy, its Power Lora Loader does per-entry toggles too, and it's the one 363 corpus threads mention - plus right-clicking a row reads the LoRA's trigger words out of the file or pulls them from CivitAI, which is the most useful thing anyone has bolted onto a LoRA stack. This pack isn't the default choice; it's the tidy one.

What it adds is a typed lora_count (1–50, default 5) so the node renders only the rows you asked for, a clean text summary of what applied, and nothing else - no network calls, just ComfyUI's own LoraLoader and filenames from your models/loras. GPL-3.0, one maintainer, and small enough that installing a second utility pack for one node is a defensible trade.

How it works

Not exotic, and that's the reassuring part: it instantiates ComfyUI's core LoraLoader and calls load_lora() once per active slot, threading model and clip through each call so the patches accumulate in slot order - slot 1 patches first, slot 5 last. And order matters, the way it always does when you stack - a detail LoRA loaded after the style LoRA lands on different weights than the reverse.

A slot loads only if all of these are true: its index is inside lora_count, its enabled_NN is checked, lora_NN isn't None, and strength_NN isn't zero.

That last one is a trap: zero doesn't mean "apply at zero strength", it means "skip the slot" - so a row dialled to 0.0 also drops out of the loaded_loras summary, and you'll wonder where it went.

Inputs and outputs that matter

model is the other required input - wire your checkpoint or UNet loader output into it.

lora_count is the one you'll touch most: 5 by default, up to 50. Lowering it hides the extra rows but does not wipe them - shrink to 2, go back to 5, and the old selections return.

clip is optional. Leave it unconnected and LoRAs patch the model only.

prev_loaded_loras exists purely so you can chain two of these and have the second summary include the first's. The merge strips the incoming N loaded: header and re-counts, so the last node in the chain reports the real total.

Then, per slot: enabled_01, lora_01, strength_01 (and up). Strength runs -100 to 100 at 0.01 steps, same as the stock loader - negative values are real, and used to push a LoRA's effect the other way.

Outputs are MODEL, CLIP, and loaded_loras. MODEL goes onward to your sampler or the next stack; CLIP goes to your text encoders (or nothing, if you skipped the clip input). loaded_loras is plain text:

2 loaded:
lora03.safetensors,strength=2
lora04.safetensors,strength=-20

Drop it into a Show Text node if you want to see it. It's the closest thing you get to a receipt for what actually fired.

Installing it

ComfyUI Manager, search the pack title ComfyUI Dynamic LoRA Loader Stack (publisher panjapong). Or:

cd ComfyUI/custom_nodes
git clone https://github.com/panjapongr/ComfyUI-DynamicLoraLoaderStack

Then restart. No dependencies at all - an empty dependency list in pyproject.toml, no requirements.txt, no model files. It wants ComfyUI 0.3.0+ and Python 3.10+.

One README warning: its install section says to copy a ComfyUI-InputThumbnails folder - copy-paste from another of the author's packs. Ignore it; clone as above.

Common issues

The node shows dozens of rows instead of five. The slot hiding is frontend-side, in the pack's web/dynamic_lora_stack.js. If that extension didn't load, all 50 slots' widgets render. Hard-refresh the browser (Ctrl+Shift+R) and restart the server.

Output CLIP is empty and something downstream complains. You left clip unconnected, so there's nothing to return. Either wire your encoders' CLIP into it, or don't wire the CLIP output anywhere.

A LoRA does nothing at all. Almost never the stack node. Wrong base architecture (an Illustrious LoRA on Flux), a missing trigger word, or strength too high are the usual three.

A workflow that had 4 rows behaves like it has 5. lora_count is saved with the node, and hidden slots serialise along with visible ones. Check the count before blaming a mystery LoRA.

Categoryloaders

Inputs (154)

NameTypeDefaultDescription
modelMODEL—
lora_countINT51–50How many LoRA selectors to show and consider. Default 5, max 50.
clipoptCLIPOptional. Leave disconnected to apply LoRAs to the model only.
prev_loaded_lorasoptSTRINGWire the previous node's loaded_loras here so this output includes the whole chain.
enabled_01optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_01optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_01optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_02optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_02optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_02optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_03optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_03optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_03optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_04optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_04optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_04optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_05optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_05optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_05optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_06optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_06optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_06optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_07optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_07optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_07optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_08optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_08optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_08optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_09optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_09optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_09optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_10optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_10optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_10optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_11optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_11optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_11optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_12optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_12optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_12optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_13optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_13optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_13optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_14optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_14optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_14optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_15optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_15optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_15optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_16optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_16optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_16optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_17optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_17optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_17optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_18optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_18optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_18optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_19optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_19optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_19optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_20optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_20optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_20optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_21optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_21optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_21optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_22optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_22optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_22optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_23optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_23optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_23optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_24optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_24optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_24optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_25optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_25optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_25optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_26optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_26optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_26optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_27optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_27optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_27optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_28optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_28optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_28optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_29optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_29optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_29optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_30optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_30optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_30optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_31optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_31optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_31optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_32optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_32optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_32optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_33optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_33optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_33optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_34optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_34optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_34optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_35optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_35optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_35optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_36optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_36optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_36optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_37optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_37optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_37optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_38optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_38optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_38optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_39optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_39optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_39optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_40optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_40optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_40optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_41optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_41optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_41optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_42optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_42optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_42optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_43optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_43optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_43optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_44optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_44optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_44optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_45optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_45optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_45optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_46optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_46optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_46optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_47optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_47optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_47optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_48optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_48optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_48optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_49optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_49optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_49optFLOAT1.00-100–100Applied to both model and CLIP.
enabled_50optBOOLEANtrueUncheck to skip this LoRA without clearing the selector.
lora_50optCOMBONoneLoRA file. Kept even when this slot is disabled or hidden.
strength_50optFLOAT1.00-100–100Applied to both model and CLIP.

Outputs (3)

NameTypeDescription
MODELMODEL—
CLIPCLIP—
loaded_lorasSTRING—