AK XZ Batch Lora
Which LoRA actually wins? Now you'll know
- model_0
- con_0
- model_1
- con_1
- model_2
- con_2
- model_3
- con_3
- model_4
- con_4
- model_5
- con_5
- model_6
- con_6
- model_7
- con_7
- model_8
- con_8
- model_9
- con_9
- model_10
- con_10
- models
- conds
- xz_config
Every LoRA collector hits the same wall: you've got eight variants of "the same style" and no idea which one actually works with your current checkpoint. AK XZ Batch Lora, from the ComfyUI-AK-XZ-Axis pack, turns that into one run and one labeled strip instead of eight manual generations. It's honestly the node in this pack that got recommended in the wild for exactly that job - "rotate between LoRAs with a single prompt" is a recurring r/comfyui question, and this is a clean answer.
What it actually does - and what it doesn't
Here's the part to internalize: this node does not load LoRAs. It's not a LoraLoader. Each slot takes an already-loaded model and an already-encoded positive con conditioning, as a pair. So the per-LoRA setup is:
- One LoraLoader per LoRA you want to test, all fed from the same checkpoint.
- One CLIP Text Encode (positive) - usually the same prompt for every slot.
- Feed each slot's
model+coninto this node.
The node collects up to eleven of those pairs (model_0/con_0 through model_10/con_10), hands the KSampler a list of models and a list of conditionings, and it runs once per pair. Ten or eleven LoRAs in one queue on the same seed: that's the whole value.
Why no negative input?
Deliberate design choice, straight from the README: the author left negatives out to avoid overcomplicating the node. Your negative conditioning just goes directly to the KSampler as usual - it stays constant across the whole run, which is what you want for a fair LoRA comparison anyway. If the pack's other Batch node handles prompts with negatives, this one is deliberately the "models only" lane.
The inputs and outputs that matter
Slots are dynamic, like the prompts node - model_1/con_1 and up only appear once an earlier pair is filled. Inputs you'll actually touch: model_0, con_0 (both required) and however many more pairs you wire up.
Outputs:
models(MODEL list) → KSamplermodelconds(CONDITIONING list) → KSamplerpositivexz_config(STRING) → AK XZ Axis Plot for the labeled strip
In X mode each slot becomes one labeled image ("Lora: 0", "Lora: 1", ...). In Z mode (with xz_config connected) the list pads or trims to ride along under an existing X-axis sweep, so "which LoRA at which cfg" is one run, not ten.
Install
ComfyUI Manager → search AK XZ → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/akawana/ComfyUI-AK-XZ-Axis.git
Restart ComfyUI. No pip packages, no model downloads - the pack is pure Python on ComfyUI's own stack. The repo's xz_workflow_loras.json in /workflows/ shows the whole LoraLoader-per-slot pattern wired up.
Where it stumbles
It's not a folder scanner. If you want "iterate over every .safetensors in a directory," this node isn't it - the author has said so directly, and you'd be better served by a LoRA randomizer or a folder-iteration node. Also, the slot labels are just indices ("Lora: 3"), so if you're comparing ten LoRAs you'll want to keep a mental map or rename your LoraLoaders. And as ever with this young pack (December 2025, small footprint): the README and demo workflows are the whole manual, and there's no big community to lean on if you hit a wall.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| model_0 | MODEL | — | |
| con_0 | CONDITIONING | — | |
| xz_configopt | STRING | — | |
| model_1opt | MODEL | — | |
| con_1opt | CONDITIONING | — | |
| model_2opt | MODEL | — | |
| con_2opt | CONDITIONING | — | |
| model_3opt | MODEL | — | |
| con_3opt | CONDITIONING | — | |
| model_4opt | MODEL | — | |
| con_4opt | CONDITIONING | — | |
| model_5opt | MODEL | — | |
| con_5opt | CONDITIONING | — | |
| model_6opt | MODEL | — | |
| con_6opt | CONDITIONING | — | |
| model_7opt | MODEL | — | |
| con_7opt | CONDITIONING | — | |
| model_8opt | MODEL | — | |
| con_8opt | CONDITIONING | — | |
| model_9opt | MODEL | — | |
| con_9opt | CONDITIONING | — | |
| model_10opt | MODEL | — | |
| con_10opt | CONDITIONING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| models | MODEL | — |
| conds | CONDITIONING | — |
| xz_config | STRING | — |