XY Input: Checkpoint
Checkpoint
- X or Y
You've got a folder full of checkpoints and no idea which one nails the look you're after. XY Input: Checkpoint runs the same prompt and seed through a list of models and tiles the results so you can compare them at a glance. It's the model-shootout node in the Efficiency Nodes XY Plot system, and honestly it's one of the more genuinely useful ones - comparing checkpoints by memory is hopeless, and a grid settles it.
How it works
The node builds a list of checkpoints (optionally with clip skip and VAE per entry) and hands them to an Efficient KSampler through the XY Plot node, which renders one column or row per model. There are two ways to populate the list, controlled by input_mode:
- Manual - pick models one at a time via the
ckpt_name_1,ckpt_name_2, … dropdowns.ckpt_countsets how many of the slots are live. - Checkpoint Batch - point
batch_pathat a folder and it pulls every checkpoint in it automatically, respectingsubdirectories,batch_sort(ascending/descending), andbatch_max(cap the count, or -1 for no cap). This is the one to use when you genuinely have a directory to sweep.
input_mode also decides how much you're sweeping per model: Ckpt Names alone, Ckpt Names+ClipSkip, or Ckpt Names+ClipSkip+VAE. Clip skip lives in the clip_skip_N fields (SD 1.5-era anime models often want -2), and vae_name_N lets you pair a specific VAE or fall back to the checkpoint's baked one.
target_ckpt (Base or Refiner) tells it which stage of an SDXL workflow you're swapping - leave it on Base for a normal single-model comparison.
What you actually set
For most people it's three things: input_mode (Manual vs Checkpoint Batch), then either ckpt_count plus the model dropdowns, or batch_path. The output is a single X or Y connection into the XY Plot node.
Installing it
ComfyUI Manager → search Efficiency Nodes for ComfyUI, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/jags111/efficiency-nodes-comfyui
Restart ComfyUI. The checkpoints themselves live in models/checkpoints as normal; this node just enumerates them.
Common issues
The XY Input rule applies here too: the output only means anything through the XY Plot node into one of the pack's Efficient KSamplers. Wire it to a stock KSampler and nothing happens.
A checkpoint sweep is also the heaviest XY plot you can run, because every different model has to be loaded from disk in turn - there's no way around swapping weights, so a five-model grid is five full model loads. Keep batch_max sane and don't be surprised when it's slower than a CFG or steps sweep.
Practical tip that isn't a bug: comparing an anime checkpoint against a realism one in the same grid means they want different CFG and clip skip, so a flat comparison can be unfair. The SDXL fine-tune landscape is where the real differences live - Juggernaut and RealVis for realism, Pony and Illustrious for anime - and they don't share settings.
Pack-wide: IMPORT FAILED at startup (frequently a pip freeze error) drops the whole pack. Update ComfyUI, update the node, check the Python env.
Inputs (157)
| Name | Type | Default | Description |
|---|---|---|---|
| target_ckpt | COMBO | 2 options: Base, Refiner | |
| input_mode | COMBO | 4 options: Ckpt Names, Ckpt Names+ClipSkip, Ckpt Names+ClipSkip+VAE, Checkpoint Batch | |
| batch_path | STRING | /example_folder | — |
| subdirectories | BOOLEAN | false | — |
| batch_sort | COMBO | 2 options: ascending, descending | |
| batch_max | INT | -1-1–50 | — |
| ckpt_count | INT | 30–50 | — |
| 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 | |
| ckpt_name_11 | COMBO | 1 options: None | |
| clip_skip_11 | INT | -1-24–-1 | — |
| vae_name_11 | COMBO | 1 options: Baked VAE | |
| ckpt_name_12 | COMBO | 1 options: None | |
| clip_skip_12 | INT | -1-24–-1 | — |
| vae_name_12 | COMBO | 1 options: Baked VAE | |
| ckpt_name_13 | COMBO | 1 options: None | |
| clip_skip_13 | INT | -1-24–-1 | — |
| vae_name_13 | COMBO | 1 options: Baked VAE | |
| ckpt_name_14 | COMBO | 1 options: None | |
| clip_skip_14 | INT | -1-24–-1 | — |
| vae_name_14 | COMBO | 1 options: Baked VAE | |
| ckpt_name_15 | COMBO | 1 options: None | |
| clip_skip_15 | INT | -1-24–-1 | — |
| vae_name_15 | COMBO | 1 options: Baked VAE | |
| ckpt_name_16 | COMBO | 1 options: None | |
| clip_skip_16 | INT | -1-24–-1 | — |
| vae_name_16 | COMBO | 1 options: Baked VAE | |
| ckpt_name_17 | COMBO | 1 options: None | |
| clip_skip_17 | INT | -1-24–-1 | — |
| vae_name_17 | COMBO | 1 options: Baked VAE | |
| ckpt_name_18 | COMBO | 1 options: None | |
| clip_skip_18 | INT | -1-24–-1 | — |
| vae_name_18 | COMBO | 1 options: Baked VAE | |
| ckpt_name_19 | COMBO | 1 options: None | |
| clip_skip_19 | INT | -1-24–-1 | — |
| vae_name_19 | COMBO | 1 options: Baked VAE | |
| ckpt_name_20 | COMBO | 1 options: None | |
| clip_skip_20 | INT | -1-24–-1 | — |
| vae_name_20 | COMBO | 1 options: Baked VAE | |
| ckpt_name_21 | COMBO | 1 options: None | |
| clip_skip_21 | INT | -1-24–-1 | — |
| vae_name_21 | COMBO | 1 options: Baked VAE | |
| ckpt_name_22 | COMBO | 1 options: None | |
| clip_skip_22 | INT | -1-24–-1 | — |
| vae_name_22 | COMBO | 1 options: Baked VAE | |
| ckpt_name_23 | COMBO | 1 options: None | |
| clip_skip_23 | INT | -1-24–-1 | — |
| vae_name_23 | COMBO | 1 options: Baked VAE | |
| ckpt_name_24 | COMBO | 1 options: None | |
| clip_skip_24 | INT | -1-24–-1 | — |
| vae_name_24 | COMBO | 1 options: Baked VAE | |
| ckpt_name_25 | COMBO | 1 options: None | |
| clip_skip_25 | INT | -1-24–-1 | — |
| vae_name_25 | COMBO | 1 options: Baked VAE | |
| ckpt_name_26 | COMBO | 1 options: None | |
| clip_skip_26 | INT | -1-24–-1 | — |
| vae_name_26 | COMBO | 1 options: Baked VAE | |
| ckpt_name_27 | COMBO | 1 options: None | |
| clip_skip_27 | INT | -1-24–-1 | — |
| vae_name_27 | COMBO | 1 options: Baked VAE | |
| ckpt_name_28 | COMBO | 1 options: None | |
| clip_skip_28 | INT | -1-24–-1 | — |
| vae_name_28 | COMBO | 1 options: Baked VAE | |
| ckpt_name_29 | COMBO | 1 options: None | |
| clip_skip_29 | INT | -1-24–-1 | — |
| vae_name_29 | COMBO | 1 options: Baked VAE | |
| ckpt_name_30 | COMBO | 1 options: None | |
| clip_skip_30 | INT | -1-24–-1 | — |
| vae_name_30 | COMBO | 1 options: Baked VAE | |
| ckpt_name_31 | COMBO | 1 options: None | |
| clip_skip_31 | INT | -1-24–-1 | — |
| vae_name_31 | COMBO | 1 options: Baked VAE | |
| ckpt_name_32 | COMBO | 1 options: None | |
| clip_skip_32 | INT | -1-24–-1 | — |
| vae_name_32 | COMBO | 1 options: Baked VAE | |
| ckpt_name_33 | COMBO | 1 options: None | |
| clip_skip_33 | INT | -1-24–-1 | — |
| vae_name_33 | COMBO | 1 options: Baked VAE | |
| ckpt_name_34 | COMBO | 1 options: None | |
| clip_skip_34 | INT | -1-24–-1 | — |
| vae_name_34 | COMBO | 1 options: Baked VAE | |
| ckpt_name_35 | COMBO | 1 options: None | |
| clip_skip_35 | INT | -1-24–-1 | — |
| vae_name_35 | COMBO | 1 options: Baked VAE | |
| ckpt_name_36 | COMBO | 1 options: None | |
| clip_skip_36 | INT | -1-24–-1 | — |
| vae_name_36 | COMBO | 1 options: Baked VAE | |
| ckpt_name_37 | COMBO | 1 options: None | |
| clip_skip_37 | INT | -1-24–-1 | — |
| vae_name_37 | COMBO | 1 options: Baked VAE | |
| ckpt_name_38 | COMBO | 1 options: None | |
| clip_skip_38 | INT | -1-24–-1 | — |
| vae_name_38 | COMBO | 1 options: Baked VAE | |
| ckpt_name_39 | COMBO | 1 options: None | |
| clip_skip_39 | INT | -1-24–-1 | — |
| vae_name_39 | COMBO | 1 options: Baked VAE | |
| ckpt_name_40 | COMBO | 1 options: None | |
| clip_skip_40 | INT | -1-24–-1 | — |
| vae_name_40 | COMBO | 1 options: Baked VAE | |
| ckpt_name_41 | COMBO | 1 options: None | |
| clip_skip_41 | INT | -1-24–-1 | — |
| vae_name_41 | COMBO | 1 options: Baked VAE | |
| ckpt_name_42 | COMBO | 1 options: None | |
| clip_skip_42 | INT | -1-24–-1 | — |
| vae_name_42 | COMBO | 1 options: Baked VAE | |
| ckpt_name_43 | COMBO | 1 options: None | |
| clip_skip_43 | INT | -1-24–-1 | — |
| vae_name_43 | COMBO | 1 options: Baked VAE | |
| ckpt_name_44 | COMBO | 1 options: None | |
| clip_skip_44 | INT | -1-24–-1 | — |
| vae_name_44 | COMBO | 1 options: Baked VAE | |
| ckpt_name_45 | COMBO | 1 options: None | |
| clip_skip_45 | INT | -1-24–-1 | — |
| vae_name_45 | COMBO | 1 options: Baked VAE | |
| ckpt_name_46 | COMBO | 1 options: None | |
| clip_skip_46 | INT | -1-24–-1 | — |
| vae_name_46 | COMBO | 1 options: Baked VAE | |
| ckpt_name_47 | COMBO | 1 options: None | |
| clip_skip_47 | INT | -1-24–-1 | — |
| vae_name_47 | COMBO | 1 options: Baked VAE | |
| ckpt_name_48 | COMBO | 1 options: None | |
| clip_skip_48 | INT | -1-24–-1 | — |
| vae_name_48 | COMBO | 1 options: Baked VAE | |
| ckpt_name_49 | COMBO | 1 options: None | |
| clip_skip_49 | INT | -1-24–-1 | — |
| vae_name_49 | COMBO | 1 options: Baked VAE | |
| ckpt_name_50 | COMBO | 1 options: None | |
| clip_skip_50 | INT | -1-24–-1 | — |
| vae_name_50 | COMBO | 1 options: Baked VAE |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| X or Y | XY | — |