โป๐ Loop Lora Selector
Run every LoRA in turn to compare them
- model
- clip
- model
- clip
- lora_path
- lora_name
- lora_folder
This is the one you reach for when you're testing LoRAs. Instead of picking one, Loop Lora Selector runs all the LoRAs you list - one after another, same prompt, same seed - so you get a side-by-side sheet of what each one does. The author's headline use case is dead-on: checking whether a LoRA you just trained came out under-trained, over-trained, or just right, by looping the same generation across your candidate epochs and eyeballing the difference. That's a workflow every LoRA trainer does constantly, and doing it by hand is miserable.
It's also great for comparing a shelf of style LoRAs against one fixed base image.
How it works
You declare a slot count and fill in LoRAs, each with its own strength pair. The node then outputs a list - model, clip, and metadata for every LoRA in the batch - and ComfyUI iterates the downstream graph once per item. Keep your seed and prompt fixed and the only thing changing between images is the LoRA, which is exactly the controlled comparison you want. Crucially, each slot has its own strength_model and strength_clip, so you can loop the same LoRA at several strengths to find its sweet spot, or loop different LoRAs each at their own tuned weight.
The inputs and outputs that matter
number_of_loras(INT, default 3) - how many slots, up to 20.model(MODEL) andclip(CLIP) - the base each LoRA patches.lora_1โฆlora_20(dropdowns) - your candidates; they show "none" until you have LoRA files installed.strength_model_N/strength_clip_N(FLOAT, default 1.0) - a per-slot strength pair. This is the key difference from the random selector, which shares one strength across the pool. Here every LoRA (or every strength you're testing) gets its own.
Outputs are all lists: model, clip, lora_path, lora_name, lora_folder. Wire model/clip into your sampler as usual, and route lora_name into a Show or a filename so each image in the sweep is labelled with the LoRA that made it - otherwise you'll have a grid you can't tell apart.
How to install it
ComfyUI Manager โ Bjornulf_custom_nodes โ install โ restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/justUmen/Bjornulf_custom_nodes
pip install -r Bjornulf_custom_nodes/requirements.txt
then restart. No special dependency beyond ComfyUI's LoRA handling.
Common issues & troubleshooting
The images look different for reasons other than the LoRA. Pin your seed and don't touch the prompt across the loop. If the seed randomizes, you're comparing noise as much as LoRAs and the test is worthless.
I can't tell which image used which LoRA. Route the lora_name list output into a Show text node or bake it into the save filename. The whole point of a comparison is knowing what you're looking at.
Slots say "none." No LoRA files in models/loras. Add them and refresh.
Testing training epochs - which one's best? Per the LoRA-training KB, the last epoch usually isn't the best, which is exactly why people save intermediates and loop them. Load several epochs into the slots, loop, and pick by eye. If a candidate bleeds style even at low strength it's over-trained; if the concept barely shows at strength 1.0 it's under-trained.
It's slow. You're running N full generations - that's inherent to a sweep. Test at low steps / small resolution first, then re-run the winner at full quality.
Inputs (63)
| Name | Type | Default | Description |
|---|---|---|---|
| number_of_loras | INT | 31โ20 | โ |
| model | MODEL | โ | |
| clip | CLIP | โ | |
| lora_1opt | COMBO | none | 1 options: none |
| strength_model_1opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_1opt | FLOAT | 1.00-100โ100 | โ |
| lora_2opt | COMBO | none | 1 options: none |
| strength_model_2opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_2opt | FLOAT | 1.00-100โ100 | โ |
| lora_3opt | COMBO | none | 1 options: none |
| strength_model_3opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_3opt | FLOAT | 1.00-100โ100 | โ |
| lora_4opt | COMBO | none | 1 options: none |
| strength_model_4opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_4opt | FLOAT | 1.00-100โ100 | โ |
| lora_5opt | COMBO | none | 1 options: none |
| strength_model_5opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_5opt | FLOAT | 1.00-100โ100 | โ |
| lora_6opt | COMBO | none | 1 options: none |
| strength_model_6opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_6opt | FLOAT | 1.00-100โ100 | โ |
| lora_7opt | COMBO | none | 1 options: none |
| strength_model_7opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_7opt | FLOAT | 1.00-100โ100 | โ |
| lora_8opt | COMBO | none | 1 options: none |
| strength_model_8opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_8opt | FLOAT | 1.00-100โ100 | โ |
| lora_9opt | COMBO | none | 1 options: none |
| strength_model_9opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_9opt | FLOAT | 1.00-100โ100 | โ |
| lora_10opt | COMBO | none | 1 options: none |
| strength_model_10opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_10opt | FLOAT | 1.00-100โ100 | โ |
| lora_11opt | COMBO | none | 1 options: none |
| strength_model_11opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_11opt | FLOAT | 1.00-100โ100 | โ |
| lora_12opt | COMBO | none | 1 options: none |
| strength_model_12opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_12opt | FLOAT | 1.00-100โ100 | โ |
| lora_13opt | COMBO | none | 1 options: none |
| strength_model_13opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_13opt | FLOAT | 1.00-100โ100 | โ |
| lora_14opt | COMBO | none | 1 options: none |
| strength_model_14opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_14opt | FLOAT | 1.00-100โ100 | โ |
| lora_15opt | COMBO | none | 1 options: none |
| strength_model_15opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_15opt | FLOAT | 1.00-100โ100 | โ |
| lora_16opt | COMBO | none | 1 options: none |
| strength_model_16opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_16opt | FLOAT | 1.00-100โ100 | โ |
| lora_17opt | COMBO | none | 1 options: none |
| strength_model_17opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_17opt | FLOAT | 1.00-100โ100 | โ |
| lora_18opt | COMBO | none | 1 options: none |
| strength_model_18opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_18opt | FLOAT | 1.00-100โ100 | โ |
| lora_19opt | COMBO | none | 1 options: none |
| strength_model_19opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_19opt | FLOAT | 1.00-100โ100 | โ |
| lora_20opt | COMBO | none | 1 options: none |
| strength_model_20opt | FLOAT | 1.00-100โ100 | โ |
| strength_clip_20opt | FLOAT | 1.00-100โ100 | โ |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| model | MODEL | โ |
| clip | CLIP | โ |
| lora_path | STRING | โ |
| lora_name | STRING | โ |
| lora_folder | STRING | โ |