Nodes/ComfyUI-SaturnNodes/πŸͺ πŸ–ΌοΈ Visual LoRA Loader
ComfyUI Node

πŸͺ πŸ–ΌοΈ Visual LoRA Loader

Your LoRA folder as a wall of thumbnails, with the ones you actually use on top

By KOFibltoΒ·Created 2 months agoΒ·Updated 2 days agoΒ· 1
πŸͺ πŸ–ΌοΈ Visual LoRA Loader
  • model
  • clip
  • MODEL
  • CLIP
  • lora_name
β—„folderβ–Ί
β—„strength_model1.00β–Ί
β—„strength_clip1.00β–Ί
β—„display_modeScrollableβ–Ί
β—„sort_loras_byName (A-Z)β–Ί
β—„sort_folders_byName (A-Z)β–Ί
β—„folder_positionFolders Firstβ–Ί
β—„content_alignmentLeft Alignedβ–Ί
β—„output_formatFilenameβ–Ί
β—„custom_regexβ–Ί

Past a hundred LoRAs you stop recognising filenames and start recognising pictures. This is the pack's flagship node: a browsable grid of preview cards inside the node, click to select, multi-select to stack, plus sorting and usage ranking so the three adapters you actually reach for live at the top instead of buried under six hundred downloads you never used twice.

Every ecosystem has one of these - rgthree's Power Lora Loader is the famous one, and its breakage under ComfyUI's Nodes 2.0 frontend rewrite turned a utility node into a year-long argument about upstream compatibility. The reason people get attached is simple: a four-hundred-name dropdown is not a user interface.

How the thumbnails get there

Two sources, in order:

  1. A sidecar image. If there's a mypicture.png / .jpg / .jpeg / .webp sitting next to mypicture.safetensors in your LoRA folder, that's the preview. Downloading model pages from Civitai usually gives you both files; dropping them in the same folder is all it takes.
  2. Civitai by file hash. With the scraping toggle enabled, the node computes the SHA256 of the LoRA file and asks Civitai's API to find the model version by hash, then downloads the first preview image next to the LoRA. This is opt-in - the code defaults to off; the repo's example .env ships it enabled, so if you copied that file, it's on. An optional Civitai API key raises your rate limit. The TMDB path is the same idea for celebrity LoRAs, matching the parsed person name against TMDB's search.

Keys and toggles live in a local .env in the pack's user directory, never in the workflow, and the debug export excludes them. Failed lookups are recorded so the node stops retrying hopeless files, with a πŸ—‘οΈ Clear Scrapes Cache button in settings when you want another go.

Usage tracking is local: it counts how often each LoRA loads and shows rank badges (πŸ”₯ and the medal tiers) in the picker, which is what makes Usage (High to Low) sorting useful.

The inputs that matter

model and clip in, then folder - the same filter the rest of the pack uses (empty for everything, or a subfolder name) - and strength_model / strength_clip. Note that the two strengths apply to the whole selection; select three LoRAs and all three get the same weight.

Then the library-management widgets, all advanced: display_mode (Scrollable vs Show All), sort_loras_by (name, usage high/low, date modified), sort_folders_by (name, total usage, average usage, LoRA count), folder_position (Folders First vs Root LoRAs First), content_alignment (Left Aligned / Right Aligned), and output_format + custom_regex for the name string.

Outputs are MODEL, CLIP, and lora_name - a comma-separated list of everything that actually loaded, in load order. For filenames that's ideal; just don't feed it to a node expecting a single name.

Two behaviours worth knowing: selection is driven by the frontend (the visible picks are serialized as JSON and handed to the backend at execution), and the hidden selection mode supports Sequential, Random and Random (No Replace) cycling, with a per-node state file remembering which item it assigned to each queued prompt. That's the "try fifty LoRAs overnight" feature - no duplicates until the pool empties, then it refills. And the fast path: both strengths at 0 skips the disk read entirely while still counting usage and returning names, which makes it a name-collector if you need one.

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 - no vision models, no torchvision, since all the image work is preview thumbnails. Category: πŸͺ SaturnNodes/Loaders (FolderLoraLoaderVisualPrettyV2 is an alias for old graphs).

Where people get burned

The grid renders as a stack of text fields. That's the frontend, not the pack. The author's own note is that this node breaks on Frontend V1 (LiteGraph classic) and works on V2 (the Vue UI) - so run it on the newer frontend. The generic version of this problem is Nodes 2.0 breaking third-party node rendering across many popular packs, and the standard workaround is switching the frontend back.

No thumbnails, and the first scan takes forever. The first scrape run hashes every LoRA in the folder - that's a full read per file, and 300 adapters is a lot of disk. It's a one-time pass per file, failures are cached, and sidecar previews you supply yourself skip it entirely.

The wrong celebrity. TMDB matching uses the parsed name, so a quirky filename can resolve to a random person. It's a scraped thumbnail, not a database record - correct it by putting the right image next to the file.

Selection seems ignored at execution time. Multi-select and the cycling modes are frontend state pushed at run time; if a run used the wrong LoRAs, look at the lora_name output. It reports what actually loaded, which settles it immediately.

Everything got the same weight. One strength pair, whole selection. If a character at 0.7 and a style at 0.35 are both needed, that's two loader nodes.

CategoryπŸͺ SaturnNodes/Loaders

Inputs (12)

NameTypeDefaultDescription
modelMODELβ€”
clipCLIPβ€”
folderSTRINGβ€”
strength_modelFLOAT1.00-100–100β€”
strength_clipFLOAT1.00-100–100β€”
display_modeCOMBOScrollable2 options: Scrollable, Show All
sort_loras_byCOMBOName (A-Z)6 options: Name (A-Z), Name (Z-A), Usage (High to Low), Usage (Low to High), Date Modified (Newest First), Date Modified (Oldest First)
sort_folders_byCOMBOName (A-Z)5 options: Name (A-Z), Name (Z-A), Total Usage (High to Low), Average Usage (High to Low), Total LoRAs (Most First)
folder_positionCOMBOFolders First2 options: Folders First, Root LoRAs First
content_alignmentCOMBOLeft Aligned2 options: Left Aligned, Right Aligned
output_formatCOMBOFilename6 options: Parsed Name, Filename, Filename without extension, Relative Path, Full Path, Custom Regex
custom_regexSTRINGβ€”

Outputs (3)

NameTypeDescription
MODELMODELβ€”
CLIPCLIPβ€”
lora_nameSTRINGβ€”