LoRA Tester v03
Batch-test your LoRA folder without touching your workflow
- model
- clip
- model
- clip
- lora_name
- lora_path
- trigger_words_all
- trigger_words_selected
- combined_prompt
- lora_list
- total_loras
- selected_loras
- associated_images
- model_strength_used
- clip_strength_used
- gallery_images
Testing LoRAs is usually a grind: swap the file, re-run, compare, swap again. LoRA Tester v03 turns that into a search-and-select problem. It scans your LoRA folders, filters by filename, architecture, category, and trigger words, picks one (or a random one), applies it to your model and CLIP, and can even insert the trigger words into your prompt for you. It's the highest-leverage node in the AAA Metadata System pack's LoRA family, and it's the one I'd reach for when I have forty style LoRAs and no idea which ones are actually good.
The killer feature is the filtering. Instead of scrolling a dropdown, you type comma-separated search terms - and -term to exclude. So -pony,-inpaint in file search terms skips everything tagged for those variants. Combined with seed (0 = pick a random matching LoRA), it becomes a lottery machine for your own library: re-run and see what different LoRAs do to the same prompt.
How it works
The node maintains a local catalog of your LoRAs in lora_tester_db.json, recording each file's architecture, category, and trigger words. On each run it filters that catalog by your criteria, picks the LoRA at seed (or a random one), and in direct_load mode applies it to the MODEL and CLIP you feed in. In info_only mode it skips loading entirely and just hands you the info - handy for building selection UIs. If a LoRA has no trigger words recorded, query_civitai will hit the Civitai API to fetch them (that's a network call, so keep it off unless you need it). It also gathers "associated images" - same-basename previews sitting next to your LoRA files - into a gallery.
The prompt_placement setting decides whether trigger words get spliced into the beginning or end of your input_prompt, or not at all. If you're testing whether a LoRA does anything, wire the combined prompt and the images together and compare.
Inputs and outputs that matter
dir_search_terms/file_search_terms/additional_path- how you find the LoRAs. Comma-separated,-termto exclude, andadditional_pathfor folders outside the standard ones.architectureandcategory- filters against the catalog. "Any" if you don't care.mode-direct_load(needsmodelandclipwired in) orinfo_only.model_strength/clip_strength- the multipliers, default 0.8 / 1.0.seed- 0 = random, 1 = first in the filtered list.query_civitai/force_civitai_fetch- the network options. Leave off unless a LoRA is missing triggers.
Outputs: model, clip (the modified ones in direct_load), lora_name, lora_path, trigger_words_all, trigger_words_selected, combined_prompt, lora_list, total_loras, selected_loras, associated_images, gallery_images, and the two strength values used.
Installing it
Part of AAA Metadata System by Eric Hiss (GitHub: EricRollei). Via ComfyUI Manager (search "AAA Metadata System") or:
cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/AAA_Metadata_System.git
cd AAA_Metadata_System
pip install -r requirements.txt
Restart ComfyUI. requests (for the Civitai calls) is in the core requirements.
Common issues
If nothing ever matches, the catalog is empty or the tags are wrong - run it once with empty filters so it scans and indexes, then check lora_list / total_loras. If direct_load mode errors, you forgot to wire model and clip in; that mode genuinely needs them. Random selection (seed 0) can feel broken when you "get the same one twice" - that's the RNG, not a bug; bump the seed. And remember Civitai queries are real network requests: on a fresh folder with query_civitai on, the first run can be slow while it fetches trigger words for everything.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| dir_search_terms | STRING | Comma-separated terms to search in directory paths. Use -term to exclude. | |
| file_search_terms | STRING | Comma-separated terms to search in LoRA filenames. Use -term to exclude (e.g., -pony,-inpaint). | |
| additional_path | STRING | Additional directory to search for LoRAs | |
| architecture | COMBO | Any | Filter by model architecture |
| category | COMBO | Any | Filter by LoRA category |
| trigger_search | STRING | Search terms to match in trigger words. Use -term to exclude. | |
| seed | INT | 00–18446744073709550000 | LoRA number to load (0 = random, 1 = first in list) |
| mode | COMBO | direct_load | direct_load: Apply LoRA to model/CLIP, info_only: Just output LoRA info |
| model_strength | FLOAT | 0.80-5–5 | Strength multiplier for model (used if direct_load mode) |
| clip_strength | FLOAT | 1.00-5–5 | Strength multiplier for CLIP (used if direct_load mode) |
| use_database_defaults | BOOLEAN | true | Use LoRA-specific defaults from database if available |
| query_civitai | BOOLEAN | false | Automatically query Civitai for trigger words when LoRA has none |
| force_civitai_fetch | BOOLEAN | false | Force fetch from Civitai even if tags already exist |
| prompt_placement | COMBO | auto | Where to place trigger words: auto (use database setting), beginning, end, or none (no insertion) |
| max_gallery_images | INT | 501–200 | Maximum number of images to include in gallery |
| gallery_image_size | INT | 512128–1024 | Target size for gallery images (they will be resized to this) |
| modelopt | MODEL | Input model (required for direct_load mode) | |
| clipopt | CLIP | Input CLIP (required for direct_load mode) | |
| input_promptopt | STRING | Input prompt text to combine with trigger words | |
| primary_trigger_overrideopt | STRING | Override the primary trigger word selection |
Outputs (14)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| lora_name | STRING | — |
| lora_path | STRING | — |
| trigger_words_all | STRING | — |
| trigger_words_selected | STRING | — |
| combined_prompt | STRING | — |
| lora_list | STRING | — |
| total_loras | INT | — |
| selected_loras | INT | — |
| associated_images | IMAGE | — |
| model_strength_used | FLOAT | — |
| clip_strength_used | FLOAT | — |
| gallery_images | IMAGE | — |