Lora Info
Never forget a LoRA's trigger words again
- lora_name
- trigger_words
- example_prompt
You know the feeling: you've got 200 LoRAs in a folder, you grabbed a few from a random workflow, and now you can't remember whether that anime style needs ch9ractername in the prompt, what base model it was trained for, or what weight it wants. The model page said it all once, back when you downloaded it. Lora Info is the node that stops you hunting for that page again.
Pick a LoRA from a dropdown and the node reaches out to CivitAI, pulls the trigger words, the base model, and even the example images with their full generation metadata, then shows it all right in the node. It was the author's first ComfyUI node - he posted it to r/StableDiffusion as a frustrated-new-user fix ("new to generative AI, sd, LLMs.. basically everything lol") - and honestly it's the kind of small thing that makes a big folder usable.
How it works
The neat trick is that it never makes you type a CivitAI model ID or URL. Under the hood it hashes the LoRA file with SHA-256, then calls CivitAI's public API at https://civitai.com/api/v1/model-versions/by-hash/{hash}. CivitAI indexes every model version by that hash, so the node gets the matching record: trainedWords, baseModel, and the gallery images - and CivitAI sample images carry the full generation metadata, including the prompt. The node formats all of that into one readable block.
No API key, no account. That's the whole appeal: it's a public read endpoint, and you never even think about it.
One detail worth knowing: results are cached to a db.json file next to the pack, keyed by LoRA filename. First lookup hits the network; every run after that is instant even if CivitAI is slow or down. If you re-add a file that matches an old name, you might occasionally see stale info - clear db.json if you suspect that.
Inputs and outputs
There's one input and it's a dropdown, not a text box: lora_name, populated from every file in your models/loras folder. That's the whole setup.
Three outputs, all STRING:
- lora_name - just echoes back the filename you picked. Mostly a pass-through you can ignore.
- trigger_words - the LoRA's trained trigger words, comma-joined. This is the one you actually want.
- example_prompt - the prompt from the first example image's metadata, when the author included one. Great as a starting point to wire straight into a positive prompt.
Because they're plain strings, you can connect them to anything that takes STRING or TEXT - a text concat node, the CLIP Text Encode positive prompt, or rgthree's Display Any node to read the output. The full formatted block (URL, triggers, base model, example links, and per-image metadata) renders inside the node's own UI widget.
Installation
ComfyUI Manager is the easy route: search "lorainfo" or "jitcoder" and click install. Or clone it manually:
cd ComfyUI/custom_nodes
git clone https://github.com/jitcoder/lora-info.git
Restart ComfyUI (and hard-refresh the browser tab) and you're done. No model downloads, and no extra Python dependencies - it uses requests, Pillow, torch and numpy, all of which ship with ComfyUI already. Its pyproject.toml declares nothing of its own. This is about as painless as a custom node gets.
Common issues
The classic trap is that nothing updates until you queue a prompt. ComfyUI only evaluates nodes when you run the graph. You'll pick a LoRA, watch the node's text widget fill in (the frontend does a live fetch when you change the dropdown), connect the outputs, then wonder why your prompt text is still empty - because it fills on execution, not on connection. Click Queue Prompt and it all appears.
If the node doesn't show up in node search after installing, that's the same restart story - ComfyUI imports the Python fine, but the frontend needs a fresh load to register the nodes and the JS extension that draws the info box.
The other realistic failure is the empty-result one: if a LoRA was never uploaded to CivitAI, or the file was edited after download so the hash no longer matches, the API returns nothing and you get empty strings. No error, just blanks. That's not the node being broken - it genuinely has no data to show. And a quick sanity note: this tells you what the LoRA is; it doesn't fix a LoRA that won't run because it's for the wrong base. Flux LoRAs don't load on SDXL no matter how nicely the trigger words are formatted. The baseModel line is there exactly so you catch that before you burn the queue.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_name | COMBO | 0 options: |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| lora_name | STRING | — |
| trigger_words | STRING | — |
| example_prompt | STRING | — |