ComfyUI Node

Smart Load LoRA

A plain LoRA loader that also tells you what it loaded

By slvslvslv·Created 2 years ago·Updated 7 days ago· 3
Smart Load LoRA
  • model
  • clip
  • model2
  • model
  • clip
  • lora_string
  • model2
lora_name
strength_model1.00
strength_clip1.00
lora_string

Smart Load LoRA is the core LoRA loader, plus two things the core one doesn't give you: a formatted string describing what was loaded, and the option to apply the same LoRA to a second model. If you've ever wanted a paper trail on which LoRA went into which render, or needed one LoRA patching two UNets, this is the node.

For anyone who just wants a stock LoRA load, the honest take is that the core "Load LoRA" does the same job with fewer moving parts. The reason to reach for this version is the extras. The lora_string output - formatted as name, model_str:X, clip_str:Y - plugs straight into the pack's SmartSaveText, giving you a per-render LoRA ledger that stock loaders simply don't record. That's a real workflow improvement when you're iterating on a look across dozens of runs.

How it works

Mechanically it's the standard comfy.sd.load_lora_for_models call: the LoRA patches the model and the CLIP with independent strengths, negative values genuinely unmerge. Two details are worth knowing:

  • Strength short-circuit. If both strength_model and strength_clip are 0, the node skips patching entirely and passes the inputs through. That's the "disable a LoRA without removing the node" trick, baked in.
  • Optional model2. Give it a second diffusion model and the same LoRA is applied to that model too - but only the UNet side, with strength_clip treated as 0 there. The CLIP patch only goes to the first model's clip.

It also caches the last-loaded LoRA by file path, so re-runs with the same LoRA don't re-read the file from disk.

The inputs and outputs that matter

  • model, clip - the diffusion model and text encoder.
  • lora_name - dropdown of models/loras.
  • strength_model / strength_clip - −100 to 100; this is where negative-strength un-merging lives.
  • model2 - optional; same LoRA applied UNet-only.
  • lora_string - optional; append onto an existing receipt string.

Outputs: model, clip (patched), lora_string (STRING), and model2 (patched or passthrough).

Where it fits

The two-model case is the Wan 2.2 story again - one style LoRA you want on both the high-noise and low-noise passes, without adding a second loader. And the lora_string output makes it the natural input to a workflow log: loader → SmartSaveText and every render records its LoRA load for free.

Installing it

It's part of SmartHelperNodes; one install covers it:

cd ComfyUI/custom_nodes
git clone https://github.com/slvslvslv/ComfyUI-SmartHelperNodes

Restart ComfyUI, or install via ComfyUI Manager ("SmartHelperNodes"). No pip dependencies, no model downloads.

Common issues

The lora_string output is a string, not the model - if you wire it into a model slot you'll get a type error, and it's a common mistake because the outputs sit adjacent. Also note the strength short-circuit: a LoRA with both strengths at 0 silently passes through, so a "no effect" render might just be a zeroed LoRA rather than a broken one. If your second model isn't getting the LoRA at all, check that you actually connected model2 - the output model2 defaults to the patched first model when the input is absent, which is a pass-through, not an error.

CategorySmartHelperNodes

Inputs (7)

NameTypeDefaultDescription
modelMODELThe diffusion model the LoRA will be applied to.
clipCLIPThe CLIP model the LoRA will be applied to.
lora_nameCOMBOThe name of the LoRA.
strength_modelFLOAT1.00-100–100How strongly to modify the diffusion model. This value can be negative.
strength_clipFLOAT1.00-100–100How strongly to modify the CLIP model. This value can be negative.
model2optMODELOptional second diffusion model; the same LoRA is applied to both models (UNet only on this input).
lora_stringoptSTRING

Outputs (4)

NameTypeDescription
modelMODEL
clipCLIP
lora_stringSTRING
model2MODEL