Nodes/ComfyUI Upsampler Nodes/⚡ Upsampler Dynamic Upscale
ComfyUI Node

⚡ Upsampler Dynamic Upscale

Keeps your composition, forces in new detail — and gives you the leash to control it

By cedarconnor·Created about a year ago·Updated 7 months ago· 2
⚡ Upsampler Dynamic Upscale
  • image
  • upscaled_image
api_key
input_image_type
upscale_factor2.0
global_creativity5
resemblance8
detail5
imgbb_api_key
description
should_enhance_facesfalse
should_preserve_handsfalse
should_preserve_blurfalse
max_parallel_jobs1

Dynamic Upscale is the middle child of the Upsampler pack, and it's the one whose name actually matches its behavior: it preserves the overall composition of your image while forcing new detail in. Same cloud API as its siblings, same credit meter, one crucial extra knob - resemblance - that turns "dynamic" from marketing into something you control.

What it's for

Generative upscaling has a well-known failure: the harder a model works at adding detail, the more it wants to move your geometry. Shoulders shift, backgrounds rearrange, and the image stops being the image you generated. Dynamic is the pack's answer to that. It sits between Smart Upscale (which reimagines freely) and Precise Upscale (which just enlarges and sharpens), and it's the one to reach for when you're happy with the composition of a render but want it to look sharper, richer, more textured - without a structure transplant.

Think of the two sliders working against each other. resemblance (0–10, default 8) is the leash: how closely the output must stick to the source structure. global_creativity (0–10, default 5) is how hard the service is allowed to reimagine. High resemblance plus high detail is the sweet spot for "add texture without moving anything" - that's the workflow where you push detail into a soft background and keep resemblance near its default. If you deliberately want the service to redraw and rearrange, that's the direction you lower resemblance, and you should expect the result to stop resembling the input. The community's rule of thumb from the wider generative-upscaling world applies here: every generative rung rewrites identity, and the farther you push it the more it shows.

How it works

The plumbing is identical to the pack's other nodes. The node converts your image to a PIL image, uploads it to a hoster for a public URL (ImgBB if you set an imgbb_api_key, otherwise Catbox.moe → 0x0.st → PostImages in fallback order), POSTs it to https://upsampler.com/api/v1/dynamic-upscale with your API key, polls the status endpoint until the job completes, and downloads the upscaled image back into a tensor. It blocks while polling, so ComfyUI looks hung - it isn't; the console streams progress and tells you the credit cost when each job lands.

Inputs that matter

  • api_key - your upsampler.com key. Required, and there's no env-var shortcut for it; it goes in the node.
  • input_image_type - realism, anime, or universal. Match the source or you'll get the wrong texture treatment.
  • upscale_factor - 1.0–4.0, default 2.
  • resemblance - the pack-unique knob described above. Default 8; drop toward 0 when you want creative freedom.
  • global_creativity and detail - reimagine strength and detail push, both 0–10.
  • should_preserve_hands - hands are where generative upscalers notoriously fall apart, and this is the only node in the pack with this toggle. Switch it on for anything with visible hands.
  • should_enhance_faces - for portraits, same rebuild-caveat as everywhere.
  • description - optional prompt sent with the request; empty is fine.

Output is upscaled_image, an IMAGE tensor, straight into SaveImage or a face-fix pass downstream.

Install and setup

Manager can find it as "ComfyUI Upsampler Nodes," or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/cedarconnor/upsampler comfyui-upsampler
cd comfyui-upsampler
pip install -r requirements.txt

Restart ComfyUI afterward. Dependencies are just requests and Pillow - no models, no GPU requirement, nothing to download. You do need an upsampler.com account with credits and an API key, and an ImgBB key is strongly recommended because the free-host fallback (Catbox, 0x0.st, PostImages) is the least reliable link in the chain.

Common issues and gotchas

Dynamic costs 1 credit per output megapixel (min 1), so a 2x on a 1024² image runs about four credits - the generative nodes are the pricey ones in this pack. Every image you process is uploaded to a public URL and processed on a third-party server; keep private work out of it. Rate limits are 90 job POSTs per minute and 240 status checks, so max_parallel_jobs above 1 on a batched input will earn you 429s - the node retries those, but "invalid API key" and "insufficient credits" fail immediately. If hands come back mangled, you forgot should_preserve_hands. And if the output drifts away from your composition, that's not a bug: you lowered resemblance. Pull it back up.

CategoryUpsampler

Inputs (13)

NameTypeDefaultDescription
imageIMAGEInput image or tile tensor to upscale (values in [0,1]).
api_keySTRINGUpsampler API key used to authenticate requests.
input_image_typeCOMBOChoose the preset that best matches the source image style.
upscale_factorFLOAT2.01–4Overall scale factor applied by the Upsampler service.
global_creativityINT50–10Controls how strongly the service reimagines the image.
resemblanceINT80–10Adjust how closely the output should match the input.
detailINT50–10Detail enhancement intensity for the upscaled result.
imgbb_api_keyoptSTRINGOptional ImgBB API key for authenticated temporary hosting.
descriptionoptSTRINGOptional text prompt sent with the upscale request.
should_enhance_facesoptBOOLEANfalseEnable Upsampler face enhancement for portraits.
should_preserve_handsoptBOOLEANfalseTry to maintain accurate hand details when present.
should_preserve_bluroptBOOLEANfalseMaintain natural blur instead of sharpening every region.
max_parallel_jobsoptINT11–15Maximum parallel Upsampler jobs per node (1-15). Respects UPSAMPLER_MAX_CONCURRENCY and API rate limits.

Outputs (1)

NameTypeDescription
upscaled_imageIMAGE