Nodes/ComfyUI-TkNodes/Load Model & Upscale Image
ComfyUI Node

Load Model & Upscale Image

An upscale model loader and runner in one node, with an off switch

By TensorKaze·Created about a year ago·Updated about a year ago· 0
Load Model & Upscale Image
  • image
  • IMAGE
model_name
bypass_upscalerfalse

Most upscaling in ComfyUI is two nodes stapled together: one that loads an upscale model file off disk, and one that actually runs it on your image. LoadModelAndUpscaleImage folds both into a single box - wire in an image, pick a model from the dropdown, get a bigger image out. One node instead of two, one less pair of wires cluttering the graph.

The more useful part is the third input: bypass_upscaler. Flip it to true and the node hands back your original image untouched - no upscaling - while the model stays selected and ready. That's the real reason to reach for this over the stock two-node combo. You can leave an upscale stage permanently wired into a workflow and toggle it with one checkbox instead of rerouting cables every time you want to compare "upscaled" against "not."

Where it fits

This is what the upscaling conversation calls the "more pixels" job, not the "more detail" job - a distinction that trips people up constantly. A pixel upscaler from the ESRGAN family (4x-UltraSharp, Remacri, the NMKD variants) doesn't invent anything; it's a trained model that predictably fills in the extra pixels a size increase needs. It runs in milliseconds and can't hallucinate a face into something it never was. That's this node's whole job. If your actual problem is a soft or damaged source that needs detail invented, not just more pixels of what's already there, you want a generative upscaler like SeedVR2 or SUPIR instead - this node isn't that, and won't pretend to be.

What matters

  • image (IMAGE, required) - what you're upscaling.
  • model_name (enum, required) - pulled from whatever upscale models you have installed. Empty until you actually put a model file where ComfyUI can find it.
  • bypass_upscaler (BOOLEAN, default false) - true skips upscaling and returns the original image as-is.

One output: IMAGE, upscaled (or untouched, if bypassed) - feed it straight to a save node, a resize, or a detail pass.

Installing it

Same as every node in this pack: search ComfyUI-TkNodes in ComfyUI Manager and install, or do it by hand:

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

Restart ComfyUI. This node has no special dependencies beyond what the pack already needs, but it does need an actual upscale model file on disk - the README says as much directly, listing upscale models as something you grab "via ComfyUI's model downloader or Hugging Face." Drop the file in models/upscale_models and restart (or refresh) before it shows up in the dropdown.

Common issues

model_name dropdown is empty. You don't have an upscale model installed. This node has nothing built in - it only lists what's already sitting in your upscale_models folder, so go grab one (4x-UltraSharp is the community's default general-purpose pick) before you can use it.

Out of VRAM on a big image. A large source image plus a 4x model adds up fast, especially stacked on top of whatever diffusion model you already had loaded. If you're hitting OOM, downscale the source first or free the generation model from VRAM before this step runs.

Bypass "looks like it's doing nothing." That's correct - with bypass_upscaler set to true, the output is deliberately identical to the input. It's there so you can A/B the upscale stage inside a saved workflow, not to visibly change anything on its own.

Worth knowing going in: this is a small, quiet pack. Checked it against the community record and there's no chatter about it at all - no workflow-share threads, no "essential node" reputation the way Impact Pack or rgthree get. It reads like a solo dev's personal utility collection, and this node is exactly that: a tidy convenience wrapper, nothing novel happening under the hood.

Categoryimage/upscaling

Inputs (3)

NameTypeDefaultDescription
imageIMAGEThe image to upscale.
model_nameCOMBOThe upscale model to use.
bypass_upscalerBOOLEANfalseBypass upscaling and return the original image if yes.

Outputs (1)

NameTypeDescription
IMAGEIMAGE