LatentUpscaleMultiply
The deprecated ancestor of the pack's latent scaler
- samples
- LATENT
LatentUpscaleMultiply is a ghost from the pack's past. Before the Quality of Life Suit consolidated everything into one extension, latent scaling lived in its own standalone file - and this node is that old implementation, kept around so workflows built on the original survive. You can still search for it under O/deprecated/latent, and it still works, but it's the one you should actively replace.
The story, quickly: the pack's installer even hunts for and archives the legacy standalone files (LatentUpscaleMultiply_Omar92.py and friends) on startup, zipping them into a backup so they can't clash with the merged pack. This deprecated node is the same code living on inside the merged extension. The modern replacement is LatentUpscaleFactor _O in O/latent - same idea, slightly better behaviour.
How it works
Mechanically it's almost identical to the modern node: read the latent's width and height, multiply by WidthMul and HeightMul, hand the result to common_upscale with the chosen method and crop. The input names are the giveaway of its age: WidthMul / HeightMul instead of WidthFactor / HeightFactor.
Inputs:
samples(LATENT)upscale_method-nearest-exact,bilinear, orareaWidthMul(FLOAT) - width multiplier, default 1.25, range 0–10HeightMul(FLOAT) - height multiplier, default 1.25crop-disabledorcenter
One output: LATENT.
Where it differs from the modern node
Two small things, both in your favour if you switch:
- The multiple-of-8 enforcement is slightly sloppier here. The old code rounds up to the next multiple of 8 unconditionally (
d += 8 - leftover); the modern version rounds to the nearest multiple. The old way can push a dimension up a full 7 pixels when rounding down would have been closer. Minor, but it's the kind of difference that shows up in odd final sizes. - No 8192 cap. The deprecated node lacks the
MAX_RESOLUTIONclamp the modern one has, so a big factor on a big latent can produce a surprisingly large tensor.
Neither difference will wreck your workflow - that's why it still runs - but there's no upside to it either.
The honest advice
If you load an old workflow and this node appears, leave it be and let the graph run; it'll produce a valid latent. But if you're building anything new, don't search for it - grab LatentUpscaleFactor _O (or LatentUpscaleFactorSimple _O) from O/latent. Same one-line purpose, better rounding, a safety cap, and no "deprecated" tag hanging over it. And remember the general rule with latent upscaling in this pack: it's the cheap intermediate step of a two-pass workflow, not a true upscaler - keep factors modest and follow with a low-denoise second pass for detail.
Installing it
It comes with the Quality of Life Suit pack (omar92/ComfyUI-QualityOfLifeSuit_Omar92). Install via ComfyUI Manager (search "Quality of Life Suit") or clone:
cd <ComfyUI>/custom_nodes
git clone https://github.com/omar92/ComfyUI-QualityOfLifeSuit_Omar92.git
Restart ComfyUI properly. No models, no dependencies. On startup the pack may also archive any legacy standalone node files it finds in custom_nodes - if you had the old separate files installed, they'll be zipped up and removed, which is the pack cleaning house.
Common issues
- "I searched for this and found the 'Factor' node instead." Correct - that's the one you want.
- "My output size is a bit larger than expected." The old unconditional round-up to a multiple of 8. Switch to the modern node if it bothers you.
- "Is it broken?" No, it works. It's just surpassed.
It's a working relic, and the honest summary is one line: if you see LatentUpscaleMultiply, use LatentUpscaleFactor _O instead.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| samples | LATENT | — | |
| upscale_method | COMBO | 3 options: nearest-exact, bilinear, area | |
| WidthMul | FLOAT | 1.30–10 | — |
| HeightMul | FLOAT | 1.30–10 | — |
| crop | COMBO | 2 options: disabled, center |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |