Nodes/zsq_prompt/Simple Lora Stack
ComfyUI Node

Simple Lora Stack

Five LoRAs in one node, actually applied — the one you'd reach for

By windfancy·Created 2 years ago·Updated 5 months ago· 2
Simple Lora Stack
  • model
  • clip
  • model
  • clip
num_loras1
lora_1_name
lora_1_strength1.00
lora_2_name
lora_2_strength1.00
lora_3_name
lora_3_strength1.00
lora_4_name
lora_4_strength1.00
lora_5_name
lora_5_strength1.00

Simple Lora Stack (loraStack_2) from the zsq_prompt pack is the useful sibling of loraStack: where that node just builds a LoRA shopping list for the pack's combo samplers, this one does the work. Feed it a model and CLIP, pick up to five LoRAs with strengths, and it returns a modified model and CLIP - exactly like chaining five LoraLoader nodes, except it's one node on your canvas.

How it works

The inputs are model, clip, num_loras, and the same lora_N_name / lora_N_strength pairs as its sibling. Under the hood it uses ComfyUI's own comfy.sd.load_lora_for_models for each selected LoRA in sequence, feeding the result of each into the next - so LoRAs stack cumulatively on the same model. The tooltip on the clip input is the author's own description: "The CLIP model used for encoding the text." Names come from your models/loras/ folder, "None" skips a slot, and it's a real loader that prints a Loading LoRA: <path> line to the console so you can confirm what got applied.

Same five-slot ceiling as the sibling, same strength range (0 to 2.5, default 1.0).

Inputs and outputs that matter

  • model / clip - wire these from your checkpoint loader (or from this pack's zsqcheckpoint).
  • num_loras - how many slots to activate, 1–5.
  • lora_N_name - the LoRA file to apply. "None" = skip.
  • lora_N_strength - per-LoRA weight. Start at 0.5–0.8, not 1.0 - the community's standing advice is that default strength is often too much for many LoRAs.
  • Outputs: model, clip - the patched versions, ready for a sampler.

Where it fits

Any graph that wants a compact multi-LoRA loader. Stack a character LoRA and a style LoRA in one node instead of two, then wire straight into a KSampler. It plays especially well with the pack's zsqcheckpoint for a minimal loader→sampler chain. Just remember the LoRA checklist when results look off: is the LoRA trained for your base model's architecture, and does its trigger word appear in your prompt? The node applies faithfully; it can't fix incompatible pairings (and Pony/Illustrious/SDXL LoRAs are all selectable but often not cross-compatible, a classic gotcha).

Installing zsq_prompt

Shared pack install. ComfyUI Manager → search zsq_prompt → install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/windfancy/zsq_prompt

Restart ComfyUI. Heavy shared deps (transformers, opencv-python, opencv-contrib-python, scikit-image, timm, onnx, ultralytics) come with the pack; if Manager flags "conflicting with zsq_prompt" on a workflow, that's dependency-overlap noise, only meaningful once the pack is actually installed. No LoRA files are downloaded - it reads your existing models/loras/ folder.

Gotchas

  • Strength applies equally to model and CLIP - there's no separate model/CLIP strength split like some fancier loaders offer.
  • LoRAs apply in slot order. Order can matter for how interactions resolve, so if a stacked result looks wrong, try reordering before touching strengths.
  • If a LoRA path is missing, the node logs the load attempt and moves on - a broken file won't necessarily error loudly. Watch the console.
CategoryZSQ/Loaders

Inputs (13)

NameTypeDefaultDescription
modelMODEL
clipCLIPThe CLIP model used for encoding the text.
num_lorasINT11–5
lora_1_nameoptCOMBO1 options: None
lora_1_strengthoptFLOAT1.000–2.5
lora_2_nameoptCOMBO1 options: None
lora_2_strengthoptFLOAT1.000–2.5
lora_3_nameoptCOMBO1 options: None
lora_3_strengthoptFLOAT1.000–2.5
lora_4_nameoptCOMBO1 options: None
lora_4_strengthoptFLOAT1.000–2.5
lora_5_nameoptCOMBO1 options: None
lora_5_strengthoptFLOAT1.000–2.5

Outputs (2)

NameTypeDescription
modelMODEL
clipCLIP