Load LoRA Dual
Two LoRAs, one node, independent strengths
- model
- clip
- models
- clips
Stacking LoRAs is ComfyUI 101 - a style LoRA on top of a character LoRA, or a detail enhancer layered over a base - and the stock way to do it is a daisy chain of LoraLoader nodes. Load LoRA Dual collapses that into a single node: two LoRA slots, each with independent model and CLIP strengths, applied in one place. It's the "two loaders glued together" convenience node, and for the common two-LoRA case it genuinely declutters the graph.
The inputs mirror the core LoraLoader twice over, so everything you already know about LoRA strength applies:
Inputs and outputs
model,clip- the diffusion and CLIP models to apply LoRAs to.lora_name,strength_model,strength_clip- first LoRA and its strengths.lora_name_2,strength_model_2,strength_clip_2- second LoRA and its strengths.models(MODEL list),clips(CLIP list) out.
Strengths range −100 to 100; negative strengths are allowed and behave like inversions. The tooltips (from the pack's own schema) are explicit that "this value can be negative," which is the same contract as core ComfyUI.
How it works
Under the hood it instantiates the standard LoraLoader and calls load_lora twice - once per LoRA - then returns the two results. The quirk to know: the outputs are declared as lists. You get [model1, model2] on the models socket, not a single merged model. Wire these into nodes that accept list inputs, or index them - a plain sampler expecting one MODEL won't take the list directly. That's the biggest "huh?" moment people hit with this node, and it's worth checking whether it's been changed to a merged output in the version you're running.
Where it fits
Anywhere two LoRAs ride along with the same base model and you want both strengths tweakable from one panel instead of two. If your stack is three or more LoRAs, or you want each applied conditionally, the per-node approach (or a LoRA stack pack) is the better fit.
Install
FairLab installs as one pack via ComfyUI Manager (search ComfyUI-FairLab) or:
cd ComfyUI/custom_nodes
git clone https://github.com/yanhuifair/ComfyUI-FairLab.git
cd ComfyUI-FairLab
pip install -r requirements.txt
Restart. It lists LoRA names from your normal loras/ folder, so no model downloads beyond the LoRAs you already use. It's under Fair/loaders.
Gotchas
- The list-typed outputs are the thing to double-check first when this node "doesn't work." If your downstream sampler rejects the socket, that's why.
- Both LoRAs apply to the same base model independently - the second doesn't stack on the first's result the way a daisy chain does. That's usually fine; the results are nearly identical for two light LoRAs, but the order semantics differ if a LoRA is sensitive to being applied on top of another.
- No LoRA-file dependencies beyond what you already have;
lora_namepulls from the standard loras directory.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The diffusion model the LoRA will be applied to. | |
| clip | CLIP | The CLIP model the LoRA will be applied to. | |
| lora_name | COMBO | The name of the LoRA. | |
| strength_model | FLOAT | 1.00-100–100 | How strongly to modify the diffusion model. This value can be negative. |
| strength_clip | FLOAT | 1.00-100–100 | How strongly to modify the CLIP model. This value can be negative. |
| lora_name_2 | COMBO | The name of the LoRA. | |
| strength_model_2 | FLOAT | 1.00-100–100 | How strongly to modify the diffusion model. This value can be negative. |
| strength_clip_2 | FLOAT | 1.00-100–100 | How strongly to modify the CLIP model. This value can be negative. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| models | MODEL | The modified diffusion model. |
| clips | CLIP | The modified CLIP model. |