Powder Lora Loader
Stack or compare LoRAs without the spaghetti
- model
- clip
- MODEL
- CLIP
- prompt
- negative_prompt
- lora_info
If you've ever built a LoRA comparison grid in stock ComfyUI, you know the pain: a row of LoraLoaders, a row of prompts, and a maze of wires to cross them into every combination. The Powder Lora Loader exists to kill that. It loads up to 20 LoRAs on one node, applies them in two distinct modes, carries trigger words along for the ride, and outputs everything a batch workflow needs - model, CLIP, and the prompts themselves.
This is the node the whole E2GO "Powder" pack is built around, and it's the one worth installing the pack for even if you never touch the rest.
How it works
Two operating modes, chosen by the mode combo:
- Stack (all enabled) - every enabled LoRA is applied sequentially to a single model. You get one patched model, repeated for each prompt. This is your "load my usual 3-4 LoRAs and generate" mode.
- Single - each enabled LoRA gets its own copy of the model. The output is N_loras × N_prompts combinations. This is the comparison-grid mode, and it's the star feature here.
The combination_order combo controls how those combinations come out - LoRAs-first or prompts-first - which just changes the ordering you'll see when the results land in a grid. The disable_clip toggle skips CLIP weights when applying LoRAs, which makes test runs noticeably faster and is on by default; flip it off when you're doing real style comparison where the CLIP part of the LoRA matters.
Each dynamic slot has the settings you'd expect: Enabled, the LoRA file picker, Model Str / Clip Str strength, and trigger handling. The trigger nicety that puts this ahead of the stock loader: the trigger text auto-loads from a .txt file sitting next to the LoRA (same base name), and a Use Trigger toggle controls whether it's added to the prompt. So your LoRA folder becomes both weights and the prompt text that activates them.
The inputs and outputs that matter
Beyond model and clip (wire in from your UNETLoader/CLIPLoader), the important ones:
- mode - Stack vs Single. This decides everything about how the outputs are shaped.
- disable_clip - skip CLIP weights for faster testing.
- trigger_position - where the LoRA trigger lands in the assembled prompt.
Outputs:
- MODEL / CLIP - the patched models, as lists in Single mode.
- prompt / negative_prompt - STRING lists, one prompt per combination. This is what makes batch prompting work without a separate prompt-mixing node.
- lora_info - a JSON blob describing LoRA names, strengths, triggers, and order. Wire this into Powder Conditioner for automatic trigger assembly, and into Powder Grid Saver for labels.
Installation
One install covers all eight nodes in the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/E2GO/e2go-comfyui-nodes.git e2go_nodes
Restart ComfyUI, or search e2go_nodes / E2GO in ComfyUI Manager. No extra Python dependencies - pure Python on ComfyUI's runtime, verified against ComfyUI 0.17+.
Common issues
The caching here is aggressive and mostly invisible: raw safetensors are cached for 30 minutes and patchers are cached per model+CLIP pair, so repeated comparisons with the same LoRAs are fast. The flip side is the classic stale-result trap - if you change a LoRA file on disk and the loader keeps giving you old behavior, clear the caches (see Powder Cache Stats and Powder Clear Conditioning Cache).
The other gotcha is trigger handling. If a LoRA has no .txt next to it, the trigger slot stays empty - nothing is invented for you, and without trigger text some LoRAs quietly do much less than they should. Drop a .txt with the trigger words next to each LoRA and the loader picks it up automatically. And if your comparison grid suddenly has way more outputs than you expected, you're in Single mode with multiple prompts - that N_loras × N_prompts multiplication is doing its job, and the grid saver is where that becomes readable.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| mode | COMBO | 2 options: Stack (all enabled), Single | |
| combination_order | COMBO | 2 options: Loras first, Prompts first | |
| lora_config | STRING | [] | — |
| disable_clip | BOOLEAN | true | — |
| trigger_position | COMBO | 2 options: After prompt, Before prompt | |
| promptopt | STRING | — | |
| negative_promptopt | STRING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| prompt | STRING | — |
| negative_prompt | STRING | — |
| lora_info | STRING | — |