LoRA Trigger Loader
Stop keeping trigger words in a notepad
- model
- clip
- model
- clip
- trigger_words
Every LoRA comes with trigger words, and every LoRA user has a text file or a browser tab full of them. LoRA Trigger Loader is the node that ends that: it's a normal LoRA loader, but it remembers the trigger words you save for each LoRA and hands them to your prompt as a STRING output. Pick the LoRA, the trigger field fills itself, wire the words into your CLIP Text Encode, done.
If you've used rgthree's Power Lora Loader, you know this trick - it reads trigger words off the LoRA file or fetches them from CivitAI. This is the lighter, fully-local version: no CivitAI lookup, no scraping. You save your own words once, and the pack keeps them for you.
How it works
Mechanically, it's the stock LoRA loader wearing a name tag. It calls the same comfy.sd.load_lora_for_models path core ComfyUI uses, applies strength_model and strength_clip, and passes the model and clip through unchanged. What makes it different:
- A
trigger_wordsSTRINGoutput that's just whatever is in thepreset_trigger_wordswidget. - A "Save Trigger Preset" button (added by the pack's web extension) that writes your words to a JSON file for the selected LoRA.
- Auto-fill: the moment you select a LoRA that has a saved preset, the trigger field loads those words from the server. Selecting "None" or a LoRA with no preset just clears the field.
Presets live at ComfyUI/user/__prompt_tools/lora_trigger_presets.json - deliberately outside the custom-node folder, so updating or reinstalling the pack can't wipe them. Saving an empty preset deletes that LoRA's entry, and presets from the pack's old location are copied over automatically the first time they're touched.
The inputs and outputs that matter
model/clip- standard MODEL and CLIP inputs from your checkpoint loader.lora_name- dropdown of every LoRA inComfyUI/models/loras.strength_model/strength_clip- the usual weights. Defaults to 1.0/1.0, and note the range goes to ±10. If both are 0 (or the LoRA is "None"), the node is a bypass and returns the model unchanged.preset_trigger_words- auto-filled, but editable. Because this widget is part of the node, the words travel with your workflow - they get embedded in output PNG metadata like everything else, so when someone drags your image back into ComfyUI, the triggers come along.
Outputs are model, clip (wire to your KSampler as you would any LoRA), and trigger_words - wire that into a CLIP Text Encode (prepend it to your prompt with a comma) or into whatever else takes a STRING.
The gotchas
The button is added by a web extension, so it only appears once that loads - restart ComfyUI after installing, and hit Ctrl+F5 if the browser is showing a stale UI. And remember the button is a save, not an auto-save: editing the field doesn't persist until you click it. The auto-fill only reads presets.
Also, since the trigger words ride in the widget, they're part of the workflow JSON and its PNG metadata. That's a feature for sharing and a privacy note for posting - your LoRA names and triggers are in every image you export.
Installing it
Part of ComfyUI-Random-Text-Picker ("ComfyUI Prompt Tools"). Via Manager: search "Random Text Picker" or "Prompt Tools", install, restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/hvnyiv/ComfyUI-Random-Text-Picker
Restart and you're done - no extra Python dependencies, no model files to download. Update with git pull plus a restart. Your presets survive updates because they live in the user directory, not the node folder.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| lora_name | COMBO | 1 options: None | |
| strength_model | FLOAT | 1.00-10–10 | — |
| strength_clip | FLOAT | 1.00-10–10 | — |
| preset_trigger_words | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| trigger_words | STRING | — |