XY Inputs: Checkpoint //EasyUse
Checkpoint — compare multiple models in one grid
- optional_lora_stack
- X or Y
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 Namescompares just the models.Ckpt Names+ClipSkiplets you also set a CLIP skip per model, andCkpt Names+ClipSkip+VAEadds 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 Namesis 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_1…ckpt_name_N- the models themselves, picked from your checkpoints folder.clip_skip_1…andvae_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 VAEjust 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.
Inputs (33)
| Name | Type | Default | Description |
|---|---|---|---|
| input_mode | COMBO | 3 options: Ckpt Names, Ckpt Names+ClipSkip, Ckpt Names+ClipSkip+VAE | |
| ckpt_count | INT | 30–10 | — |
| ckpt_name_1 | COMBO | 1 options: None | |
| clip_skip_1 | INT | -1-24–-1 | — |
| vae_name_1 | COMBO | 1 options: Baked VAE | |
| ckpt_name_2 | COMBO | 1 options: None | |
| clip_skip_2 | INT | -1-24–-1 | — |
| vae_name_2 | COMBO | 1 options: Baked VAE | |
| ckpt_name_3 | COMBO | 1 options: None | |
| clip_skip_3 | INT | -1-24–-1 | — |
| vae_name_3 | COMBO | 1 options: Baked VAE | |
| ckpt_name_4 | COMBO | 1 options: None | |
| clip_skip_4 | INT | -1-24–-1 | — |
| vae_name_4 | COMBO | 1 options: Baked VAE | |
| ckpt_name_5 | COMBO | 1 options: None | |
| clip_skip_5 | INT | -1-24–-1 | — |
| vae_name_5 | COMBO | 1 options: Baked VAE | |
| ckpt_name_6 | COMBO | 1 options: None | |
| clip_skip_6 | INT | -1-24–-1 | — |
| vae_name_6 | COMBO | 1 options: Baked VAE | |
| ckpt_name_7 | COMBO | 1 options: None | |
| clip_skip_7 | INT | -1-24–-1 | — |
| vae_name_7 | COMBO | 1 options: Baked VAE | |
| ckpt_name_8 | COMBO | 1 options: None | |
| clip_skip_8 | INT | -1-24–-1 | — |
| vae_name_8 | COMBO | 1 options: Baked VAE | |
| ckpt_name_9 | COMBO | 1 options: None | |
| clip_skip_9 | INT | -1-24–-1 | — |
| vae_name_9 | COMBO | 1 options: Baked VAE | |
| ckpt_name_10 | COMBO | 1 options: None | |
| clip_skip_10 | INT | -1-24–-1 | — |
| vae_name_10 | COMBO | 1 options: Baked VAE | |
| optional_lora_stackopt | LORA_STACK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| X or Y | X_Y | — |