Nodes/ComfyUI-VariationLab/VariationLab: Checkpoint Explorer
ComfyUI Node

VariationLab: Checkpoint Explorer

Pick your model on evidence

By Legorobotdude·Created about a year ago·Updated about a year ago· 1
VariationLab: Checkpoint Explorer
  • latent
  • images
base_positive_prompta photograph of a person
base_negative_promptblurry, low quality
seed0
steps20
cfg7.0
denoise1.00
checkpoint1
checkpoint1_clip_skip-1
checkpoint1_positive_suffix
checkpoint1_negative_suffix
checkpoint1_samplereuler
checkpoint1_schedulernormal
checkpoint1_steps20
checkpoint1_cfg7.0
checkpoint2
checkpoint2_clip_skip-1
checkpoint2_positive_suffix
checkpoint2_negative_suffix
checkpoint2_samplereuler
checkpoint2_schedulernormal
checkpoint2_steps20
checkpoint2_cfg7.0
checkpoint3
checkpoint3_clip_skip-1
checkpoint3_positive_suffix
checkpoint3_negative_suffix
checkpoint3_samplereuler
checkpoint3_schedulernormal
checkpoint3_steps20
checkpoint3_cfg7.0
checkpoint4
checkpoint4_clip_skip-1
checkpoint4_positive_suffix
checkpoint4_negative_suffix
checkpoint4_samplereuler
checkpoint4_schedulernormal
checkpoint4_steps20
checkpoint4_cfg7.0
checkpoint5
checkpoint5_clip_skip-1
checkpoint5_positive_suffix
checkpoint5_negative_suffix
checkpoint5_samplereuler
checkpoint5_schedulernormal
checkpoint5_steps20
checkpoint5_cfg7.0

The checkpoint is the single biggest aesthetic lever you own - switch models and the same prompt becomes a different image. VariationLab: Checkpoint Explorer (class CheckpointExplorer) renders up to five checkpoints in one queue item, all on the same seed and latent, so you can finally answer "which model do I actually like" with a side-by-side instead of five separate re-rolls at five different random seeds.

What it does

Unlike the other two explorers, you don't wire in a model. The node builds its own dropdowns from whatever's in your ComfyUI/models/checkpoints folder at node creation, then for each configured checkpoint it loads the model, encodes your prompt with that checkpoint's own CLIP, samples, and decodes with that checkpoint's own VAE. Everything stacks into one images batch.

The inputs that matter:

  • base_positive_prompt / base_negative_prompt - the prompt shared by every model.
  • seed, steps, cfg, denoise - defaults every checkpoint inherits.
  • checkpoint1checkpoint5 - pick which models to render. Leave one blank and it's skipped.
  • Per-checkpoint: checkpointN_positive_suffix / negative_suffix - extra prompt text appended only for that model (great when one needs ", anime style" and another doesn't), plus clip_skip, sampler, scheduler, steps and cfg overrides.

Two things to know before you're surprised. The clip_skip default is -1, which the code treats as "no skip" - only non-(-1) values actually change CLIP behavior, and on SDXL it often does nothing anyway since both encoders already default to the penultimate layer; it matters mostly on SD 1.5 / anime-lineage checkpoints. And there's no CONDITIONING input by design: each checkpoint has its own text encoder, so the prompts live inside the node as text, and suffixes are your tool for per-model prompt differences.

The real cost

Here's the trade you're signing up for: this node reloads every checkpoint from disk on every run, one after another. Five SDXL models is ~30 GB of loading per queue, and on a modest card the VRAM churn is brutal - expect slow runs and, on small GPUs, out-of-memory errors. Treat it as a comparison tool for a shortlist you've already narrowed to 2–3 models, not a "load everything I own" button. Same seed means it's a genuine comparison, which is exactly what the checkpoint panel's advice wants you to do - but a real model shootout needs a few runs per model to beat the luck factor, and this node gives you one run per model at a time.

Also watch the dropdowns: they're snapshotted when the node is created. Drop a new checkpoint into the folder while ComfyUI is running and you'll need to recreate the node to see it.

Install

ComfyUI Manager: search ComfyUI-VariationLab, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/Legorobotdude/ComfyUI-VariationLab
# then restart ComfyUI

Don't copy the clone URL from the pack's README - it's a placeholder (yourusername/...) that doesn't exist. Use the repo above or Manager. Dependencies are numpy and torch, which ComfyUI already ships, so there's no pip install and no extra downloads. The node appears under "VariationLab."

Troubleshooting

If you set no checkpoints, or anything throws, you get a 64×64 black image and the real traceback only lands in your terminal - this pack swallows exceptions, so read the console when output goes black. The other failure mode is patience: five checkpoints on a small card means long queues or OOM. And if all five outputs look suspiciously similar, that's the merge problem doing its thing - many "different" models share ancestry, which is its own lesson in why picking a checkpoint is worth testing at all.

CategoryVariationLab

Inputs (47)

NameTypeDefaultDescription
latentLATENT
base_positive_promptSTRINGa photograph of a person
base_negative_promptSTRINGblurry, low quality
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT7.00–100
denoiseFLOAT1.000–1
checkpoint1optCOMBO0 options:
checkpoint1_clip_skipoptINT-1-24–-1
checkpoint1_positive_suffixoptSTRING
checkpoint1_negative_suffixoptSTRING
checkpoint1_sampleroptCOMBOeuler34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28
checkpoint1_scheduleroptCOMBOnormal9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
checkpoint1_stepsoptINT201–10000
checkpoint1_cfgoptFLOAT7.00–100
checkpoint2optCOMBO0 options:
checkpoint2_clip_skipoptINT-1-24–-1
checkpoint2_positive_suffixoptSTRING
checkpoint2_negative_suffixoptSTRING
checkpoint2_sampleroptCOMBOeuler34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28
checkpoint2_scheduleroptCOMBOnormal9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
checkpoint2_stepsoptINT201–10000
checkpoint2_cfgoptFLOAT7.00–100
checkpoint3optCOMBO0 options:
checkpoint3_clip_skipoptINT-1-24–-1
checkpoint3_positive_suffixoptSTRING
checkpoint3_negative_suffixoptSTRING
checkpoint3_sampleroptCOMBOeuler34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28
checkpoint3_scheduleroptCOMBOnormal9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
checkpoint3_stepsoptINT201–10000
checkpoint3_cfgoptFLOAT7.00–100
checkpoint4optCOMBO0 options:
checkpoint4_clip_skipoptINT-1-24–-1
checkpoint4_positive_suffixoptSTRING
checkpoint4_negative_suffixoptSTRING
checkpoint4_sampleroptCOMBOeuler34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28
checkpoint4_scheduleroptCOMBOnormal9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
checkpoint4_stepsoptINT201–10000
checkpoint4_cfgoptFLOAT7.00–100
checkpoint5optCOMBO0 options:
checkpoint5_clip_skipoptINT-1-24–-1
checkpoint5_positive_suffixoptSTRING
checkpoint5_negative_suffixoptSTRING
checkpoint5_sampleroptCOMBOeuler34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28
checkpoint5_scheduleroptCOMBOnormal9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
checkpoint5_stepsoptINT201–10000
checkpoint5_cfgoptFLOAT7.00–100

Outputs (1)

NameTypeDescription
imagesIMAGE