Nodes/Comfyui-ZiT-Lora-loader/Z-Image Turbo LoRA Stack
ComfyUI Node

Z-Image Turbo LoRA Stack

10 Slots, Per-Slot Strength, and the QKV Fix Built In

By capitan01R·Created 7 months ago·Updated 7 months ago· 36
Z-Image Turbo LoRA Stack
  • model
  • MODEL
◄lora_1▾►
◄strength_11.00►
◄enabled_1true►
◄fuse_qkv_1true►
◄lora_2▾►
◄strength_21.00►
◄enabled_2true►
◄fuse_qkv_2true►
◄lora_3▾►
◄strength_31.00►
◄enabled_3true►
◄fuse_qkv_3true►
◄lora_4▾►
◄strength_41.00►
◄enabled_4true►
◄fuse_qkv_4true►
◄lora_5▾►
◄strength_51.00►
◄enabled_5true►
◄fuse_qkv_5true►
◄lora_6▾►
◄strength_61.00►
◄enabled_6true►
◄fuse_qkv_6true►
◄lora_7▾►
◄strength_71.00►
◄enabled_7true►
◄fuse_qkv_7true►
◄lora_8▾►
◄strength_81.00►
◄enabled_8true►
◄fuse_qkv_8true►
◄lora_9▾►
◄strength_91.00►
◄enabled_9true►
◄fuse_qkv_9true►
◄lora_10▾►
◄strength_101.00►
◄enabled_10true►
◄fuse_qkv_10true►

Single-LoRA workflows are the Z-Image default, but eventually you want a character plus a style plus a detail LoRA in one image. On SDXL that was just tedious. On Z-Image it's also a trap - the community has burned itself stacking multiple LoRAs at full strength and watching quality collapse into mush. If you're going to stack, do it with control. That's the whole reason the Z-Image Turbo LoRA Stack exists.

It's the same architecture-aware loading as the single Z-Image Turbo LoRA Loader - fuses separate to_q/to_k/to_v keys into Z-Image's fused QKV format, remaps to_out.0 → out, builds the key map with ComfyUI's z_image_to_diffusers() - but applied to up to 10 LoRAs in sequence, all in one node. Without that fusion step, most diffusers-format Z-Image LoRAs quietly drop their attention weights on the stock loader; the Stack bakes the fix into every slot.

The inputs that matter

One MODEL in, one MODEL out. Then ten identical slots, each with four controls:

  • lora_N - dropdown of your models/loras folder, default None.
  • strength_N - per-slot strength, −20 to 20, default 1.
  • enabled_N - on/off toggle, default on. This is the killer feature.
  • fuse_qkv_N - the QKV fusion toggle, default on. Set it to Direct only if the file already ships in fused format.

How it works

The node builds one shared key map from your model, then walks the slots in order: for each enabled slot it loads the LoRA, fuses QKV if the file has separate Q/K/V keys, patches a clone of the model, and chains that result into the next slot. That ordering matters - it's not a weighted blend. Each subsequent LoRA patches on top of the previous one, so slot order is effectively your layering order.

Why use this over chaining three LoraLoaders? No spaghetti, one node, and per-slot bypass. enabled_N alone is worth it: flip a slot on and off to A/B test a combination without disconnecting anything, and strength_N lets you park a temperamental LoRA at 0.7 while everything else sits at 1.

The honest caveat

The community consensus on Z-Image is that more than one LoRA at once tends to collapse quality, and LoKR-format LoRAs are the partial exception. This node doesn't magically fix that - nothing does. What it does is make it cheap to find out. For most people the winning config ends up being one character LoRA plus one light style LoRA with everything else toggled off, and this node is the fastest way to discover that for your specific files.

Installing and troubleshooting

cd ComfyUI/custom_nodes
git clone https://github.com/capitan01R/Comfyui-ZiT-Lora-loader

Restart ComfyUI. It's also in ComfyUI Manager under the pack title Comfyui-ZiT-Lora-loader. No extra dependencies, no model downloads - same story as the single loader, since it's literally the same codebase (the Stack subclasses the Loader).

If a slot "does nothing," check the console: each one logs [Z-Image LoRA Stack] Slot N: name (N keys). A slot with zero useful keys means the file's naming doesn't line up - try toggling fuse_qkv off for that file or running it through the single loader to see what's happening. A strength of 0 or an off toggle skips the slot cleanly, so those are your debugging switches too. And remember the base rule: Turbo LoRAs won't work on Z-Image Base at all, stack node or not.

Categoryloaders/Z-Image

Inputs (41)

NameTypeDefaultDescription
modelMODEL—
lora_1optCOMBO1 options: None
strength_1optFLOAT1.00-20–20—
enabled_1optBOOLEANtrue—
fuse_qkv_1optBOOLEANtrue—
lora_2optCOMBO1 options: None
strength_2optFLOAT1.00-20–20—
enabled_2optBOOLEANtrue—
fuse_qkv_2optBOOLEANtrue—
lora_3optCOMBO1 options: None
strength_3optFLOAT1.00-20–20—
enabled_3optBOOLEANtrue—
fuse_qkv_3optBOOLEANtrue—
lora_4optCOMBO1 options: None
strength_4optFLOAT1.00-20–20—
enabled_4optBOOLEANtrue—
fuse_qkv_4optBOOLEANtrue—
lora_5optCOMBO1 options: None
strength_5optFLOAT1.00-20–20—
enabled_5optBOOLEANtrue—
fuse_qkv_5optBOOLEANtrue—
lora_6optCOMBO1 options: None
strength_6optFLOAT1.00-20–20—
enabled_6optBOOLEANtrue—
fuse_qkv_6optBOOLEANtrue—
lora_7optCOMBO1 options: None
strength_7optFLOAT1.00-20–20—
enabled_7optBOOLEANtrue—
fuse_qkv_7optBOOLEANtrue—
lora_8optCOMBO1 options: None
strength_8optFLOAT1.00-20–20—
enabled_8optBOOLEANtrue—
fuse_qkv_8optBOOLEANtrue—
lora_9optCOMBO1 options: None
strength_9optFLOAT1.00-20–20—
enabled_9optBOOLEANtrue—
fuse_qkv_9optBOOLEANtrue—
lora_10optCOMBO1 options: None
strength_10optFLOAT1.00-20–20—
enabled_10optBOOLEANtrue—
fuse_qkv_10optBOOLEANtrue—

Outputs (1)

NameTypeDescription
MODELMODEL—