Nodes/Bjornulf_custom_nodes/๐Ÿ‘‘ Combine Loras, Lora stack
ComfyUI Node

๐Ÿ‘‘ Combine Loras, Lora stack

Chain multiple LoRAs in one node

By justUmenยทCreated 2 years agoยทUpdated about a year agoยท 545
๐Ÿ‘‘ Combine Loras, Lora stack
  • model
  • clip
  • model
  • clip
  • lora_paths
  • lora_names
  • lora_folders
โ—„number_of_loras3โ–บ
โ—„lora_1noneโ–บ
โ—„strength_model_11.00โ–บ
โ—„strength_clip_11.00โ–บ
โ—„lora_2noneโ–บ
โ—„strength_model_21.00โ–บ
โ—„strength_clip_21.00โ–บ
โ—„lora_3noneโ–บ
โ—„strength_model_31.00โ–บ
โ—„strength_clip_31.00โ–บ
โ—„lora_4noneโ–บ
โ—„strength_model_41.00โ–บ
โ—„strength_clip_41.00โ–บ
โ—„lora_5noneโ–บ
โ—„strength_model_51.00โ–บ
โ—„strength_clip_51.00โ–บ
โ—„lora_6noneโ–บ
โ—„strength_model_61.00โ–บ
โ—„strength_clip_61.00โ–บ
โ—„lora_7noneโ–บ
โ—„strength_model_71.00โ–บ
โ—„strength_clip_71.00โ–บ
โ—„lora_8noneโ–บ
โ—„strength_model_81.00โ–บ
โ—„strength_clip_81.00โ–บ
โ—„lora_9noneโ–บ
โ—„strength_model_91.00โ–บ
โ—„strength_clip_91.00โ–บ
โ—„lora_10noneโ–บ
โ—„strength_model_101.00โ–บ
โ—„strength_clip_101.00โ–บ
โ—„lora_11noneโ–บ
โ—„strength_model_111.00โ–บ
โ—„strength_clip_111.00โ–บ
โ—„lora_12noneโ–บ
โ—„strength_model_121.00โ–บ
โ—„strength_clip_121.00โ–บ
โ—„lora_13noneโ–บ
โ—„strength_model_131.00โ–บ
โ—„strength_clip_131.00โ–บ
โ—„lora_14noneโ–บ
โ—„strength_model_141.00โ–บ
โ—„strength_clip_141.00โ–บ
โ—„lora_15noneโ–บ
โ—„strength_model_151.00โ–บ
โ—„strength_clip_151.00โ–บ
โ—„lora_16noneโ–บ
โ—„strength_model_161.00โ–บ
โ—„strength_clip_161.00โ–บ
โ—„lora_17noneโ–บ
โ—„strength_model_171.00โ–บ
โ—„strength_clip_171.00โ–บ
โ—„lora_18noneโ–บ
โ—„strength_model_181.00โ–บ
โ—„strength_clip_181.00โ–บ
โ—„lora_19noneโ–บ
โ—„strength_model_191.00โ–บ
โ—„strength_clip_191.00โ–บ
โ—„lora_20noneโ–บ
โ—„strength_model_201.00โ–บ
โ—„strength_clip_201.00โ–บ

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/loras folder, or none to leave a slot empty.
  • strength_model_N / strength_clip_N - the two strengths per LoRA. strength_model is the one you'll actually tune (default 1.0); it controls how hard the LoRA pulls on the diffusion model. strength_clip affects 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.

CategoryBjornulf

Inputs (63)

NameTypeDefaultDescription
number_of_lorasINT31โ€“20โ€”
modelMODELโ€”
clipCLIPโ€”
lora_1optCOMBOnone1 options: none
strength_model_1optFLOAT1.00-100โ€“100โ€”
strength_clip_1optFLOAT1.00-100โ€“100โ€”
lora_2optCOMBOnone1 options: none
strength_model_2optFLOAT1.00-100โ€“100โ€”
strength_clip_2optFLOAT1.00-100โ€“100โ€”
lora_3optCOMBOnone1 options: none
strength_model_3optFLOAT1.00-100โ€“100โ€”
strength_clip_3optFLOAT1.00-100โ€“100โ€”
lora_4optCOMBOnone1 options: none
strength_model_4optFLOAT1.00-100โ€“100โ€”
strength_clip_4optFLOAT1.00-100โ€“100โ€”
lora_5optCOMBOnone1 options: none
strength_model_5optFLOAT1.00-100โ€“100โ€”
strength_clip_5optFLOAT1.00-100โ€“100โ€”
lora_6optCOMBOnone1 options: none
strength_model_6optFLOAT1.00-100โ€“100โ€”
strength_clip_6optFLOAT1.00-100โ€“100โ€”
lora_7optCOMBOnone1 options: none
strength_model_7optFLOAT1.00-100โ€“100โ€”
strength_clip_7optFLOAT1.00-100โ€“100โ€”
lora_8optCOMBOnone1 options: none
strength_model_8optFLOAT1.00-100โ€“100โ€”
strength_clip_8optFLOAT1.00-100โ€“100โ€”
lora_9optCOMBOnone1 options: none
strength_model_9optFLOAT1.00-100โ€“100โ€”
strength_clip_9optFLOAT1.00-100โ€“100โ€”
lora_10optCOMBOnone1 options: none
strength_model_10optFLOAT1.00-100โ€“100โ€”
strength_clip_10optFLOAT1.00-100โ€“100โ€”
lora_11optCOMBOnone1 options: none
strength_model_11optFLOAT1.00-100โ€“100โ€”
strength_clip_11optFLOAT1.00-100โ€“100โ€”
lora_12optCOMBOnone1 options: none
strength_model_12optFLOAT1.00-100โ€“100โ€”
strength_clip_12optFLOAT1.00-100โ€“100โ€”
lora_13optCOMBOnone1 options: none
strength_model_13optFLOAT1.00-100โ€“100โ€”
strength_clip_13optFLOAT1.00-100โ€“100โ€”
lora_14optCOMBOnone1 options: none
strength_model_14optFLOAT1.00-100โ€“100โ€”
strength_clip_14optFLOAT1.00-100โ€“100โ€”
lora_15optCOMBOnone1 options: none
strength_model_15optFLOAT1.00-100โ€“100โ€”
strength_clip_15optFLOAT1.00-100โ€“100โ€”
lora_16optCOMBOnone1 options: none
strength_model_16optFLOAT1.00-100โ€“100โ€”
strength_clip_16optFLOAT1.00-100โ€“100โ€”
lora_17optCOMBOnone1 options: none
strength_model_17optFLOAT1.00-100โ€“100โ€”
strength_clip_17optFLOAT1.00-100โ€“100โ€”
lora_18optCOMBOnone1 options: none
strength_model_18optFLOAT1.00-100โ€“100โ€”
strength_clip_18optFLOAT1.00-100โ€“100โ€”
lora_19optCOMBOnone1 options: none
strength_model_19optFLOAT1.00-100โ€“100โ€”
strength_clip_19optFLOAT1.00-100โ€“100โ€”
lora_20optCOMBOnone1 options: none
strength_model_20optFLOAT1.00-100โ€“100โ€”
strength_clip_20optFLOAT1.00-100โ€“100โ€”

Outputs (5)

NameTypeDescription
modelMODELโ€”
clipCLIPโ€”
lora_pathsSTRINGโ€”
lora_namesSTRINGโ€”
lora_foldersSTRINGโ€”