LoRA Loader Stack (Dynamic)
Stop resetting LoRAs to None — this stack gives every slot its own off switch
- model
- clip
- MODEL
- CLIP
- loaded_loras
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.
Inputs (154)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| lora_count | INT | 51–50 | How many LoRA selectors to show and consider. Default 5, max 50. |
| clipopt | CLIP | Optional. Leave disconnected to apply LoRAs to the model only. | |
| prev_loaded_lorasopt | STRING | Wire the previous node's loaded_loras here so this output includes the whole chain. | |
| enabled_01opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_01opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_01opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_02opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_02opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_02opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_03opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_03opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_03opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_04opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_04opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_04opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_05opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_05opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_05opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_06opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_06opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_06opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_07opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_07opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_07opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_08opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_08opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_08opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_09opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_09opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_09opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_10opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_10opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_10opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_11opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_11opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_11opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_12opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_12opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_12opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_13opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_13opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_13opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_14opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_14opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_14opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_15opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_15opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_15opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_16opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_16opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_16opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_17opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_17opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_17opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_18opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_18opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_18opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_19opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_19opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_19opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_20opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_20opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_20opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_21opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_21opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_21opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_22opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_22opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_22opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_23opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_23opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_23opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_24opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_24opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_24opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_25opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_25opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_25opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_26opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_26opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_26opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_27opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_27opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_27opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_28opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_28opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_28opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_29opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_29opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_29opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_30opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_30opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_30opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_31opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_31opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_31opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_32opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_32opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_32opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_33opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_33opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_33opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_34opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_34opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_34opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_35opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_35opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_35opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_36opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_36opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_36opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_37opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_37opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_37opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_38opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_38opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_38opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_39opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_39opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_39opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_40opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_40opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_40opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_41opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_41opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_41opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_42opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_42opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_42opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_43opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_43opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_43opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_44opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_44opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_44opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_45opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_45opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_45opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_46opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_46opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_46opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_47opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_47opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_47opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_48opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_48opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_48opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_49opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_49opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_49opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
| enabled_50opt | BOOLEAN | true | Uncheck to skip this LoRA without clearing the selector. |
| lora_50opt | COMBO | None | LoRA file. Kept even when this slot is disabled or hidden. |
| strength_50opt | FLOAT | 1.00-100–100 | Applied to both model and CLIP. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| loaded_loras | STRING | — |