๐ Combine Loras, Lora stack
Chain multiple LoRAs in one node
- model
- clip
- model
- clip
- lora_paths
- lora_names
- lora_folders
Stacking LoRAs the vanilla way means a chain of Load LoRA nodes, each one plugging modelโmodel and clipโclip into the next, strengths scattered across the graph. It works, but three LoRAs deep it's a spaghetti mess. This node collapses the whole stack into a single box: pick your LoRAs, set each one's strength, out comes a patched model and clip. If you've used rgthree's Power Lora Loader, this is the same idea in the Bjornulf pack.
Why stack LoRAs at all
LoRAs are composable - a character LoRA plus a style LoRA plus a detail-enhancer LoRA, each nudging the base model a little. The catch is that they interact, and at full strength they fight: identity bleeds, styles clash, the image goes to mush. So real LoRA work is a balancing act of strengths, and a balancing act is miserable when the knobs are spread across five separate nodes. Consolidating the stack into one node - with every strength slider in one place - is exactly the quality-of-life win that made stack loaders a community staple. You see the whole recipe at a glance and tune it in one spot.
How it works
The node takes a model and clip in, applies your selected LoRAs in sequence, and passes the patched model and clip back out - a drop-in replacement for a chain of loaders.
The inputs that matter:
- number_of_loras - how many LoRA slots to show, 1 to 20 (default 3). Bump it and more slots appear.
- lora_1 โฆ lora_N - each slot's LoRA, chosen from your
ComfyUI/models/lorasfolder, ornoneto leave a slot empty. - strength_model_N / strength_clip_N - the two strengths per LoRA.
strength_modelis the one you'll actually tune (default 1.0); it controls how hard the LoRA pulls on the diffusion model.strength_clipaffects the text-encoder side and is usually fine left at 1.0 or matched to the model strength. The range runs way past what's sane (-100 to 100), but you'll live between roughly 0 and 1.2 in practice - negative or huge values are for deliberate experiments, not daily use.
Besides the patched model and clip, it emits lora_paths, lora_names, and lora_folders as strings - the same "tell me what's loaded" outputs the pack sprinkles through its loaders, handy for labeling outputs or logging which stack made an image.
Installing the pack
One pack, ~170 nodes: ComfyUI Manager โ Install Custom Nodes โ search Bjornulf_custom_nodes โ install โ restart, or
cd ComfyUI/custom_nodes
git clone https://github.com/justUmen/Bjornulf_custom_nodes
Restart and it's under Bjornulf. No exotic dependencies; it just needs LoRA files in your loras folder to populate the dropdowns.
Common issues
Empty dropdowns mean no LoRAs where ComfyUI looks - drop .safetensors into ComfyUI/models/loras and refresh. (A fresh scan shows the slots defaulting to none with nothing to pick; that's the catalog reading the node before any LoRAs exist, not a fault.)
The real gotcha is strength stacking. Two or three LoRAs each at 1.0 frequently overpowers the base model - the fix is to pull each one down (0.6โ0.8 is a common landing spot) and nudge up only the one that needs to dominate. If your character LoRA and style LoRA are wrecking each other, that's not the node, that's the LoRAs competing; lower strengths and reorder. Also match the LoRAs to your base model family - an SDXL LoRA on an SD 1.5 checkpoint (or a Flux LoRA on either) won't apply cleanly and often just degrades the image. And feed this node the same model/clip your generation actually uses, so the patched pair flows into your KSampler rather than an unpatched one sneaking through.
Inputs (63)
| Name | Type | Default | Description |
|---|---|---|---|
| number_of_loras | INT | 31โ20 | โ |
| model | MODEL | โ | |
| clip | CLIP | โ | |
| lora_1opt | COMBO | none | 1 options: none |
| strength_model_1opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_1opt | FLOAT | 1.00-100โ100 | โ |
| lora_2opt | COMBO | none | 1 options: none |
| strength_model_2opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_2opt | FLOAT | 1.00-100โ100 | โ |
| lora_3opt | COMBO | none | 1 options: none |
| strength_model_3opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_3opt | FLOAT | 1.00-100โ100 | โ |
| lora_4opt | COMBO | none | 1 options: none |
| strength_model_4opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_4opt | FLOAT | 1.00-100โ100 | โ |
| lora_5opt | COMBO | none | 1 options: none |
| strength_model_5opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_5opt | FLOAT | 1.00-100โ100 | โ |
| lora_6opt | COMBO | none | 1 options: none |
| strength_model_6opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_6opt | FLOAT | 1.00-100โ100 | โ |
| lora_7opt | COMBO | none | 1 options: none |
| strength_model_7opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_7opt | FLOAT | 1.00-100โ100 | โ |
| lora_8opt | COMBO | none | 1 options: none |
| strength_model_8opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_8opt | FLOAT | 1.00-100โ100 | โ |
| lora_9opt | COMBO | none | 1 options: none |
| strength_model_9opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_9opt | FLOAT | 1.00-100โ100 | โ |
| lora_10opt | COMBO | none | 1 options: none |
| strength_model_10opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_10opt | FLOAT | 1.00-100โ100 | โ |
| lora_11opt | COMBO | none | 1 options: none |
| strength_model_11opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_11opt | FLOAT | 1.00-100โ100 | โ |
| lora_12opt | COMBO | none | 1 options: none |
| strength_model_12opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_12opt | FLOAT | 1.00-100โ100 | โ |
| lora_13opt | COMBO | none | 1 options: none |
| strength_model_13opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_13opt | FLOAT | 1.00-100โ100 | โ |
| lora_14opt | COMBO | none | 1 options: none |
| strength_model_14opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_14opt | FLOAT | 1.00-100โ100 | โ |
| lora_15opt | COMBO | none | 1 options: none |
| strength_model_15opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_15opt | FLOAT | 1.00-100โ100 | โ |
| lora_16opt | COMBO | none | 1 options: none |
| strength_model_16opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_16opt | FLOAT | 1.00-100โ100 | โ |
| lora_17opt | COMBO | none | 1 options: none |
| strength_model_17opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_17opt | FLOAT | 1.00-100โ100 | โ |
| lora_18opt | COMBO | none | 1 options: none |
| strength_model_18opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_18opt | FLOAT | 1.00-100โ100 | โ |
| lora_19opt | COMBO | none | 1 options: none |
| strength_model_19opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_19opt | FLOAT | 1.00-100โ100 | โ |
| lora_20opt | COMBO | none | 1 options: none |
| strength_model_20opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_20opt | FLOAT | 1.00-100โ100 | โ |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| model | MODEL | โ |
| clip | CLIP | โ |
| lora_paths | STRING | โ |
| lora_names | STRING | โ |
| lora_folders | STRING | โ |