Nodes/Nifty Nodes for ComfyUI/Upscale Model Selector
ComfyUI Node

Upscale Model Selector

Pick the model without loading it

By Stibo·Created 7 months ago·Updated 7 days ago· 11
Upscale Model Selector
    • model_name
    ◄model_name▾►

    A loader node does two things at once: it decides which model and it goes and loads the thing. That's fine when you're swapping a weight file occasionally, and annoying when what you actually want is to vary a name - in a grid test, a bundle, a filename, or a sweep across every upscaler you own.

    This node does the first half only. It's a dropdown of everything in upscale_models and it outputs the filename as a string. Nothing gets loaded.

    What it's for

    Three uses, and they compound:

    • Keep the loader clean. Your upscale node (including the pack's own Nifty Upscale Image) points at one place, and the "which model" decision lives in a node you can move, bypass or swap without rewiring anything.
    • Sweep every upscaler you have. Feed this selector into a downstream node that accepts a model name and put Combo Auto List in front of it - that's a one-click comparison of 4x-UltraSharp vs Remacri vs whatever else is sitting in your folder.
    • Route on "none". The dropdown includes none, and when you pick it the node outputs None rather than a name. That pairs with the pack's None Input Switch to branch: model chosen, do an upscale pass; model none, skip straight to saving.

    Inputs and outputs

    • model_name - a dropdown listing none followed by every file in the upscale_models folder. This is the only input; there's nothing to configure.
    • Output model_name - the selected filename as a string, or None if you selected none.

    That's the whole node, and it's the point. The string goes into a loader or upscale node's model input - anything that accepts a filename, including by wire. It's also handy dropped into a filename suffix or a bundle, so your outputs record which upscaler produced them.

    One difference from its siblings in the pack: the Diffusion Model and CLIP selectors also output an is_gguf boolean so you can route quantized files to a different loader. This one doesn't, because upscale models don't come in GGUF - don't go looking for it.

    Installing it

    ComfyUI Manager → search Nifty Nodes, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Stibo/comfyui-nifty-nodes
    

    Restart. This is a selector - it needs no dependencies of its own, though the pack declares color-matcher and imageio-ffmpeg for other nodes. It was added in the pack's 2.2.0 release alongside the upscale node it's designed to pair with. The pack is authored on ComfyUI's V3 node API and the README says it's tested against frontend 1.39, untested against Nodes 2.0 - worth flagging for selector nodes specifically, since they depend on widget plumbing.

    Where people get burned

    • The list is read when the node is built. Drop a new .pth into upscale_models while ComfyUI is running and it may not appear until you refresh the node definitions (reload the page) - the same "why isn't my new model in the list" moment every ComfyUI loader has.
    • Empty list, no error. With an empty upscale_models folder the dropdown only offers none, so you can build a whole workflow that upscales nothing. If the output image is the same size as the input, check here.
    • A string is not a model. Everything downstream of this must accept a filename. Wire it into a slot expecting an UPSCALE_MODEL tensor and you get a type error - the selector deliberately doesn't load anything, so it can't hand you weights.
    • none fails downstream rather than here. The None output is intended for a switch. If you connect it straight into a loader, you get whatever that loader does with an invalid name.
    Categorynifty/selectors

    Inputs (1)

    NameTypeDefaultDescription
    model_nameCOMBO1 options: none

    Outputs (1)

    NameTypeDescription
    model_name*—