Nodes/comfyui-adaptiveprompts/🏷️ Lora Tags Loader 🏷️
ComfyUI Node

🏷️ Lora Tags Loader 🏷️

Parse <lora:...> tags out of a prompt and auto-load their trigger words

By AlectricitiΒ·Created 12 months agoΒ·Updated 23 days agoΒ· 87
🏷️ Lora Tags Loader 🏷️
  • model
  • clip
  • model
  • clip
  • prompt
  • keywords
  • lora_names
β—„textβ–Ί
β—„compression_threshold1.0β–Ί
β—„compression_ratio2.0β–Ί
β—„base_keywords5β–Ί
β—„sort_modeTop Frequencyβ–Ί
β—„keyword_extraction_randomness0.13β–Ί
β—„apply_keywords_to_prompttrueβ–Ί
β—„seed0β–Ί

This is the newest node in the Adaptive Prompts pack - it shipped in v0.2.0, July 2026 - and it's a direct answer to the single most common request the author got after launching the pack: people kept asking for LoRAs to contribute their own trigger words automatically instead of everyone hand-typing and memorizing them. LoadLoraTags reads <lora:...> tags straight out of a text block, applies the LoRAs to your model and CLIP, and can pull keyword tags out of each LoRA to mix back into your prompt.

How it works

It accepts the classic LoRA-tag syntax: <lora:name>, <lora:name:weight>, <lora:name:unet:clip>, or <lora:name:unet:clip:keyword>. It strips those tags out of the text, loads each referenced LoRA onto your model and clip, and - if apply_keywords_to_prompt is on - mines each LoRA for a set of associated keywords and blends them back into the returned prompt. Most LoRAs trained with kohya-style trainers carry a tag-frequency table baked into the file's own metadata (a record of which caption words showed up most often in the training set), and that's the likely source of the "based on weight and tag frequency" behavior the pack describes - this node reads that instead of asking you to know a LoRA's trigger words off the top of your head.

Two separate knobs shape the output, and it's easy to conflate them. base_keywords decides how many keywords get pulled per LoRA at a weight of 1.0 - more LoRA weight, more keywords extracted from it. sort_mode and keyword_extraction_randomness then decide how the combined pool from all your LoRAs gets picked and ordered: Top Frequency always grabs the most common tags, Weighted Random and Random shuffle in some variety, and keyword_extraction_randomness (0 to 1) blends between pure frequency and full randomness for that selection. Separately, compression_threshold / compression_ratio only touch the model and clip strength math - if your combined LoRA weight exceeds the threshold, it gets compressed down at the chosen ratio (2:1 default, dial toward 100 for a hard cap). Compression has nothing to do with how many keywords get extracted.

The inputs and outputs that matter

  • text - your prompt containing <lora:...> tags.
  • base_keywords, sort_mode, keyword_extraction_randomness - control which and how many keywords get pulled.
  • compression_threshold, compression_ratio - control LoRA weight compression, independent of keywords.
  • apply_keywords_to_prompt - off strips the LoRA tags but discards the extracted keywords entirely, leaving bare prompt text.
  • seed - locks both the keyword selection and any randomized prompt evaluation.
  • Optional model / clip in - required if you actually want the LoRAs applied, not just the text processed.
  • Outputs: model, clip (patched), prompt (tags removed, keywords mixed in if enabled), keywords (the isolated keyword string on its own), lora_names.

How to install it

Search comfyui-adaptiveprompts in ComfyUI Manager, or clone by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/Alectriciti/comfyui-adaptiveprompts

Restart ComfyUI. No model downloads and no extra dependencies for the node itself - just point it at LoRAs you already have.

Common issues & troubleshooting

LoRAs don't seem to apply. model and clip are optional in the schema, which means the node happily runs as a pure text processor if you don't wire them in - you'll get clean text output but no actual LoRA effect on your generation. Wire both through if you want this node to replace a separate LoRA loader in your graph.

You're confusing this with badjeff's Lora Tag Loader. The README explicitly recommends badjeff's separate comfyui_lora_tag_loader pack as a lighter alternative if all you need is <lora:name:weight> parsing without the keyword-extraction machinery - same tag syntax, different author, different node. Don't install both expecting them to be the same thing.

Weights still look oversaturated even with compression on. Compression only fires once combined weight crosses compression_threshold; if you're stacking a lot of low-weight LoRAs that individually stay under it, nothing gets compressed. Pair this node with NormalizeLoraTags upstream if you want tighter control over the combined total before it ever reaches this node.

Categoryloaders

Inputs (10)

NameTypeDefaultDescription
textSTRINGInput text. Supports <lora:name>, <lora:name:weight>, <lora:name:unet:clip>, or <lora:name:unet:clip:keyword>.
compression_thresholdFLOAT1.00.1–10The maximum combined weight allowed before compression kicks in. This only affects model and clip, not keywords
compression_ratioFLOAT2.01–100How aggressively to compress excess weight. 1.0 = Off. 2.0 = 2:1 reduction. 100.0 = Hard Limiter.
base_keywordsINT50–100The base number of keywords extracted when a LoRA's keyword weight is exactly 1.0.
sort_modeCOMBOTop FrequencyHow to sort the combined final list of all extracted keywords.
keyword_extraction_randomnessFLOAT0.130–1Blend between Frequency and Randomness. 0.0: Pure Frequency (Always picks top tags). 1.0: Pure Randomness (Ignores frequency, fully shuffled). Values in between blend the two, allowing occasional variety in tag selection.
apply_keywords_to_promptBOOLEANtrueIf true, extracted keywords are mixed into the prompt. If false, lora tags are stripped and keywords are ignored, leaving only the prompt text.
seedINT00–18446744073709550000Locks the randomness for prompt evaluation and keyword selection.
modeloptMODELβ€”
clipoptCLIPβ€”

Outputs (5)

NameTypeDescription
modelMODELβ€”
clipCLIPβ€”
promptSTRINGβ€”
keywordsSTRINGβ€”
lora_namesSTRINGβ€”