Nodes/ComfyUI Easy Use/XY Inputs: Checkpoint //EasyUse
ComfyUI Node Runs on cloud

XY Inputs: Checkpoint //EasyUse

Checkpoint — compare multiple models in one grid

By yolain·Created 3 years ago·Updated 8 days ago· 2,633
XY Inputs: Checkpoint //EasyUse
  • optional_lora_stack
  • X or Y
input_mode
ckpt_count3
ckpt_name_1
clip_skip_1-1
vae_name_1
ckpt_name_2
clip_skip_2-1
vae_name_2
ckpt_name_3
clip_skip_3-1
vae_name_3
ckpt_name_4
clip_skip_4-1
vae_name_4
ckpt_name_5
clip_skip_5-1
vae_name_5
ckpt_name_6
clip_skip_6-1
vae_name_6
ckpt_name_7
clip_skip_7-1
vae_name_7
ckpt_name_8
clip_skip_8-1
vae_name_8
ckpt_name_9
clip_skip_9-1
vae_name_9
ckpt_name_10
clip_skip_10-1
vae_name_10

An XY plot is the fastest way to answer "which of these is better" - you pick two things to vary, and ComfyUI renders a grid so you can compare side by side at a fixed seed. easy XYInputs: Checkpoint is the node that puts a list of checkpoints on one axis of that grid. Point it at three or five models, feed it into the pack's XY plot node, and you get the same prompt rendered through each one, laid out for a clean comparison. It's how you decide between checkpoints without the unreliable memory game of running them one at a time and squinting.

How it works

This node doesn't render anything itself - it defines one axis of the plot. You tell it how many checkpoints to compare and name each one, and it emits an X_Y value that the XYPlot node consumes as its X or Y axis. The plot node then loops your generation over every checkpoint on the axis (crossed with whatever's on the other axis), holding everything else constant, and tiles the outputs into a labeled grid. Because the seed and prompt stay fixed, differences in the grid are genuinely down to the models.

The inputs that matter

  • input_mode - the important choice. Ckpt Names compares just the models. Ckpt Names+ClipSkip lets you also set a CLIP skip per model, and Ckpt Names+ClipSkip+VAE adds a per-model VAE. Use the plain mode unless you specifically need to pair a particular CLIP skip or VAE with each checkpoint - for a straight model bake-off, Ckpt Names is what you want.
  • ckpt_count - how many models are on the axis (up to 10). Set this to how many you're actually comparing so you don't get empty cells.
  • ckpt_name_1ckpt_name_N - the models themselves, picked from your checkpoints folder.
  • clip_skip_1… and vae_name_1… - only relevant in the modes that expose them. CLIP skip matters on SD 1.5 anime models (skip 2) and is largely a no-op on SDXL-derived models, so don't read too much into varying it there. Baked VAE just uses whatever VAE ships inside each checkpoint.
  • Optional optional_lora_stack - apply the same LoRA stack across every model in the comparison.

Output: X or Y - wire it into the X or the Y input of the XY plot node.

How to install it

Via ComfyUI Manager: search "ComfyUI Easy Use", install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Use

Then install.bat / pip install -r requirements.txt, restart. Preinstalled on comfy.icu.

Common issues

The number one gotcha is comparing apples to oranges. An XY grid is only meaningful when everything except the axis is held constant - same seed, same prompt, same sampler and steps. If you're eyeballing two checkpoints from separate runs with drifting settings, the grid isn't telling you what you think. Let the plot node hold the rest fixed and change only what's on the axes.

Second, mind the model families. Dropping an SD 1.5, an SDXL, and a Flux checkpoint onto the same axis produces a grid, but the comparison is close to meaningless - they want different resolutions, different CFG, different samplers, so no single set of fixed settings flatters all three. Keep an XY comparison within one family. And if a cell comes out blank or garbage, check ckpt_count matches the number of models you actually named - an off-count leaves None slots that render as empty tiles.

CategoryEasyUse/XY Inputs

Inputs (33)

NameTypeDefaultDescription
input_modeCOMBO3 options: Ckpt Names, Ckpt Names+ClipSkip, Ckpt Names+ClipSkip+VAE
ckpt_countINT30–10
ckpt_name_1COMBO1 options: None
clip_skip_1INT-1-24–-1
vae_name_1COMBO1 options: Baked VAE
ckpt_name_2COMBO1 options: None
clip_skip_2INT-1-24–-1
vae_name_2COMBO1 options: Baked VAE
ckpt_name_3COMBO1 options: None
clip_skip_3INT-1-24–-1
vae_name_3COMBO1 options: Baked VAE
ckpt_name_4COMBO1 options: None
clip_skip_4INT-1-24–-1
vae_name_4COMBO1 options: Baked VAE
ckpt_name_5COMBO1 options: None
clip_skip_5INT-1-24–-1
vae_name_5COMBO1 options: Baked VAE
ckpt_name_6COMBO1 options: None
clip_skip_6INT-1-24–-1
vae_name_6COMBO1 options: Baked VAE
ckpt_name_7COMBO1 options: None
clip_skip_7INT-1-24–-1
vae_name_7COMBO1 options: Baked VAE
ckpt_name_8COMBO1 options: None
clip_skip_8INT-1-24–-1
vae_name_8COMBO1 options: Baked VAE
ckpt_name_9COMBO1 options: None
clip_skip_9INT-1-24–-1
vae_name_9COMBO1 options: Baked VAE
ckpt_name_10COMBO1 options: None
clip_skip_10INT-1-24–-1
vae_name_10COMBO1 options: Baked VAE
optional_lora_stackoptLORA_STACK

Outputs (1)

NameTypeDescription
X or YX_Y