A ComfyUI custom node pack for stacking, lora testing (with a XY plotter with a grid output and a custom comparison node), and mirroring LoRAs for multi-model workflows.
Loaders — stack multiple LoRAs onto one or several models (such as workflows for Ideogram4), with a folder filter, favourites, and randomizer lines (Fantastic Lora Loader / Fantastic Lora Loader (Multi-Model)).
Plotter — sweep your LoRA stack across a grid, optionally layering global LoRAs and control/baseline cells (Fantastic Lora Plotter, Fantastic Plotter Global Lora, Fantastic Plotter Image Saver, Fantastic Plotter Grid Viewer).
Mimic — mirror or wire in LoRAs from other loaders (including rgthree's Power Lora Loader, Efficiency/Comfyroll stackers, and stock loaders) onto an independent model/clip path for use in dual-model workflows (like Ideogram4), with a High/Low mode for split models like Wan 2.2, and a Subgraph Companion helper for crossing subgraph boundaries (Fantastic Lora Mimic, Fantastic Lora Mimic Subgraph Companion).
Install
ComfyUI-Manager (recommended): open the Manager, choose Install Custom Nodes, search for Fantastic Loras, and install. Restart ComfyUI when prompted. Requires Comfyui Manager 4.x+, not listed in Legacy versions.
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Adudeguyman/comfyui_fantastic-loras
Restart ComfyUI and hard-refresh the browser (Ctrl+Shift+R). No Python dependencies beyond ComfyUI itself.
Nodes
All nodes appear in the add-node menu under loaders (search "fantastic lora").
Fantastic Lora Loader 📁
Single model + optional CLIP. Internal class name FantasticLoraLoader.
Input
Required?
MODEL
yes
model to patch
CLIP
optional
connect to apply clip strengths and get a patched CLIP back; leave unconnected for model-only
Outputs: MODEL, CLIP. When CLIP isn't connected the CLIP output passes None.
Fantastic Lora Loader (Multi-Model) 📁
Same as above, plus up to 4 additional optional MODEL inputs. Use this when running multiple samplers with different models — patch all of them through one unified lora stack. Internal class name FantasticLoraLoaderMulti.
A compact Model paths: N / 5 ➕ ➖ bar lets you add and remove model input/output pairs dynamically. Each extra model is patched with the same lora stack (model strength only); the shared CLIP is patched once via the primary path.
Using the nodes
Each node has:
📁 Folders — opens the folder filter (see below).
➕ Add Lora — opens the lora chooser (filtered by your enabled folders) to append a lora to the stack.
🎲 Add Lora Randomizer — adds a randomizer line (see below).
One row per lora: an enable checkbox, the lora name (click to swap), a single S (strength) field that applies to both model and clip simultaneously, plus ▲ ▼ to reorder and ✕ to remove.
The S field tracks the CLIP connection live: when nothing is wired into CLIP it shows a dim (no CLIP) note and clip strength is ignored. LoRAs apply top-to-bottom; disabled and zero-strength rows are skipped. The whole stack saves and loads with the workflow.
Tip: Hovering any icon on a lora row shows a tooltip explaining what it does and its current state.
Folder filter
Click 📁 Folders to open a stay-open tree panel:
All (no filter) / None reset or clear everything.
Each row is a folder with a checkbox and lora count. Parent folders are tri-state aggregates — clicking one toggles every folder beneath it; mixed states show as indeterminate. Carets expand/collapse branches.
A folder that contains its own loras and subfolders gets an italic (files here) child row, so flux/styles can be toggled independently of loose files in flux/.
(root) = loras sitting directly in models/loras.
The filter is per-node and saves with the workf
Nœuds dans ce pack
Nœuds 8
FantasticLoraLoader
FantasticLoraLoader
Single model + optional CLIP. Internal class name FantasticLoraLoader. | Input | Required? | | |---|---|---| | MODEL | yes | model to patch | | CLIP | optional | connect to apply clip strengths and get a patched CLIP back; leave unconnected for model-only | Outputs: MODEL, CLIP. When CLIP isn't connected the CLIP output passes None.
Loaders · sorties 3
FantasticLoraLoaderMulti
FantasticLoraLoaderMulti
Description compacte indisponible pour ce nœud.
Loaders · sorties 7
FantasticLoraMimic
FantasticLoraMimic
Applies loras read from another node (or a LORA_STACK wire) onto this
Loaders · sorties 4
FantasticLoraMimicSubgraphCompanion
FantasticLoraMimicSubgraphCompanion
Place this inside (or beside) a group of lora loaders — including ones
Loaders · sortie 1
FantasticLoraPlotter
FantasticLoraPlotter
Internal class name FantasticLoraPlotter. Found in loaders alongside the other nodes. The Plotter is a lora testing "sweep" node: instead of applying all enabled loras as a single combined stack, it applies each lora individually to the base model and emits the results as a list — one generation per cell. Connect it to a KSampler → VAE Decode → Fantastic Plotter Image Saver (see below) and ComfyUI will automatically run the downstream graph once per cell, producing a grid of images. Inputs are identical to the Multi-Model loader: a primary MODEL + optional CLIP, plus up to four additional optional MODEL paths. The stack UI is the same — add, reorder, enable/disable, randomize. There's also an optional globalloras input — connect a Fantastic Plotter Global Lora node here to apply a fixed set of "background" loras to every swept cell in addition to the cell's own lora/strength. The Plotter has a 🌐 Add Global Lora node (connected) button that drops one into the graph (to the left of the Plotter) with its output already wired to this input; the button greys out to "Global Lora node connected" once one is attached. The Plotter adds two buttons below the lora stack: 📊 Strength mode toggles between: | Mode | Behaviour | |---|---| | Per-line (default) | Each enabled lora produces one cell at its own stack-row strength. 2 loras = 2 cells. | | Global (sweep) | Per-line strengths are ignored. Every enabled lora is swept across the global strength list. 2 loras × 3 strengths = 6 cells, ordered lora-major (lora 1 at each strength, then lora 2). Set your saver's column count to the nu…
Loaders · sorties 8
FantasticPlotterGlobalLora
FantasticPlotterGlobalLora
Loras selected here apply globally — they are added on top of every
Loaders · sortie 1
FantasticPlotterGridViewer
FantasticPlotterGridViewer
Internal class name FantasticPlotterGridViewer. Found in loaders. This is the interactive twin of the Image Saver — a terminal display node (like the built-in Preview Image, but with far more interaction). The viewer needs the individual cell images, not the Saver's already-composed grid (you can't pull cells back out of a flattened image). The easiest way to wire it is straight off the Image Saver, which passes the per-cell data through: - images ← the Saver's images output (the per-cell list it received, passed through clean/full-res — not the composed grid) - metadata ← the Saver's metadata output - globallorasinfo (optional) ← the Saver's globallorasinfo output (You can also tap those three directly from the VAE Decode + Plotter if you prefer; the Saver passthrough just keeps everything coming from one node.) Connect VAE Decode → Image Saver, then Image Saver → Grid Viewer. The Saver still gives you a flat PNG via its grid output to save; the Viewer gives you the interactive board. - Graph layout — cells are laid out as a lora × strength grid (rows = loras, columns = strengths), with control images in their own labeled rows at the top, mirroring the Saver's look. The global loras are listed in a strip across the top. - Hide / show rows and columns — every row and column header has a ✕ to hide it. Hidden rows appear as chips beneath the grid (and hidden columns as chips in the top-left corner); click a chip or Reset filters to bring them back. This lets you focus on a subset without re-running the graph. - Click to zoom — click any cell and it grows out of the grid into…
Loaders · sorties 0
FantasticPlotterImageSaver
FantasticPlotterImageSaver
Internal class name FantasticPlotterImageSaver. Combines three nodes into one: 1. LoRA Plot Image Saver — overlays a metadata label on each cell 2. Image List to Image Batch (comfyui-impact-pack) — resizes cells to a common size and stacks them into a batch 3. FL Image Batch To Grid (comfyuifill-nodes) — composes the batch into a single grid image Connect the Plotter's MODEL list → KSampler → VAE Decode → images, and the Plotter's metadata list → metadata. The node outputs the composed grid IMAGE (pass it to any Save Image node), plus three passthroughs — images (the per-cell list it received, clean/full-res), metadata, and globallorasinfo — so a Grid Viewer (or anything needing the raw cells) can hang off this node instead of re-tapping the source wires. The node also has an 🔍 Add Grid Viewer (connected) button: click it to drop a Fantastic Plotter Grid Viewer into the graph just to the right of the Saver, with its images, metadata, and globallorasinfo inputs already wired to the Saver's matching passthrough outputs. (If the button can't find those outputs, the Saver node predates them — delete and re-add it.) | Widget | Default | | |---|---|---| | Constrain Image Output Size | Off | When on, each cell is scaled down so its longest side equals Max Cell Size before the grid is assembled. Useful when rendering many large images — keeps the final output a manageable size. | | Max Cell Size | 768 | Longest side per cell in pixels (max 2048). Greyed out when Constrain is off. | | textcolor | white | Label text colour. | | backgroundcolor | black | Label box background colour.…