Nodes/ComfyUI-JNodes/Checkpoint Selector + String
ComfyUI Node

Checkpoint Selector + String

Rotate checkpoints by seed and record which one ran

By JaredTherriault·Created 3 years ago·Updated about a month ago· 91
Checkpoint Selector + String
    • ckpt_name
    • STRING
    ckpt_name
    mode
    seed0

    Pick a checkpoint and this node outputs it two ways: the checkpoint name in the type your loader expects, and the same name as a plain string. The readme's own example for these selector nodes is telling - "select a random checkpoint name." That's the killer use: rotate through your models across a batch, and because the string output records which one got used, you can bake the model name into the filename or metadata and actually know what made each image.

    It's the checkpoint member of JNodes' "selector with string" family (samplers, VAEs, schedulers, and more all get the same treatment) from Jared Therriault's suite. Same pattern throughout: a usable value plus a string, optionally randomized by seed.

    How it works

    You choose a checkpoint from the list of your installed models. The mode controls the pick: select uses your explicit choice, seed picks one based on the seed value, and index walks the list deterministically. It emits the typed checkpoint name (wire it into a checkpoint loader) and the string form (wire it into metadata, a filename, or a text display).

    The inputs and outputs

    • ckpt_name (enum) - the checkpoint to use in select mode. The list is populated from your models/checkpoints folder.
    • mode (select / seed / index) - fixed, seed-random, or stepped.
    • seed (INT) - drives selection in seed/index modes.
    • ckpt_name output (typed) - feed into a "Load Checkpoint" node's ckpt_name input.
    • STRING output - the checkpoint name as text.

    One thing you might notice: on some indexers this node shows an empty checkpoint list. That's just an environment with no models installed - on your machine it lists whatever's in your checkpoints folder.

    How to install it

    Via ComfyUI Manager: Install Custom Nodes, search "JNodes", install, restart. Or by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/JaredTherriault/ComfyUI-JNodes
    pip install -r ComfyUI-JNodes/requirements.txt
    

    then restart ComfyUI. No model downloads for the node itself - it reads your existing checkpoint folder.

    Common issues & troubleshooting

    Empty checkpoint dropdown = no models found. If the list is blank, ComfyUI isn't seeing any checkpoints in models/checkpoints (or your configured model path). Add a model and restart. This is also why the node can look empty in a fresh or hosted environment that hasn't had checkpoints loaded.

    seed/index modes reload models - expect VRAM churn. Randomly switching which checkpoint loads across a batch means the loader swaps models in and out, which costs time and thrashes VRAM. That's inherent to changing checkpoints, not a flaw in the node. If a "random checkpoint" batch feels slow, that's why.

    Use the string output to keep track. The entire point of the string is provenance. Wire it into your filename format or into JNodes_SetPositivePromptInMetaData-style metadata so each image records the model that made it. Skip that and a randomized batch becomes a pile of images you can't attribute.

    Wire the two outputs to their matching inputs. The typed ckpt_name goes to the loader; the STRING goes to text/metadata. Trying to plug the string into the loader is the common connection error.

    Randomized model choice changes everything downstream. Different checkpoints want different prompts, samplers, and CFG. A seed-mode batch that swaps between an SD 1.5 model and an SDXL one will produce a mess unless the rest of your graph accounts for it. Random selection is best across models of the same family.

    Categorysd

    Inputs (3)

    NameTypeDefaultDescription
    ckpt_nameCOMBO0 options:
    modeCOMBO3 options: select, seed, index
    seedINT0

    Outputs (2)

    NameTypeDescription
    ckpt_name
    STRINGSTRING