Nodes/LoRA Preview/Load LoRA (with Preview)
ComfyUI Node

Load LoRA (with Preview)

A LoRA Loader That Finally Shows You Which LoRA You Picked

By shhostweb-beep·Created 18 days ago·Updated 18 days ago· 0
Load LoRA (with Preview)
  • model
  • clip
  • MODEL
  • CLIP
◄lora_name▾►
◄strength_model1.00►
◄strength_clip1.00►

Your LoRA folder is a wall of opaque filenames

inkyo_illustrious_style_v3_final_fixed.safetensors. artist_style_000012500.safetensors. The one someone uploaded with a Persian filename because that's what their folder looked like. Six months later you remember what two of them do, and the dropdown offers nothing but the string - so you pick one, run it, look, undo, pick the next. That's why "is there a loader that shows LoRA previews?" gets asked in r/comfyui every few months, usually answered with a fork of somebody's entire utility suite.

This pack is the small answer: one node, one toggle, zero Python dependencies, and the LoRA's preview sitting under the widgets while you work.

What the node actually is

A stock LoRA loader with a picture stapled to it - and not a reimplementation. The whole load() method is a delegation:

def load(self, model, clip, lora_name, strength_model, strength_clip):
    return nodes.LoraLoader().load_lora(model, clip, lora_name, strength_model, strength_clip)

That's ComfyUI's own LoraLoader.load_lora, so the merge is identical to core and nothing about your generation changes. If the LoRA looks wrong here it looks wrong everywhere, which makes this a genuine drop-in swap.

The inputs that matter

Same five fields as core, same ranges (-100 to 100, step 0.01, default 1.0), so no new muscle memory:

  • model and clip - from your checkpoint loader. It doesn't touch the VAE, so decode stays a separate branch.
  • lora_name - the dropdown. Anything in ComfyUI/models/loras and its subfolders appears here.
  • strength_model and strength_clip - the weight. Split them when the LoRA behaves differently on conditioning than on weights, which is common with anime styles.

Outputs are MODEL and CLIP: model onward to the sampler (or another loader, if you're chaining), clip to your text encoders. And don't reach for a universal weight - 0.5–0.8 is SDXL-era advice, and on newer architectures people run 1.0 or above because backing off costs likeness. Check the model page.

How the preview image gets found

No API, no key. The node registers a route on ComfyUI's own server - /lora_preview?name=<lora file> - which resolves the LoRA through folder_paths, strips the extension, and looks for a sibling file with a matching stem, in this order:

my_lora.preview.png
my_lora.preview.jpg
my_lora.preview.jpeg
my_lora.preview.webp
my_lora.png
my_lora.jpg
my_lora.jpeg
my_lora.webp

That .preview.png convention is A1111/Forge's, so previews already sitting next to your LoRAs from years of downloads probably work as-is. Subfolders are fine, and dropping in a new image takes effect without a restart - the route sends Cache-Control: no-cache. Match none of those eight and the node says "No preview image found" in grey: not an error, just a filename mismatch. The list is a hardcoded PREVIEW_SUFFIXES in __init__.py, so there are no .gif or video previews here; Lora Manager's browser covers that if you need it.

The Previews toggle flips the image box off, and that setting is written into the node's properties - so it travels with the workflow rather than resetting every time you open it.

Installing it

No requirements.txt, and pyproject.toml declares dependencies = []. It imports folder_paths, nodes, aiohttp and PromptServer, all of which ship with ComfyUI - so this is the rare custom node that cannot break your environment.

cd ComfyUI/custom_nodes
git clone https://github.com/shhostweb-beep/ComfyUI-LoRA-Preview

Restart, then hard-refresh with Ctrl+F5. That is not optional: the image box is a JS extension served from the pack's js/ folder, and a cached frontend loads the node with no image area at all. Manager users can search LoRA Preview - the repo is registry-ready (v1.0.1, publisher starhostig) - and if the search comes up empty, clone it.

The part nobody advertises

The pack also adds a hover preview to any LoRA dropdown, including the stock LoraLoader: open the picker, hover an entry, and a 300px preview appears beside the menu. Even if you never place LoraLoaderPreview itself, installing the pack makes every loader in your graph easier to read.

Where people get burned

Mostly on the preview, not the generation. The image attaches by filename stem, so styles/inkyo_v3.safetensors wants styles/inkyo_v3.png beside it - not inkyo.png one directory up, and not stashed in a previews/ folder. If the preview never renders and the node just looks oversized, the extension didn't load: hard-refresh, then restart. And sharing: the workflow generates identically for whoever opens it, but they need this pack installed or the node goes red and missing.

Categoryloaders

Inputs (5)

NameTypeDefaultDescription
modelMODEL—
clipCLIP—
lora_nameCOMBO0 options:
strength_modelFLOAT1.00-100–100—
strength_clipFLOAT1.00-100–100—

Outputs (2)

NameTypeDescription
MODELMODEL—
CLIPCLIP—