LoRA Visual Selector
Stop guessing LoRA filenames — see the cards and pick
- model
- clip
- model
- clip
- lora_name
- lora_prompt
The normal ComfyUI way of loading a LoRA is a text dropdown and a strength box, which is fine until your models/loras folder is thirty files deep and every name is xl_style_v4_merged_final. This node replaces that blind pick with a picture gallery: every LoRA gets a card with a thumbnail, you click the ones you want, and the node does the loading. It's the same LoRA-loading math under the hood - nothing exotic, no API, no key - but it turns a remember-the-filename chore into something you can actually see.
The genuinely clever part is what happens when you check more than one card. Instead of stacking them onto a single model like a normal LoraLoader, the node emits a list of models - one patched MODEL/CLIP per LoRA you selected. Downstream samplers run once per list item, so one workflow produces one image per LoRA, same seed, same prompt. That's a LoRA comparison grid in a couple of clicks: check four, hit go, and eyeball which one actually gives you the likeness you wanted. The "try each LoRA separately to find the culprit" advice from every troubleshooting thread stops being a manual chore.
How it works
The backend is a thin wrapper over ComfyUI's own loader. load_selected_loras parses the selection, resolves each name against models/loras (entries that don't exist are silently dropped), and calls comfy.sd.load_lora_for_models - the exact same function the core LoraLoader uses - with the per-LoRA strengths. Files are cached by path and mtime, so unchanged LoRAs don't get re-read every run.
The visual layer is a DOM widget injected by the pack's JS. The gallery reads your LoRA list from a server endpoint, renders searchable/filterable cards inside the node, and writes your picks into a hidden selected_loras text widget as JSON. Because it's a DOM widget, the gallery lives inside the node itself - it won't show in a mini-node preview, and it renders wherever the frontend renders that kind of widget, so keep ComfyUI updated.
Inputs and outputs that matter
- model / clip - wire from your checkpoint loader, exactly like a regular LoraLoader.
- selected_loras - hidden behind the UI; the JSON array the gallery maintains. You normally never touch it.
- strength_model (default 0.85) and strength_clip (default 1.0) - the default weights for cards you check. 0.85 is classic SDXL-era advice; check each LoRA's page because newer bases often want 1.0. Each card can override its own strength when you set it.
Outputs are all lists: model and clip (patched models, one per selection; plain passthrough if nothing is checked), lora_name (the filenames), and lora_prompt (the per-LoRA trigger word you saved - wire it into a text node or filename and you stop forgetting that one LoRA needs shinobu style in the prompt).
Installing
ComfyUI Manager → search Comfyui-LoRA-VisualSelector, or the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/WocGua/Comfyui-LoRA-VisualSelector
Restart ComfyUI, then find it at loaders/lora → LoRA Visual Selector. No models to download, no heavy dependencies - the only runtime requirement is aiohttp, which ComfyUI's server already ships.
Where people get burned
Your thumbnails live in the extension's own thumbnails/ folder, which is gitignored - a reinstall or re-clone wipes every preview you uploaded. Back that folder up if you curated a big gallery. Cards are empty until you upload images, and the batch ↑ import matches by filename, so name your previews to match the .safetensors files. And remember the silent-skip behavior: if a checked card produces no image, the name didn't resolve against models/loras - the node won't tell you, it just drops it.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| selected_loras | STRING | [] | — |
| strength_model | FLOAT | 0.85-20–20 | — |
| strength_clip | FLOAT | 1.00-20–20 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| lora_name | STRING | — |
| lora_prompt | STRING | — |