✦ ADVANCED LORA LOADER
One node for your whole LoRA stack — and it tells you when a LoRA is doing nothing
- model
- clip
- MODEL
- CLIP
- trigger_words
- lora_tags
If you stack more than two LoRAs you've built the ladder: Load LoRA → Load LoRA → Load LoRA, each wired hand to hand and each a row you have to open to remember its strength. The community default here has been rgthree's Power Lora Loader for years. ✦ ADVANCED LORA LOADER (CrypsAdvancedLoraLoader) is that idea with modern extras: a searchable picker with previews and Civitai info, trigger words as an output, and separate audio and video strengths for the models whose LoRA files now carry audio heads.
How it works
The node UI is the list, and the list lives in the stack input as JSON - you don't edit it by hand. At queue time it resolves each row against your models/loras pool and applies them one at a time through ComfyUI's own LoRA loading path. Nothing exotic happens to the weights: it's the patches a stock Load LoRA gives you, in row order, with the bookkeeping in one place.
That bookkeeping is the point. After each row the node counts how many weights it actually patched, against the layer count it read from the file's safetensors header, so every row reports a status instead of staying silent: ✓ patched as expected, ◐ partly matched, ⚠ matched nothing, ✖ file missing, ↪ found in a different loras subfolder (click to re-save the path).
⚠ alone justifies the install. Base-model mismatch is the number one reason a LoRA "doesn't work," and every other loader shrugs while it happens. Two more from the code: keys containing audio get split off and scaled separately (that's the V× / A× multipliers), and a run that only changed trigger words or switched rows off reuses the previous MODEL instead of re-patching.
What you actually set
- model - required. Whatever loaded your checkpoint or GGUF goes here.
- clip - optional. Wire it when your LoRAs also trained the text encoder, i.e. the SDXL / Pony / SD1.5 world. On Flux, Qwen, Krea and most video bases the LoRAs are model-only, so leave it unconnected.
- stack - the JSON the UI writes for you. You'd only open it to paste in a bare row list, which the author accepts for
stack_datablobs from DaSiWa's Advanced LoRA Loader.
Per row: the on/off switch, a strength pill (drag to scrub, click to type, ‹ › for ±0.05, Shift for ±0.01) and a T toggle that unlocks a per-row CLIP strength. On LTX-2.3 and MiniMax H3 LoRAs you also get V× and A×: set A× to 0 for a character's look without their voice.
Outputs: MODEL goes to your sampler or guider chain; CLIP goes to the text-encode path and is empty if you didn't wire clip; trigger_words gives you the words ticked in each LoRA's ⓘ panel, comma separated, for the active rows - feed it into your positive prompt; lora_tags gives <lora:name:strength> per active row, for metadata, filenames or captions.
Install
ComfyUI Manager / Registry: search crypswolfy69. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/babydjac/crypswolfy69-nodes.git
pip install -r crypswolfy69-nodes/requirements.txt
Restart and hard-refresh: the row list is a frontend extension, so a cached tab shows an empty node. Dependencies are light: aiohttp, plus psutil if you want the RAM cap on the ⚡ keep-in-memory toggle. aria2c is only needed by the pack's Model Hub for Hugging Face downloads, not by this node. You do want a current ComfyUI: the pack uses the newer backend authoring API (io.ComfyNode / io.Schema) and asks for 1.0.0+, so on an old build the node won't show up at all.
Where people get burned
Badge says ⚠ or a low ◐. Architecture mismatch - a Flux LoRA on SDXL, or Pony on base SDXL (same code, not the same behaviour). Badge is ✓ but the output ignores the LoRA? Then it's the prompt: most LoRAs need a trigger word, which is what the ⓘ panel and the trigger_words output are for. Anime LoRAs on Illustrious/Pony/NoobAI usually want CLIP skip 2 as well, via Clip Set Last Layer at -2.
Strengths aren't universal. 0.5–0.8 is SDXL-lineage advice. Z-Image character LoKrs are commonly run at 1.0–1.5, and pulling them down costs likeness - trust the model page over the folk rule.
Black images or NaN when stacking. Reorder - larger, more structurally invasive LoRAs first, small detail ones after.
A missing LoRA stops the queue, naming the file. Deliberate - and the ↪ resolution means LoRAs sorted into base-model subfolders like loras/Krea 2/… are still found by name.
Dynamic-widget UIs and frontend rewrites. A node that draws its own rows in JS is exactly the class of node ComfyUI's Nodes 2.0 rewrite broke elsewhere - rgthree's Power Lora Loader being the famous casualty. If your rows render as stacked text fields or the strength pill stops responding after updating ComfyUI, turn Nodes 2.0 off before filing a bug.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Diffusion model the LoRA stack is applied to. | |
| stack | STRING | {"v":1,"cache":false,"rows":[]} | The LoRA list, edited in the node UI (JSON). |
| clipopt | CLIP | Optional. Wire it when your LoRAs also train the text encoder (SDXL/Pony/SD1.5). |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | Patched CLIP (empty when no CLIP is wired). |
| trigger_words | STRING | Trigger words picked in each LoRA's ⓘ panel, for the active LoRAs, comma separated. |
| lora_tags | STRING | <lora:name:strength> for each active LoRA — for metadata, captions or file names. |