Checkpoint Tester v074
A/B test your whole model folder without rewiring
- model
- clip
- vae
- latent_format
- model_name
- model_path
- checkpoint_list
- total_checkpoints
- selected_checkpoints
- missing_info_list
- prompt_embedding
The fastest way to decide which checkpoint you actually like is to render the same prompt through a bunch of them and look. Checkpoint Tester v074 is built for exactly that: it scans your model folders, filters by architecture, category, and notes, picks a checkpoint (including at random), loads model + CLIP + VAE, and hands them to you with a full report. Swap the seed and you're testing the next model - no rewiring, no digging through a dropdown.
It's the checkpoint counterpart to LoRATester_v03 and the centerpiece of the AAA Metadata System pack's "loaders/checkpoint tester" family. If you've got a model folder that's outgrown its usefulness, this node turns it into a randomized A/B rig. The honest framing: it's opinionated and does a lot, but it's the reason the rest of that family exists.
How it works
On load it scans ComfyUI's standard model directories (checkpoints, unet, diffusion_models) plus any additional_path, hashes every file, and inspects it to detect architecture, embedded VAE/CLIP, and clip type - recording everything into the pack's JSON checkpoint database. Runs then filter that catalog by your dir_search_terms / file_search_terms (comma-separated, -term to exclude), architecture, category, and notes_search. The seed input picks which one: 0 = random, 1 = first in the list, etc.
Loading is smart about memory: it caches recently used VAEs and CLIPs, evicting oldest-first and clearing GPU memory between swaps, so rapid-fire testing doesn't OOM you. The vae_mode and clip_mode dropdowns control whether it uses embedded components, specific files, or nothing - which matters for models that need an external VAE or a particular CLIP combiner. The missing_info_list output is the honesty feature: it tells you which checkpoints lack recorded info, so you know your test results are built on guesses.
Inputs and outputs that matter
seed- your test selector. Random by default (0). Set it to walk the list deterministically.architecture/category/notes_search- the filters that keep random testing inside a family you care about (e.g., only SDXL, only "anime").vae_mode/clip_modeand their_nameinputs - how to source the VAE and CLIP.autois right most of the time.clip_type,clip_device,t5_bit_depth- for the newer architectures that need explicit CLIP handling.
Outputs: model, clip, vae (wire into your sampler), latent_format, model_name, model_path, checkpoint_list, total_checkpoints, selected_checkpoints, missing_info_list, and a prompt_embedding.
Installing it
Part of AAA Metadata System by Eric Hiss (GitHub: EricRollei). Via ComfyUI Manager (search "AAA Metadata System") or:
cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/AAA_Metadata_System.git
cd AAA_Metadata_System
pip install -r requirements.txt
Restart ComfyUI. No model downloads - it works on what you already have.
Common issues
First load on a huge model folder is slow: it hashes and inspects every file, so give it a minute. If random testing keeps landing on models you don't want, your filters are too loose - add exclusions (-inpaint,-refiner) or narrow the architecture. If a model loads but renders garbage, it's usually a wrong architecture detection or a missing VAE; check missing_info_list and the VAE/CLIP modes rather than blaming the sampler. And because everything keys off the JSON database, a stale or hand-edited DB produces stale results - re-run the scan after you move files. This node is a testing rig, not a final loader; once you've found your favorite, note its name and load it the normal way.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| dir_search_terms | STRING | Comma-separated terms to search in directory paths. Use -term to exclude. | |
| file_search_terms | STRING | Comma-separated terms to search in checkpoint filenames. Use -term to exclude (e.g., -inpaint,-refiner). | |
| additional_path | STRING | Additional directory to search for checkpoints | |
| architecture | COMBO | Any | Filter by model architecture |
| category | COMBO | Any | Filter by model category |
| notes_search | STRING | Search terms to match in model notes. Use -term to exclude. | |
| seed | INT | 00–18446744073709550000 | Checkpoint number (1-based index) or random seed |
| vae_mode | COMBO | auto | How to select the VAE |
| vae_name | COMBO | None | Specific VAE to use |
| clip_mode | COMBO | auto | How to select CLIP |
| clip1_name | COMBO | None | Primary CLIP model |
| clip2_name | COMBO | None | Secondary CLIP model |
| clip3_name | COMBO | None | Tertiary CLIP model |
| clip4_name | COMBO | None | Quaternary CLIP model |
| clip_type | COMBO | auto | Specific CLIP combiner type (auto=detect) |
| clip_device | COMBO | default | Device for CLIP models |
| t5_bit_depth | COMBO | auto | Bit depth for T5 models (auto=detect) |
Outputs (11)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| latent_format | STRING | — |
| model_name | STRING | — |
| model_path | STRING | — |
| checkpoint_list | STRING | — |
| total_checkpoints | INT | — |
| selected_checkpoints | INT | — |
| missing_info_list | STRING | — |
| prompt_embedding | EMBEDDING | — |