Nodes/Craftgear Nodes/Load LoRAs With Tags
ComfyUI Node

Load LoRAs With Tags

The loader that finally surfaces your trigger words

By craftgear·Created 9 months ago·Updated 7 months ago· 1
Load LoRAs With Tags
  • model
  • clip
  • model
  • clip
  • tags
◄lora_name_1▾►
◄lora_strength_11.0►
◄lora_on_1true►
◄tag_selection_1►
◄lora_name_2▾►
◄lora_strength_21.0►
◄lora_on_2true►
◄tag_selection_2►
◄lora_name_3▾►
◄lora_strength_31.0►
◄lora_on_3true►
◄tag_selection_3►
◄lora_name_4▾►
◄lora_strength_41.0►
◄lora_on_4true►
◄tag_selection_4►
◄lora_name_5▾►
◄lora_strength_51.0►
◄lora_on_5true►
◄tag_selection_5►
◄lora_name_6▾►
◄lora_strength_61.0►
◄lora_on_6true►
◄tag_selection_6►
◄lora_name_7▾►
◄lora_strength_71.0►
◄lora_on_7true►
◄tag_selection_7►
◄lora_name_8▾►
◄lora_strength_81.0►
◄lora_on_8true►
◄tag_selection_8►
◄lora_name_9▾►
◄lora_strength_91.0►
◄lora_on_9true►
◄tag_selection_9►
◄lora_name_10▾►
◄lora_strength_101.0►
◄lora_on_10true►
◄tag_selection_10►
◄lora_name_11▾►
◄lora_strength_111.0►
◄lora_on_11true►
◄tag_selection_11►
◄lora_name_12▾►
◄lora_strength_121.0►
◄lora_on_12true►
◄tag_selection_12►
◄lora_name_13▾►
◄lora_strength_131.0►
◄lora_on_13true►
◄tag_selection_13►
◄lora_name_14▾►
◄lora_strength_141.0►
◄lora_on_14true►
◄tag_selection_14►
◄lora_name_15▾►
◄lora_strength_151.0►
◄lora_on_15true►
◄tag_selection_15►
◄lora_name_16▾►
◄lora_strength_161.0►
◄lora_on_16true►
◄tag_selection_16►
◄lora_name_17▾►
◄lora_strength_171.0►
◄lora_on_17true►
◄tag_selection_17►
◄lora_name_18▾►
◄lora_strength_181.0►
◄lora_on_18true►
◄tag_selection_18►
◄lora_name_19▾►
◄lora_strength_191.0►
◄lora_on_19true►
◄tag_selection_19►
◄lora_name_20▾►
◄lora_strength_201.0►
◄lora_on_20true►
◄tag_selection_20►
◄tags►
◄loras_json[]►

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:

  1. Sidecar JSON files next to the LoRA - any JSON with trainedWords/trained_words, plus model_info.json (Civitai-style modelVersions, 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.
  2. The safetensors header itself - ss_tag_frequency (preferred, since it gives real occurrence counts), then trained_words, then trigger_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 the loras json output 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_json overrides 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.
Categorycraftgear/loras

Inputs (84)

NameTypeDefaultDescription
modelMODEL—
clipCLIP—
lora_name_1COMBO1 options: None
lora_strength_1FLOAT1.0-2–2—
lora_on_1BOOLEANtrue—
tag_selection_1STRING—
lora_name_2COMBO1 options: None
lora_strength_2FLOAT1.0-2–2—
lora_on_2BOOLEANtrue—
tag_selection_2STRING—
lora_name_3COMBO1 options: None
lora_strength_3FLOAT1.0-2–2—
lora_on_3BOOLEANtrue—
tag_selection_3STRING—
lora_name_4COMBO1 options: None
lora_strength_4FLOAT1.0-2–2—
lora_on_4BOOLEANtrue—
tag_selection_4STRING—
lora_name_5COMBO1 options: None
lora_strength_5FLOAT1.0-2–2—
lora_on_5BOOLEANtrue—
tag_selection_5STRING—
lora_name_6COMBO1 options: None
lora_strength_6FLOAT1.0-2–2—
lora_on_6BOOLEANtrue—
tag_selection_6STRING—
lora_name_7COMBO1 options: None
lora_strength_7FLOAT1.0-2–2—
lora_on_7BOOLEANtrue—
tag_selection_7STRING—
lora_name_8COMBO1 options: None
lora_strength_8FLOAT1.0-2–2—
lora_on_8BOOLEANtrue—
tag_selection_8STRING—
lora_name_9COMBO1 options: None
lora_strength_9FLOAT1.0-2–2—
lora_on_9BOOLEANtrue—
tag_selection_9STRING—
lora_name_10COMBO1 options: None
lora_strength_10FLOAT1.0-2–2—
lora_on_10BOOLEANtrue—
tag_selection_10STRING—
lora_name_11COMBO1 options: None
lora_strength_11FLOAT1.0-2–2—
lora_on_11BOOLEANtrue—
tag_selection_11STRING—
lora_name_12COMBO1 options: None
lora_strength_12FLOAT1.0-2–2—
lora_on_12BOOLEANtrue—
tag_selection_12STRING—
lora_name_13COMBO1 options: None
lora_strength_13FLOAT1.0-2–2—
lora_on_13BOOLEANtrue—
tag_selection_13STRING—
lora_name_14COMBO1 options: None
lora_strength_14FLOAT1.0-2–2—
lora_on_14BOOLEANtrue—
tag_selection_14STRING—
lora_name_15COMBO1 options: None
lora_strength_15FLOAT1.0-2–2—
lora_on_15BOOLEANtrue—
tag_selection_15STRING—
lora_name_16COMBO1 options: None
lora_strength_16FLOAT1.0-2–2—
lora_on_16BOOLEANtrue—
tag_selection_16STRING—
lora_name_17COMBO1 options: None
lora_strength_17FLOAT1.0-2–2—
lora_on_17BOOLEANtrue—
tag_selection_17STRING—
lora_name_18COMBO1 options: None
lora_strength_18FLOAT1.0-2–2—
lora_on_18BOOLEANtrue—
tag_selection_18STRING—
lora_name_19COMBO1 options: None
lora_strength_19FLOAT1.0-2–2—
lora_on_19BOOLEANtrue—
tag_selection_19STRING—
lora_name_20COMBO1 options: None
lora_strength_20FLOAT1.0-2–2—
lora_on_20BOOLEANtrue—
tag_selection_20STRING—
tagsoptSTRING—
loras_jsonoptSTRING[]—

Outputs (3)

NameTypeDescription
modelMODEL—
clipCLIP—
tagsSTRING—