LoraLoaderTagsQuery
The LoRA loader that remembers your trigger words, so you don't have to
- model
- clip
- MODEL
- CLIP
- STRING
You load a character LoRA, burn a few generations, and the output looks nothing like the character. Nine times out of ten that's not the weights' fault - it's the trigger word. That word lives on the CivitAI page in a description you skimmed once and never saw again, and the filename certainly isn't telling you. LoraLoaderTagsQuery (the whole "LoadLoraWithTags" pack is this one node) exists to end that cycle: it loads a LoRA exactly like the built-in LoraLoader, then goes and fetches the trigger words for you, caches them, and optionally appends them straight onto your prompt.
How it works
The trick is the hash. On first use - or whenever the node has no cached tags for that file - it computes the LoRA file's SHA-256, then calls CivitAI's public model-versions/by-hash/{hash} endpoint with no API key. If the file is on CivitAI, the API returns its trainedWords and the node saves them to loras_tags.json in your ComfyUI working directory. Because the lookup is by content hash, you can rename the file to anything and it still resolves.
From there it behaves like a stock LoraLoader: it patches the weights via ComfyUI's own load_lora_for_models, so your MODEL and CLIP come out exactly as if you'd used the core node. It even keeps the loaded weights in memory between runs so back-to-back generations don't re-read the file from disk.
The inputs that matter
model, clip, lora_name, strength_model, and strength_clip are all stock - drop this node where a LoraLoader sits and it works. The interesting ones are the five toggles:
query_tags(on by default) - whether to hit the CivitAI API when tags aren't cached yet.tags_out(on by default) - whether the fetched tags get appended to your prompt.opt_prompt- an optional STRING input for your prompt. Note it'sforceInput, so you have to wire it from another node; you can't type into it. The STRING output is your prompt, with,plus the tags bolted on whentags_outis on.bypass- disable the node without aiming both sliders at 0.print_tags- dump the tags to the terminal so you can see what got injected.force_fetch- re-hash the file and re-query even if tags are already cached.
Outputs: MODEL and CLIP into your sampler, plus the STRING into a CLIP Text Encode (Prompt). The README also boasts "actual alphabetical order" on the LoRA dropdown - true, case-insensitive sort, unlike the stock widget's ordering.
Install
Via ComfyUI Manager, search LoadLoraWithTags. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Extraltodeus/LoadLoraWithTags
# restart ComfyUI
That's it - no requirements file, no model downloads. It uses requests, which ComfyUI already ships.
Where people get burned
- It's unmaintained. The README ends with "I don't intend to update this node any further." It works today, but there's no one fixing it if a ComfyUI update breaks it - which, post-Nodes 2.0, is a real risk for small custom nodes.
- It needs the internet. First fetch hashes the whole file (slow on big LoRAs) and calls CivitAI. If the API is down or the model isn't on CivitAI - private, deleted, hosted elsewhere - you get a polite "No informations found." and an empty entry cached, so it won't retry until you flip
force_fetch. - Find
loras_tags.jsonin your ComfyUI working directory, not in the node's folder. Delete it to wipe the cache. - The name confusion: search Manager for the pack "LoadLoraWithTags", but the node you place is LoraLoaderTagsQuery.
Honest take: it's a tidy one-trick node, and the trigger-word problem is real - the concepts KB calls out how often people run LoRAs with a trigger that was never active. But if you're choosing fresh, rgthree's Power Lora Loader also pulls trigger words from CivitAI and is actively maintained. Pick this one when you want the feature without installing rgthree's whole suite; just know the author walked away.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| lora_name | COMBO | 0 options: | |
| strength_model | FLOAT | 1.0-10–10 | — |
| strength_clip | FLOAT | 1.0-10–10 | — |
| query_tags | BOOLEAN | true | — |
| tags_out | BOOLEAN | true | — |
| print_tags | BOOLEAN | false | — |
| bypass | BOOLEAN | false | — |
| force_fetch | BOOLEAN | false | — |
| opt_promptopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| STRING | STRING | — |