LoRA Txt Loader
Your LoRA trigger words, in a plain .txt file next to the model
- model
- clip
- model
- clip
- positive_prompt
- lora_path
Every LoRA you've ever downloaded has a trigger word, and finding it is the annoying part. Most loader nodes pull it from one of two places: the .safetensors metadata (often empty or auto-generated garbage, especially on self-trained models), or the Civitai API (needs internet, and dies the moment a model is unlisted, deleted, or simply never uploaded). LoRA Txt Loader does neither. You keep a plain .txt file next to the LoRA and the node reads it. That's the whole trick, and it's why this pack works fully offline, for every model you own, including ones that have never seen the inside of Civitai.
If you train your own LoRAs, you already know the trigger words - you just hate copy-pasting them from a notes file every single time. This is the node that fixes that. It's a small pack, not a household name like rgthree's Power Lora Loader, but it nails a real, decade-old pain: the "where do I find the trigger words for the loras I have?" question that people have been asking since 2023.
How it works
The model side is unremarkable. Pick a LoRA, and the node does what the native Load LoRA node does: it calls comfy.sd.load_lora_for_models under the hood and hands you back a patched model and CLIP at whatever strengths you set. Drop-in replacement territory.
The trigger-word side is where it gets clever. When you select a LoRA in the browser, the frontend asks the backend for the .txt file that shares the LoRA's base name (my_character.safetensors → my_character.txt) and auto-fills the positive_prompt text box. Edit that box freely - the reset button restores the original file contents, and picking a different LoRA refills it. One important detail: on the Python side the node just passes the box text straight through as an output. The .txt reading is a UI convenience, not a hidden injection. Nothing gets silently appended to your prompt; what you see in the box is exactly what comes out.
That's also the trap. Patching happens on the model and clip outputs. The trigger words travel out on a separate positive_prompt STRING output. If you only wire model and clip into your sampler, the words do nothing - the LoRA applies, but the trigger never reaches the text encoder. Wire positive_prompt into a CLIP Text Encode, or into a Text Concatenate node alongside a base prompt for the cleaner workflow, and suddenly the words matter.
The inputs that matter
model/clip- straight from your checkpoint loader.lora_name- click it to open the tree browser. Folders collapse, search filters across everything, and it remembers where you were.strength_model/strength_clip- standard LoRA strengths, default 1.0. Dialstrength_modeldown when a LoRA is overpowering your prompt.positive_prompt- auto-filled from the.txt, fully editable.
Outputs: patched model and clip, the positive_prompt string, and lora_path (the absolute path of the loaded file, handy for workflow logic).
Installing it
ComfyUI Manager → search "LoRA Txt Loader" → install, or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/kwokkakiu233/comfyui-lora-txt-loader
Restart ComfyUI. No extra Python dependencies - the repo ships no requirements.txt, so it's one of the rare custom nodes that won't drag the rest of your environment into a dependency fight.
Where people get burned
- Trigger words "do nothing." You skipped the
positive_promptoutput. It's not wired to a text encoder, so the words never enter the prompt. Most common mistake, and not the node's fault. - The box stays empty. The
.txtmust sit next to the LoRA with the exact same base name, subfolders included:models/loras/sub/my_lora.safetensorsneedsmodels/loras/sub/my_lora.txt. - Newly downloaded LoRA is missing. Just reopen the tree browser - it re-queries the backend every time it opens, so new files show up without a ComfyUI restart. (The README mentions a refresh button, but the shipped UI doesn't have one; reopening the tree does the same job.)
- Right-click menu lets you save, activate, and manage multiple versions of trigger words per LoRA, stored in a
[lora_name].versions/folder next to the model. The active version is always the same-named.txt.
The tree browser UI is frontend JavaScript, so if you're on a thin client where it misbehaves, the pack's dropdown variant exists for exactly that reason. But for the "trigger words live in a text file I control" workflow, this is the node to reach for.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| lora_name | COMBO | 0 options: | |
| strength_model | FLOAT | 1.00-10–10 | — |
| strength_clip | FLOAT | 1.00-10–10 | — |
| positive_prompt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| positive_prompt | STRING | — |
| lora_path | STRING | — |