Nodes/ComfyUI Easy Use/XY Inputs: Lora //EasyUse
ComfyUI Node Runs on cloud

XY Inputs: Lora //EasyUse

Lora — sweep LoRAs across an XY plot grid

By yolain·Created 3 years ago·Updated 8 days ago· 2,633
XY Inputs: Lora //EasyUse
  • optional_lora_stack
  • X or Y
input_mode
lora_count3
model_strength1.00
clip_strength1.00
lora_name_1
model_str_11.00
clip_str_11.00
lora_name_2
model_str_21.00
clip_str_21.00
lora_name_3
model_str_31.00
clip_str_31.00
lora_name_4
model_str_41.00
clip_str_41.00
lora_name_5
model_str_51.00
clip_str_51.00
lora_name_6
model_str_61.00
clip_str_61.00
lora_name_7
model_str_71.00
clip_str_71.00
lora_name_8
model_str_81.00
clip_str_81.00
lora_name_9
model_str_91.00
clip_str_91.00
lora_name_10
model_str_101.00
clip_str_101.00
display_trigger_word

When you've got five LoRAs and no idea which one - or which strength - actually looks best, you stop eyeballing and make a grid. easy XYInputs: Lora is the axis feeder for Easy-Use's XY plot: it produces one axis of a comparison grid where each cell swaps in a different LoRA (or a different strength of the same one), and the plot renders them side by side with labels. It's the difference between generating twelve images and squinting at your filenames, and getting a single labeled contact sheet you can actually read.

This is the honest way to answer "how strong should I run this LoRA?" A LoRA at 0.6 versus 0.9 versus 1.2 can be the difference between "adds the style" and "melts the face," and the only reliable way to see that is to hold everything else fixed and vary the one thing.

How it works

It doesn't generate anything by itself. It builds a list of LoRA configurations - names, model strengths, CLIP strengths - and outputs them as an X_Y axis object. You plug that into the X (or Y) input of easy XYPlot / easy XYPlotAdvanced, and the plot node runs your base workflow once per entry, changing only the LoRA down that axis, then tiles the results with the value printed on each. Pair a Lora axis on X with a different axis (say seed, or CFG) on Y and you get a full matrix.

The inputs and outputs that matter

  • input_mode - Lora Names (each column is just a different LoRA at the default strength) or Lora Names+Weights (each column carries its own model/CLIP strength). Pick the second when you want to sweep strength, not just swap files.
  • lora_count - how many entries the axis has (up to 10). This sets how many columns/rows you get.
  • model_strength / clip_strength - the global default strengths applied to every entry, unless you override per-entry.
  • lora_name_1 … lora_name_10 with their model_str_N / clip_str_N - the individual slots. Fill as many as your lora_count. Leaving one at None gives you a useful baseline "no LoRA" cell for comparison.

Optional: optional_lora_stack to prepend an existing LoRA stack (so every cell shares a common base), and display_trigger_word to print trigger words on the labels. Output is a single X or Y (X_Y type) - wire it into the plot node's axis input.

How to install it

Ships in ComfyUI-Easy-Use. ComfyUI Manager: search ComfyUI-Easy-Use, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Use

then install.bat (Windows) or pip install -r ComfyUI-Easy-Use/requirements.txt, and restart. No models needed - it reads your existing models/loras folder.

Common issues & troubleshooting

Nothing plots. This node is only an axis; on its own it produces no image. It has to feed an easy XYPlot node, and that plot node has to be driving an actual generation graph. If your canvas is empty, you've wired the axis but not connected it to the plot, or the plot to a sampler.

Blank cells / "None" columns. A slot left at None renders as a no-LoRA cell - sometimes that's what you want (a baseline), sometimes it means you set lora_count higher than the number of LoRAs you actually filled. Match the two.

Grid explodes / takes forever. Every cell is a full generation. A 10-wide Lora axis crossed with a 10-tall second axis is 100 renders. Keep counts modest while you're exploring, and remember a big grid on a rented GPU is a real bill.

Strengths don't vary. If you meant to sweep strength but every cell looks identical, check that input_mode is set to Lora Names+Weights - in plain Lora Names mode the per-entry strength fields are ignored and everything runs at the global default.

CategoryEasyUse/XY Inputs

Inputs (36)

NameTypeDefaultDescription
input_modeCOMBO2 options: Lora Names, Lora Names+Weights
lora_countINT30–10
model_strengthFLOAT1.00-10–10
clip_strengthFLOAT1.00-10–10
lora_name_1COMBO1 options: None
model_str_1FLOAT1.00-10–10
clip_str_1FLOAT1.00-10–10
lora_name_2COMBO1 options: None
model_str_2FLOAT1.00-10–10
clip_str_2FLOAT1.00-10–10
lora_name_3COMBO1 options: None
model_str_3FLOAT1.00-10–10
clip_str_3FLOAT1.00-10–10
lora_name_4COMBO1 options: None
model_str_4FLOAT1.00-10–10
clip_str_4FLOAT1.00-10–10
lora_name_5COMBO1 options: None
model_str_5FLOAT1.00-10–10
clip_str_5FLOAT1.00-10–10
lora_name_6COMBO1 options: None
model_str_6FLOAT1.00-10–10
clip_str_6FLOAT1.00-10–10
lora_name_7COMBO1 options: None
model_str_7FLOAT1.00-10–10
clip_str_7FLOAT1.00-10–10
lora_name_8COMBO1 options: None
model_str_8FLOAT1.00-10–10
clip_str_8FLOAT1.00-10–10
lora_name_9COMBO1 options: None
model_str_9FLOAT1.00-10–10
clip_str_9FLOAT1.00-10–10
lora_name_10COMBO1 options: None
model_str_10FLOAT1.00-10–10
clip_str_10FLOAT1.00-10–10
optional_lora_stackoptLORA_STACK
display_trigger_wordoptBOOLEANTrigger words showing lora model pass through the model's metadata, but not necessarily accurately.

Outputs (1)

NameTypeDescription
X or YX_Y