Load LoRA Clip Index (NH)
One index to switch which LoRA hits the CLIP
- model
- clip
- model
- clip
- filename
- index
The standard ComfyUI LoRA loader applies one LoRA and you need a separate loader node for each one. Run a workflow with twenty LoRAs and you've got twenty nodes. Load LoRA Clip Index (NH) (class NH_LoraClipIndex) is the pack's answer: one node that holds a menu of up to 64 LoRAs and applies whichever one you index into - to both the MODEL and the CLIP, which is why it's the "Clip" variant. It's a switching loader, built for configurable workflows where you want to flip LoRAs without rebuilding the graph.
How it works
You list your LoRAs in the optional lora_1 … lora_64 dropdowns (only the first lora_count matter), and pick which to apply two ways, via select_mode:
- index - the
indexnumber (1-based) selects which LoRA slot gets applied. - boolean - each slot has an
enable_Ntoggle; the first enabled slot wins. If none are enabled, the node returns a blocked model (a LoRA-less passthrough), so the graph keeps running rather than erroring.
The model and clip inputs come from your checkpoint loader, strength_model / strength_clip set the blend strengths just like the core loader, and outputs are the patched model, clip, plus filename and the index that was used - so downstream nodes know what actually ran. It reuses ComfyUI's own LoRA-loading machinery, so anything in models/loras shows up in the dropdowns.
Where you'd actually use it
Any "same graph, different LoRA per run" situation: A/B testing a style LoRA against a character LoRA, queueing a batch where each run uses a different model, or keeping one tidy loader instead of a wall of LoraLoader nodes. Drive index from a seed, a slider, or Math Eval (NH), and one workflow becomes a LoRA player. The boolean mode is the nice one for parallel-enabled workflows - flip toggles instead of typing numbers.
Installing
ComfyUI Manager → search NH-Nodes → install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/jetthuangai/NH-Nodes.git
cd NH-Nodes
pip install -r requirements.txt
Restart and refresh the browser page. No LoRA model files download for this node - it reads whatever is already in models/loras.
Gotchas
Indexing is 1-based here - index 1 is the first slot, unlike ComfyUI's 0-based list indexing, and that mismatch has confused more than one person. Also, the dropdowns populate from models/loras at node load; if you drop a new LoRA in the folder you'll need to refresh the browser page before it appears. In boolean mode, only the first enabled slot applies - later enabled slots are ignored, so don't try to stack multiple LoRAs through one of these. For stacking, you still want separate loaders.
Inputs (135)
| Name | Type | Default | Description |
|---|---|---|---|
| select_mode | COMBO | index | 2 options: index, boolean |
| model | MODEL | — | |
| clip | CLIP | — | |
| index | INT | 11–64 | — |
| lora_count | INT | 51–64 | — |
| strength_model | FLOAT | 1.00-100–100 | — |
| strength_clip | FLOAT | 1.00-100–100 | — |
| lora_1opt | COMBO | 1 options: | |
| enable_1opt | BOOLEAN | false | — |
| lora_2opt | COMBO | 1 options: | |
| enable_2opt | BOOLEAN | false | — |
| lora_3opt | COMBO | 1 options: | |
| enable_3opt | BOOLEAN | false | — |
| lora_4opt | COMBO | 1 options: | |
| enable_4opt | BOOLEAN | false | — |
| lora_5opt | COMBO | 1 options: | |
| enable_5opt | BOOLEAN | false | — |
| lora_6opt | COMBO | 1 options: | |
| enable_6opt | BOOLEAN | false | — |
| lora_7opt | COMBO | 1 options: | |
| enable_7opt | BOOLEAN | false | — |
| lora_8opt | COMBO | 1 options: | |
| enable_8opt | BOOLEAN | false | — |
| lora_9opt | COMBO | 1 options: | |
| enable_9opt | BOOLEAN | false | — |
| lora_10opt | COMBO | 1 options: | |
| enable_10opt | BOOLEAN | false | — |
| lora_11opt | COMBO | 1 options: | |
| enable_11opt | BOOLEAN | false | — |
| lora_12opt | COMBO | 1 options: | |
| enable_12opt | BOOLEAN | false | — |
| lora_13opt | COMBO | 1 options: | |
| enable_13opt | BOOLEAN | false | — |
| lora_14opt | COMBO | 1 options: | |
| enable_14opt | BOOLEAN | false | — |
| lora_15opt | COMBO | 1 options: | |
| enable_15opt | BOOLEAN | false | — |
| lora_16opt | COMBO | 1 options: | |
| enable_16opt | BOOLEAN | false | — |
| lora_17opt | COMBO | 1 options: | |
| enable_17opt | BOOLEAN | false | — |
| lora_18opt | COMBO | 1 options: | |
| enable_18opt | BOOLEAN | false | — |
| lora_19opt | COMBO | 1 options: | |
| enable_19opt | BOOLEAN | false | — |
| lora_20opt | COMBO | 1 options: | |
| enable_20opt | BOOLEAN | false | — |
| lora_21opt | COMBO | 1 options: | |
| enable_21opt | BOOLEAN | false | — |
| lora_22opt | COMBO | 1 options: | |
| enable_22opt | BOOLEAN | false | — |
| lora_23opt | COMBO | 1 options: | |
| enable_23opt | BOOLEAN | false | — |
| lora_24opt | COMBO | 1 options: | |
| enable_24opt | BOOLEAN | false | — |
| lora_25opt | COMBO | 1 options: | |
| enable_25opt | BOOLEAN | false | — |
| lora_26opt | COMBO | 1 options: | |
| enable_26opt | BOOLEAN | false | — |
| lora_27opt | COMBO | 1 options: | |
| enable_27opt | BOOLEAN | false | — |
| lora_28opt | COMBO | 1 options: | |
| enable_28opt | BOOLEAN | false | — |
| lora_29opt | COMBO | 1 options: | |
| enable_29opt | BOOLEAN | false | — |
| lora_30opt | COMBO | 1 options: | |
| enable_30opt | BOOLEAN | false | — |
| lora_31opt | COMBO | 1 options: | |
| enable_31opt | BOOLEAN | false | — |
| lora_32opt | COMBO | 1 options: | |
| enable_32opt | BOOLEAN | false | — |
| lora_33opt | COMBO | 1 options: | |
| enable_33opt | BOOLEAN | false | — |
| lora_34opt | COMBO | 1 options: | |
| enable_34opt | BOOLEAN | false | — |
| lora_35opt | COMBO | 1 options: | |
| enable_35opt | BOOLEAN | false | — |
| lora_36opt | COMBO | 1 options: | |
| enable_36opt | BOOLEAN | false | — |
| lora_37opt | COMBO | 1 options: | |
| enable_37opt | BOOLEAN | false | — |
| lora_38opt | COMBO | 1 options: | |
| enable_38opt | BOOLEAN | false | — |
| lora_39opt | COMBO | 1 options: | |
| enable_39opt | BOOLEAN | false | — |
| lora_40opt | COMBO | 1 options: | |
| enable_40opt | BOOLEAN | false | — |
| lora_41opt | COMBO | 1 options: | |
| enable_41opt | BOOLEAN | false | — |
| lora_42opt | COMBO | 1 options: | |
| enable_42opt | BOOLEAN | false | — |
| lora_43opt | COMBO | 1 options: | |
| enable_43opt | BOOLEAN | false | — |
| lora_44opt | COMBO | 1 options: | |
| enable_44opt | BOOLEAN | false | — |
| lora_45opt | COMBO | 1 options: | |
| enable_45opt | BOOLEAN | false | — |
| lora_46opt | COMBO | 1 options: | |
| enable_46opt | BOOLEAN | false | — |
| lora_47opt | COMBO | 1 options: | |
| enable_47opt | BOOLEAN | false | — |
| lora_48opt | COMBO | 1 options: | |
| enable_48opt | BOOLEAN | false | — |
| lora_49opt | COMBO | 1 options: | |
| enable_49opt | BOOLEAN | false | — |
| lora_50opt | COMBO | 1 options: | |
| enable_50opt | BOOLEAN | false | — |
| lora_51opt | COMBO | 1 options: | |
| enable_51opt | BOOLEAN | false | — |
| lora_52opt | COMBO | 1 options: | |
| enable_52opt | BOOLEAN | false | — |
| lora_53opt | COMBO | 1 options: | |
| enable_53opt | BOOLEAN | false | — |
| lora_54opt | COMBO | 1 options: | |
| enable_54opt | BOOLEAN | false | — |
| lora_55opt | COMBO | 1 options: | |
| enable_55opt | BOOLEAN | false | — |
| lora_56opt | COMBO | 1 options: | |
| enable_56opt | BOOLEAN | false | — |
| lora_57opt | COMBO | 1 options: | |
| enable_57opt | BOOLEAN | false | — |
| lora_58opt | COMBO | 1 options: | |
| enable_58opt | BOOLEAN | false | — |
| lora_59opt | COMBO | 1 options: | |
| enable_59opt | BOOLEAN | false | — |
| lora_60opt | COMBO | 1 options: | |
| enable_60opt | BOOLEAN | false | — |
| lora_61opt | COMBO | 1 options: | |
| enable_61opt | BOOLEAN | false | — |
| lora_62opt | COMBO | 1 options: | |
| enable_62opt | BOOLEAN | false | — |
| lora_63opt | COMBO | 1 options: | |
| enable_63opt | BOOLEAN | false | — |
| lora_64opt | COMBO | 1 options: | |
| enable_64opt | BOOLEAN | false | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| filename | STRING | — |
| index | INT | — |