Nodes/ComfyUI_Eugene_Nodes/LoRA Preset Loader & Encoder
ComfyUI Node

LoRA Preset Loader & Encoder

Five LoRAs, Your Prompt, and the Conditioning — All From One Node

By JEONG-JIWOO·Created 2 years ago·Updated 8 months ago· 2
LoRA Preset Loader & Encoder
  • input_dictionary
  • model
  • clip
  • vae
  • basic_pipe
  • dict_bus
  • input_dict
  • model
  • clip
  • vae
  • positive_conditioning
  • negative_conditioning
  • basic_pipe
  • positive_prompt
  • negative_prompt
positive_prefix
positive_suffix
negative_prefix
negative_suffix
stop_at_clip_layer-1
lora_1_preset
lora_1_strength1.00
lora_2_preset
lora_2_strength1.00
lora_3_preset
lora_3_strength1.00
lora_4_preset
lora_4_strength1.00
lora_5_preset
lora_5_strength1.00

If you run more than two LoRAs together, you know the pain this node exists to remove: the wall of LoraLoader nodes, each with its own strength slider, plus the CLIP encoding you still have to do afterward. The LoRA Preset Loader & Encoder from Eugene's pack collapses that whole pile into one node. Pick up to five saved presets, set a strength per slot, and it applies the LoRAs, assembles the full prompt out of fragments each preset carries, encodes it into conditioning, and hands you everything downstream needs in one go. It's the most useful node in this pack, and the reason most people install it.

How it works

The heart of it is the "preset" - a small JSON file living in your loras model folder. Each one stores a LoRA file path, a strength, and positive/negative prompt text. When you select a preset in a slot, the loader reads that JSON, applies the LoRA to the model and CLIP, and appends the preset's prompt fragment to the prompt it's building for you.

Your positive_prefix goes first, then each applied preset's prompt, then positive_suffix. The same happens for the negative side. The joined text runs through a cleaner that squashes newlines into spaces and dedupes commas, then gets encoded by the CLIP - after stop_at_clip_layer (CLIP skip) is applied to it. So this one node is a LoRA stacker and a prompt composer and a text encoder, all at once.

The inputs that actually matter

  • lora_1_preset … lora_5_preset - which saved preset each slot applies. "none" skips the slot.
  • lora_1_strength … lora_5_strength - per-slot override, −100 to 100. One quirk worth knowing: on this node the CLIP strength is forced to match the model strength, ignoring whatever clip_strength the preset file stores. The list-based sibling node does not do this.
  • positive_prefix / positive_suffix, negative_prefix / negative_suffix - prompt text that wraps the preset fragments. Any {key} placeholders in them get filled from the optional input_dictionary, which is how Eugene's dictionary nodes feed prompts here.
  • stop_at_clip_layer - CLIP skip, default −1. Anime LoRAs (Illustrious/Pony/NoobAI) often want −2.

Model, CLIP, and VAE can come in three ways: direct wires, a basic_pipe, or a dict_bus. If more than one is connected, priority is direct input first, then basic_pipe, then dict_bus - so a wire straight into the node always wins.

What comes out

The outputs are the payoff. You get model and clip with everything baked in, the vae, ready-to-wire positive_conditioning and negative_conditioning for your sampler, and a basic_pipe output that bundles model/clip/vae/both-conditionings into a single connection for the rest of the graph. There's also input_dict (passed through untouched) and the assembled positive_prompt / negative_prompt strings - hook those into a ShowText node and you can see exactly what prompt it composed, which is great for debugging.

Installing it

No requirements to pip, no models to download - the pack only uses ComfyUI's own built-ins. Either use ComfyUI Manager (search "Eugene Nodes") or:

cd ComfyUI/custom_nodes
git clone https://github.com/JEONG-JIWOO/ComfyUI_Eugene_Nodes

Then restart ComfyUI.

Where people get burned

The preset dropdown is built when the node is created, so a preset you just saved with the Saver won't show up until you reload the workflow (or restart). This node has no refresh toggle - that's the Selector's job.

If you get a "Model, CLIP, and VAE are required" assertion, something resolved to nothing: check that a direct wire, basic_pipe, or dict_bus actually reaches the node, and remember a direct wire beats the bus.

And the classic: LoRA loads, image doesn't change. That usually means the preset's own prompt fragment isn't carrying the trigger word the LoRA was trained on - pop the assembled positive_prompt into ShowText and check.

Categorylora/loader

Inputs (21)

NameTypeDefaultDescription
positive_prefixSTRING
positive_suffixSTRING
negative_prefixSTRING
negative_suffixSTRING
stop_at_clip_layerINT-1-24–-1
input_dictionaryoptDICT
modeloptMODEL
clipoptCLIP
vaeoptVAE
basic_pipeoptBASIC_PIPE
dict_busoptDICT_BUS
lora_1_presetoptCOMBO1 options: none
lora_1_strengthoptFLOAT1.00-100–100
lora_2_presetoptCOMBO1 options: none
lora_2_strengthoptFLOAT1.00-100–100
lora_3_presetoptCOMBO1 options: none
lora_3_strengthoptFLOAT1.00-100–100
lora_4_presetoptCOMBO1 options: none
lora_4_strengthoptFLOAT1.00-100–100
lora_5_presetoptCOMBO1 options: none
lora_5_strengthoptFLOAT1.00-100–100

Outputs (9)

NameTypeDescription
input_dictDICT
modelMODEL
clipCLIP
vaeVAE
positive_conditioningCONDITIONING
negative_conditioningCONDITIONING
basic_pipeBASIC_PIPE
positive_promptSTRING
negative_promptSTRING