⚜️ FOCUS Upscale
Your upscale model's native scale, resized to what you actually asked for
- image
- IMAGE
Upscale models don't take a "please upscale by 2x" request - they were trained at a fixed multiplier, usually 4x, and that's what they output no matter what you actually wanted. Normally that means two nodes: an upscale-by-model step, then a separate resize to get back to the number you actually needed. FOCUS Upscale folds both into one.
How it works
Straight from the README: "Scale_factor is based on the resolution of the input image, so if your upscale model wants to 4x it, this node will first do the upscale then downscale it to 2x (if you have the scale_factor set to 2)." It runs your loaded model at whatever its native multiplier is, then resizes the result down to hit your actual scale_factor using your chosen resampling method. One node, the arithmetic handled for you.
What it is, taxonomically
This sits squarely in the non-generative pixel-upscaling tier: ESRGAN-family models, no diffusion pass, adds no content, can't hallucinate detail, and runs fast. That's a real, distinct category from generative restorers like SUPIR or SeedVR2, which repaint detail that was never in the source. If your image is already sharp and you just need more pixels, this tier - and this node - is the right tool. If your source is soft, damaged, or you want the model to invent texture that isn't there, you want something generative instead.
That distinction actually answers a question that went unanswered in the pack's own launch thread on r/comfyui, where someone asked whether FOCUS Upscale is any different from Ultimate SD Upscale. It is, and substantially: Ultimate SD Upscale tiles the image and re-runs diffusion on each tile - it's generative, needs a checkpoint and sampler, and adds detail. FOCUS Upscale is a plain model-upscale-then-resize with zero diffusion involved anywhere in the pipeline.
Inputs and outputs that matter
image- the image to upscale.upscale_model- an enum reading whatever's already installed in yourmodels/upscale_modelsfolder. This pack doesn't ship a model of its own.scale_factor- your actual target multiplier, 0.01 to 16 in steps of 0.25, default 2. Independent of whatever multiplier your loaded model was trained at.resampling_method-lanczos,nearest,bilinear, orbicubic, used for the downscale step. This is doing real work here, not just cosmetic resizing, since it's the step reconciling your model's native output size with what you asked for.
Output is a single IMAGE.
Installing it
Via ComfyUI Manager: search Comfyui FOCUS nodes, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/DJ-Tribefull/Comfyui_FOCUS_nodes
Restart ComfyUI. You'll need an actual upscale model file - the community favorite for general use is 4x-UltraSharp - dropped into models/upscale_models. The pack itself ships no weights.
Common issues & troubleshooting
upscale_model dropdown is empty. No models installed. Grab one and restart; this node reads the same folder ComfyUI's stock upscale nodes do.
Result looks softer than expected. You're downscaling from the model's native output, so resampling_method matters more here than in a typical resize - lanczos is generally the sharpest of the four options and worth trying first if detail feels lost.
You expected it to add detail and it didn't. Correct behavior, not a bug - this is the non-generative tier. For a source that needs real restoration rather than just more pixels, that's a different class of tool entirely.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| upscale_model | COMBO | 0 options: | |
| scale_factor | FLOAT | 2.000.01–16 | — |
| resampling_method | COMBO | 4 options: lanczos, nearest, bilinear, bicubic |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |