Load LoRAs With Tags
The loader that finally surfaces your trigger words
- model
- clip
- model
- clip
- tags
Here's a scenario every LoRA user knows: you download a character LoRA, load it, type your prompt, and get nothing. No character. Because buried in that .safetensors file is a trigger word - a rare token like ch4r4ct3r name the model was trained on - and the loader never showed it to you. Load LoRAs With Tags is the LoRA loader that stops hiding that information. It reads trigger/trained words straight out of the LoRA's metadata (and any sidecar JSON files), shows them in a fuzzy-search tag picker, and outputs the tags you select alongside the patched model and clip. Up to 20 LoRAs at once.
This is the pack's flagship - the node the author announced on r/comfyui as "yet another LoRA loader with twists," built specifically because selecting LoRAs from a giant dropdown was driving them up the wall. It's a small but genuinely thoughtful fix for a real, recurring pain.
How it works
When you pick a LoRA, the node scans for its trigger words in a specific priority order:
- Sidecar JSON files next to the LoRA - any JSON with
trainedWords/trained_words, plusmodel_info.json(Civitai-stylemodelVersions, matched to your file by name) and.rgthree-info.json. Tags found here get infinite frequency and are pinned to the top of the tag list. - The safetensors header itself -
ss_tag_frequency(preferred, since it gives real occurrence counts), thentrained_words, thentrigger_words.
That's the good stuff. The tag dialog then shows every tag with fuzzy filtering, sorted by how often the tag appeared in the training data - so the actual trigger word floats to the top instead of being buried. You click the tags you want; each slot's selection is stored in its tag_selection_N input; and the tags output is the merged, deduplicated, parenthesis-escaped string of all selected tags (plus whatever you feed into the optional tags input). Wire that straight into CLIP Text Encode.
It's also a proper stack: each of the 20 slots has its own LoRA name, strength slider, on/off toggle, and tag selection. Header Copy/Append actions import slots from other LoRA loader nodes, and there's a hover-zoom preview image next to each LoRA in the picker.
Inputs and outputs that matter
model,clip- required; from a Load Checkpoint node. The patched versions come back out.- Per slot:
lora_name_N,lora_strength_N(default 1.0, range -2.0 to 2.0, configurable under Settings > craftgear > Load Loras With Tags),lora_on_N,tag_selection_N. tags(optional) - input tag text merged with the selected LoRA tags in the output.loras_json(optional) - a JSON list of LoRA names. Wire theloras jsonoutput from this pack's A1111 Metadata Reader here and it loads those LoRAs at strength 1.0, taking priority over the slots.
Outputs: model, clip, and tags.
Install
Search craftgear in ComfyUI Manager and install a numbered version (the README notes nightly fails on security restrictions), or:
cd ComfyUI/custom_nodes
git clone https://github.com/craftgear/comfyui-craftgear-nodes
Restart ComfyUI. No model downloads, no extra pip dependencies.
Where people get burned
- No tags shown? The LoRA has no tags to show. Not every LoRA is trained with
ss_tag_frequency,trained_words, or a sidecar JSON. If the picker comes up empty, the file genuinely carries no readable trigger data - nothing is broken, you just have to find the trigger the old way. - Trigger words aren't prompt sentences. The tags it extracts are often awkward tokens or heavy with frequency noise. Select a few, don't dump all 200.
loras_jsonoverrides the slots. If you've wired in a reader's JSON and slots aren't being applied, that's expected behavior - the JSON path wins. Unplug it to use the click-and-edit workflow.
Inputs (84)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| lora_name_1 | COMBO | 1 options: None | |
| lora_strength_1 | FLOAT | 1.0-2–2 | — |
| lora_on_1 | BOOLEAN | true | — |
| tag_selection_1 | STRING | — | |
| lora_name_2 | COMBO | 1 options: None | |
| lora_strength_2 | FLOAT | 1.0-2–2 | — |
| lora_on_2 | BOOLEAN | true | — |
| tag_selection_2 | STRING | — | |
| lora_name_3 | COMBO | 1 options: None | |
| lora_strength_3 | FLOAT | 1.0-2–2 | — |
| lora_on_3 | BOOLEAN | true | — |
| tag_selection_3 | STRING | — | |
| lora_name_4 | COMBO | 1 options: None | |
| lora_strength_4 | FLOAT | 1.0-2–2 | — |
| lora_on_4 | BOOLEAN | true | — |
| tag_selection_4 | STRING | — | |
| lora_name_5 | COMBO | 1 options: None | |
| lora_strength_5 | FLOAT | 1.0-2–2 | — |
| lora_on_5 | BOOLEAN | true | — |
| tag_selection_5 | STRING | — | |
| lora_name_6 | COMBO | 1 options: None | |
| lora_strength_6 | FLOAT | 1.0-2–2 | — |
| lora_on_6 | BOOLEAN | true | — |
| tag_selection_6 | STRING | — | |
| lora_name_7 | COMBO | 1 options: None | |
| lora_strength_7 | FLOAT | 1.0-2–2 | — |
| lora_on_7 | BOOLEAN | true | — |
| tag_selection_7 | STRING | — | |
| lora_name_8 | COMBO | 1 options: None | |
| lora_strength_8 | FLOAT | 1.0-2–2 | — |
| lora_on_8 | BOOLEAN | true | — |
| tag_selection_8 | STRING | — | |
| lora_name_9 | COMBO | 1 options: None | |
| lora_strength_9 | FLOAT | 1.0-2–2 | — |
| lora_on_9 | BOOLEAN | true | — |
| tag_selection_9 | STRING | — | |
| lora_name_10 | COMBO | 1 options: None | |
| lora_strength_10 | FLOAT | 1.0-2–2 | — |
| lora_on_10 | BOOLEAN | true | — |
| tag_selection_10 | STRING | — | |
| lora_name_11 | COMBO | 1 options: None | |
| lora_strength_11 | FLOAT | 1.0-2–2 | — |
| lora_on_11 | BOOLEAN | true | — |
| tag_selection_11 | STRING | — | |
| lora_name_12 | COMBO | 1 options: None | |
| lora_strength_12 | FLOAT | 1.0-2–2 | — |
| lora_on_12 | BOOLEAN | true | — |
| tag_selection_12 | STRING | — | |
| lora_name_13 | COMBO | 1 options: None | |
| lora_strength_13 | FLOAT | 1.0-2–2 | — |
| lora_on_13 | BOOLEAN | true | — |
| tag_selection_13 | STRING | — | |
| lora_name_14 | COMBO | 1 options: None | |
| lora_strength_14 | FLOAT | 1.0-2–2 | — |
| lora_on_14 | BOOLEAN | true | — |
| tag_selection_14 | STRING | — | |
| lora_name_15 | COMBO | 1 options: None | |
| lora_strength_15 | FLOAT | 1.0-2–2 | — |
| lora_on_15 | BOOLEAN | true | — |
| tag_selection_15 | STRING | — | |
| lora_name_16 | COMBO | 1 options: None | |
| lora_strength_16 | FLOAT | 1.0-2–2 | — |
| lora_on_16 | BOOLEAN | true | — |
| tag_selection_16 | STRING | — | |
| lora_name_17 | COMBO | 1 options: None | |
| lora_strength_17 | FLOAT | 1.0-2–2 | — |
| lora_on_17 | BOOLEAN | true | — |
| tag_selection_17 | STRING | — | |
| lora_name_18 | COMBO | 1 options: None | |
| lora_strength_18 | FLOAT | 1.0-2–2 | — |
| lora_on_18 | BOOLEAN | true | — |
| tag_selection_18 | STRING | — | |
| lora_name_19 | COMBO | 1 options: None | |
| lora_strength_19 | FLOAT | 1.0-2–2 | — |
| lora_on_19 | BOOLEAN | true | — |
| tag_selection_19 | STRING | — | |
| lora_name_20 | COMBO | 1 options: None | |
| lora_strength_20 | FLOAT | 1.0-2–2 | — |
| lora_on_20 | BOOLEAN | true | — |
| tag_selection_20 | STRING | — | |
| tagsopt | STRING | — | |
| loras_jsonopt | STRING | [] | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| tags | STRING | — |