Nifty Lora Stack
Define your LoRA stack once, apply it anywhere
- loras
- lora_stack
- lora_stack
Nifty Lora Stack is the "recipe" half of this pack's two-piece LoRA system. It doesn't touch a model at all - it just builds a reusable NIFTY_LORA_STACK wire describing which LoRAs you want and at what strengths. Then you hand that stack to Nifty Apply Lora Stack (the node that actually patches a model). Defining and applying separately sounds like extra steps, and it is - but it earns its keep the moment you want the same LoRA loadout on multiple models.
How it works
Like the Nifty Lora Loader, you edit a table widget (NIFTY_LORA_LOADER): add rows, pick a LoRA, set strength, toggle enabled. The node serializes those rows into a stack object - each entry records the file name, the model strength, and a separate clip strength. The stack comes out on the lora_stack output, ready to plug into an Apply node or into another Nifty Lora Stack.
That last bit is the interesting one: the lora_stack input is optional, and when you connect an existing stack into it, the new rows are appended to the old ones. You can chain stacks together - a base "always-on style" stack feeding into a per-character stack - and the combined recipe flows out. The same skip rules as the loader apply: disabled rows and rows at strength 0.0 are dropped from the output entirely.
Inputs and outputs
- loras - the row table you edit (required).
- lora_stack - optional existing stack to extend; new rows append after it.
- lora_stack (output) - the combined stack, ready for an Apply node.
Why you'd bother
Two workflows make this pattern genuinely better than a plain loader:
- Same LoRAs, multiple checkpoints. You're comparing SDXL models, or you have a base model and a turbo variant you switch between. Build the stack once, wire it to two Apply nodes, and when you change a strength you change it in one place instead of editing parallel chains.
- Stacked stacks. Because stacks can extend other stacks, you can keep a shared style stack and layer a character stack on top of it without duplicating rows.
If you only ever run one model and one fixed set of LoRAs, this is overhead you don't need - the Nifty Lora Loader does the whole job in one node. Come back to this when the loadout starts getting reused.
Installing it
Part of the Nifty Nodes pack, so install the pack once and all its nodes come along:
cd ComfyUI/custom_nodes
git clone https://github.com/Stibo/comfyui-nifty-nodes
or use ComfyUI Manager (search "Nifty Nodes"), then restart. No downloads beyond the pack itself. A heads-up for anyone installing fresh: the pack targets the newer ComfyUI V3 API, so if you can't find the nodes after a restart, update ComfyUI. This pack is young and has essentially no community footprint on the usual forums, so the README plus the source are your best troubleshooting references.
Gotchas
The stack only carries names and strengths - it's inert until an Apply node runs it, so a stack with no Apply node silently does nothing. And because stacks can chain, it's worth remembering the order: appended rows go after the incoming stack's rows, and LoRAs apply sequentially, so later rows are the ones that win conflicts.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| loras | NIFTY_LORA_LOADER | — | |
| lora_stackopt | NIFTY_LORA_STACK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| lora_stack | NIFTY_LORA_STACK | — |