Nodes/SimpleSyrup/Simple Upscale Latent
ComfyUI Node

Simple Upscale Latent

Grow the latent, skip the VAE roundtrip

By Artificial-Sweetener·Created 5 months ago·Updated 21 days ago· 4
Simple Upscale Latent
  • latent
  • latent
◄methodAuto►
◄scale_factor2.00►

The classic hires fix does this: sample, decode, upscale the pixels with a model, encode again, sample some more. That middle roundtrip is wasteful and it loses something on both ends. Simple Upscale Latent is the pack's answer to it - resize the latent directly, with a small learned upscaler instead of Lanczos-flavored guessing, so the second pass starts from a bigger latent that came from where the first one left off.

The learned bit, briefly

The models here are SesquiLSR by LoganBooker: about 3M parameters, a 12MB file, and multiscale between 1x and 2x. It's a latent-space super-resolution network, not a pixel upscaler - its author's framing is that VAE → pixel upscale → VAE "feels very wrong and inefficient", which is exactly the workflow this node replaces. Trained on clean VAE latents. That qualifier matters, and I'll come back to it.

SimpleSyrup wraps that with two things Sesqui's own node doesn't do. First, the internal stage logic: since the network is only good for up to 2x, a 4x request gets chained through successive doubling stages rather than fed in at once. Second, and more useful, automatic family selection - Sesqui cannot tell which model family a latent came from, so its node makes you pick. Simple Upscale Latent reads the latent format off the sampling provenance the source sampler left behind and picks the matching checkpoint for you.

Inputs and outputs

  • latent - the clean, finished latent you want bigger. Attach a decoded image here by accident and you'll get a type error, not a surprise.
  • method - Auto by default. The dropdown also lists the pack's pinned SesquiLSR checkpoints (SDXL, Flux, Flux2, Wan), any latent upscaler you have installed under models/latent_upscale_models, and Comfy's plain interpolators (nearest-exact, bilinear, area, bicubic, bislerp).
  • scale_factor - width and height multiplier, 0.01 to 8. Default 2. Learned models get there through stages of at most 2x.
  • latent - the resized latent, still tagged with its sampling provenance, which is what lets the receiving sampler reuse noise from the first pass.

Install

Manager first: search the Node Pack list for SimpleSyrup, install, restart. Legacy Manager hides the same search under Custom Nodes Manager.

cd ComfyUI/custom_nodes
git clone https://github.com/Artificial-Sweetener/SimpleSyrup.git
cd SimpleSyrup
../../venv/bin/python -m pip install -r requirements.txt

Requirements bring in TorchLanc, Ultralytics, ONNX Runtime, Segment Anything, timm and the Hugging Face download helpers - union of the pack's features, so it's heavier than a latent-resize node has any right to be. PyTorch itself comes from ComfyUI.

On models: with Auto, the matching checksum-pinned SesquiLSR file is resolved from cache or downloaded for you into models/latent_upscale_models/<family>/upscaler_<Name>.safetensors. You don't have to fetch anything by hand - though if your machine is offline, pick an interpolation method instead and it will just work.

What to watch out for

Learned upscaling wants a clean latent. Sesqui was trained on fully denoised VAE latents, and the author is blunt that it "won't be very tolerant of partially denoised ones". Don't drop it mid-trajectory. If your results look mangled, that's the first thing to check.

It only scales up. Learned stages require enlargement and at least 2 latent pixels in each dimension; a downscale factor with a learned method is an error, not a shrug. Use bislerp or another native method if you actually want to shrink.

Auto needs provenance. With no sampling provenance on the latent - an empty latent, something from another pack - Auto falls back to Comfy's bislerp and logs that it did. Not a crash, just a quieter result than you were expecting.

Family mismatches raise. Pick a Flux checkpoint for an SDXL latent and it errors out rather than producing abstract art. The channel counts are checked, and a 16-channel checkpoint with no provenance is refused outright because the node can't tell Flux from Wan.

Denoise expectations change. Community testing on this upscaler found the same thing repeatedly: because the latent is genuinely cleaner than a bicubic-smeared one, you can run the follow-up sampler at a much lower denoise - 0.2 to 0.3 instead of the 0.5+ that latent upscaling usually demands. Worth trying before you crank anything. It is, in its author's own words, "another tool in the toolbox", not a magic upscaler, and a small 1-2x climb with a low-denoise sampler behind it is the sweet spot.

CategorySimpleSyrup/Latent

Inputs (3)

NameTypeDefaultDescription
latentLATENTClean latent to enlarge, carrying source sampling provenance when noise reuse is needed.
methodCOMBOAutoAuto selects a compatible learned model from sampling provenance, or Comfy's bislerp for unknown latent formats.
scale_factorFLOAT2.000.01–8Width and height multiplier; learned models enlarge through internal stages of at most 2x.

Outputs (1)

NameTypeDescription
latentLATENTResized clean latent retaining source sampling provenance for downstream noise reuse.