πͺ π Text LoRA Finder & Loader
Put the LoRA's name in the prompt and let the graph load it for you
- model
- clip
- MODEL
- CLIP
- loras
If you're sweeping prompts with a queue, the LoRA loader is the bottleneck: every variation that uses a different adapter means a different graph, or a manual dropdown change between runs. This node moves adapter selection into the text. Write ana de armas, soft light, 85mm and if a LoRA in your selected folder matches "Ana De Armas", it gets loaded onto the model and the CLIP on the way through. Nothing matched, and the model passes through untouched.
How it works
It builds the same folder-scoped LoRA list the visual loader uses, then works out what string to look for per LoRA based on search_for:
Parsed Name- the cleaned human name (Ana De Armas), the same parsing the pretty loader does.Filename-krea2_Ana-De-Armas_v1.safetensors.Filename without extension-krea2_Ana-De-Armas_v1.Custom Regex- your own pattern, matched against the text, with the matched text then compared against each LoRA's pretty name, filename and display name.
In the non-regex modes it scans the prompt for each name as a whole word, case-insensitively ((?<!\w)name(?!\w)), so soft won't fire inside softbox. Matches are collected with their positions, sorted left to right, and then find_amount decides how many get used: with First match (Front) you get the earliest N, with Last match (Back) the last N. They're applied in order, so the last one stacks on top of the first - which is the same as putting two loader nodes in a row.
One clarification, because it's easy to get wrong: this is name matching, not tag parsing. The README describes it scanning for <lora:name:strength> tags; in the shipped code there's no tag syntax handling and no per-tag strength, and the strengths come from the node's own strength_model / strength_clip widgets, applied to everything it finds. You can approximate tag behaviour in Custom Regex mode - the match is compared against known names, so a pattern with a lookbehind that captures only the name (for example, everything after <lora: up to the next colon) will resolve.
Inputs and outputs
model and clip in, then folder (the same filter as the rest of the pack - empty for everything, or a subfolder name, wildcards allowed), search_for, custom_regex, search_mode, find_amount (1β20), both strengths, and output_format. text is an optional input for the prompt.
Outputs: the patched MODEL and CLIP, and loras - a comma-separated STRING naming what actually loaded. That string is your receipt. Check it before you judge the image: an empty result means nothing matched and you generated with the unpatched model.
Install
ComfyUI Manager β search SaturnNodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/KOFiblto/ComfyUI-SaturnNodes
Restart. Requirements are Pillow, numpy and piexif; the node itself is standard LoRA loading through ComfyUI's own machinery. Category: πͺ SaturnNodes/Loaders. A LoraTextFinder alias exists for older workflows.
Where people get burned
Nothing loads and you don't notice. No match is not an error - the model and clip come back unpatched and the loras output is empty. That's the first thing to check when an image looks like the base model.
The name you typed isn't the name it looks for. search_for: Filename means you must type the filename including extension, which is a horrible prompt. Parsed Name is what you usually want, and it follows the loader's parsing rules - the second underscore-separated chunk, camelCase split. A file named my_lora_final.safetensors parses to Lora, and typing my lora final won't match it.
One strength for all of them. Stack two LoRAs with find_amount: 2 and both get the same weight. There's no per-LoRA weighting here; if you need 0.8 on the character and 0.4 on the style, use two loader nodes.
The LoRA loaded and the image still isn't right. Architecture mismatch is the classic - an SDXL adapter on a Flux base does nothing useful, and cross-family adapters are unreliable even when they technically load. Also remember that the name match and the trigger word are different things: plenty of LoRAs need both.
Ordering surprises you. Matches are applied left to right in the prompt, and stacking order changes the result. Reordering the words in your prompt reorders the LoRAs. If a style is eating a character, move the style mention earlier or drop it out of the text and load it on a separate node.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| clip | CLIP | β | |
| folder | STRING | β | |
| search_for | COMBO | Parsed Name | 4 options: Parsed Name, Filename, Filename without extension, Custom Regex |
| custom_regex | STRING | β | |
| search_mode | COMBO | First match (Front) | 2 options: First match (Front), Last match (Back) |
| find_amount | INT | 11β20 | β |
| strength_model | FLOAT | 1.00-100β100 | β |
| strength_clip | FLOAT | 1.00-100β100 | β |
| output_format | COMBO | Filename | 6 options: Parsed Name, Filename, Filename without extension, Relative Path, Full Path, Custom Regex |
| textopt | STRING | β |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | β |
| CLIP | CLIP | β |
| loras | STRING | β |