ComfyUI Node

LoRA Plot Node

Sweep every LoRA against every strength without building the mother of all workflows

By Hearmeman24·Created 10 months ago·Updated 2 months ago· 43
LoRA Plot Node
  • model
  • clip
  • model
  • clip
  • metadata
strengths0.8,0.9,1.0
lora_1None
lora_2None
lora_3None
lora_4None
lora_5None
lora_6None
lora_7None
lora_8None
lora_9None
lora_10None

LoRA strength is where everyone's first test goes sideways. The default of 1.0 is often too strong, and the community wisdom is that 0.5–0.8 is where most things actually land - but finding your sweet spot means generating the same prompt over and over at different weights. The classic way to do that in ComfyUI is to hand-build a grid of samplers, which one user memorably described as "the mother of all workflows." LoRA Plot Node is the automation of that grind.

Drop in your base model and CLIP, give it a comma-separated strength list, pick up to 10 LoRAs from dropdowns, and it hands back a list of model/clip pairs - one per LoRA×strength combination - plus a metadata string for each. Wire those lists into a normal KSampler → VAE Decode chain and ComfyUI just runs the whole graph once per combination. That's the whole trick: list outputs are what make ComfyUI repeat execution, and this node is a factory for them.

Under the hood it's refreshingly simple, and the source backs it up. Each LoRA's weights are read from disk once with comfy.utils.load_torch_file, cached class-wide in a FIFO of max 10 so it never re-reads the same .safetensors for every strength, and then comfy.sd.load_lora_for_models is applied to the same base model and clip for each strength. The metadata output is just a sanitized filename plus the strength - my_style_0.8 - which is exactly what the pack's companion Image Saver node expects as a caption.

The inputs that matter:

  • model / clip - your base checkpoint, straight from a Load Checkpoint node.
  • strengths - comma-separated floats, default 0.8,0.9,1.0. Whitespace and empty entries are tolerated.
  • lora_1 … lora_10 - dropdowns populated from ComfyUI/models/loras; leave a slot on "None" to skip it.

Outputs: model (list), clip (list), and metadata (list of name_strength strings). Wire model and clip into any sampler; metadata goes to the saver node.

Where people get burned:

  • It's a cartesian product, not a matrix. Every selected LoRA shares the same strength list, and each combination applies exactly one LoRA to the base. You can't stack two LoRAs in a single combo, and you can't give different LoRAs different strength ranges. If your real goal is stacked LoRA testing, rgthree's Power Lora Loader is the better tool; this node is for individual sweeps.
  • The cost is real. N LoRAs × M strengths means that many full generations. A 3×3 run on a locked seed is a legit afternoon; 10 LoRAs at 5 strengths on SDXL is a wall-clock disaster on a midrange card. Start small and lock the seed - change one variable at a time, as everyone eventually learns the hard way.
  • Failures are quiet. If a combo errors (missing file, wrong architecture), the node logs it to the console and keeps going. If everything fails you'll get a "No LoRA-strength combinations were successfully applied" error listing what went wrong - check your terminal, not the node.
  • New LoRA files don't always show up in the dropdowns until you refresh node definitions (Manager → "Refresh Node Definitions" or restart).

Installing is painless. Via ComfyUI Manager, search "LoRA Plot" and install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Hearmeman24/ComfyUI-LoRAPlotNode.git

Then restart ComfyUI. No model files to download, and the only dependencies are Pillow, NumPy and PyTorch - all bundled with ComfyUI. It's a tiny, MIT-licensed pack, so don't expect a maintainer on call; for a tool that saves you from copy-pasting samplers all afternoon, that's a fair trade.

CategoryLoRA

Inputs (13)

NameTypeDefaultDescription
modelMODEL
clipCLIP
strengthsSTRING0.8,0.9,1.0
lora_1optCOMBONone1 options: None
lora_2optCOMBONone1 options: None
lora_3optCOMBONone1 options: None
lora_4optCOMBONone1 options: None
lora_5optCOMBONone1 options: None
lora_6optCOMBONone1 options: None
lora_7optCOMBONone1 options: None
lora_8optCOMBONone1 options: None
lora_9optCOMBONone1 options: None
lora_10optCOMBONone1 options: None

Outputs (3)

NameTypeDescription
modelMODEL
clipCLIP
metadataSTRING