Image Upscaler · Upscale
Image Upscaler goes to 8K for the price of 2K — the catch is what comes back
- image_url
- images
- task id
Here's the pricing quirk that makes this node interesting: all three tiers cost the same. 1.8 credits - under two cents - whether you ask for 2K, 4K or 8K. The tier sets a pixel budget, not a price.
Which is exactly the sort of thing that should make you suspicious, and in the useful way. Read the tooltip before you select 8K: about 4 megapixels at 2K, 17 at 4K, 67 at 8K, with your aspect ratio kept. And a tier below your source's pixel count scales the image down. So the dropdown isn't "how much quality do I want", it's "what size do I want the file".
What job is this, exactly
The upscaling essay opens by splitting the word into three jobs that share nothing but a bigger output: more pixels, more detail, and more pixels over time. This node is squarely more detail - it's a generative pass running on PopNow's hardware, so it's in the family of SeedVR2 and SUPIR rather than the family of Lanczos and 4x-UltraSharp. It's going to invent plausible texture. Sometimes that's what you want (a soft, small, compressed source that needs rebuilding); sometimes it's the wrong tool (a sharp 4K render you just need at 8K for print, where Lanczos locally costs nothing and cannot hallucinate).
The honest rule of thumb: if you can see the detail you want in the source, don't pay a generative model to re-invent it. If the source is mushy, this is a cheap way to have someone else's big GPU do the repair.
The inputs
image_url is the only required input. Its framing and aspect ratio are kept - only resolution goes up, which is exactly the contract you want.
resolution defaults to 4K. Options are the three tiers, and they're all the same price, so pick by destination: 4K for stock and print-ish work, 8K only if something genuinely needs 67 megapixels, 2K when you're upscaling a small source and just want it clean.
output_format defaults to JPEG; png is lossless and, per the tooltip, several times larger. For an intermediate in a longer graph, choose PNG.
Outputs: images and task id. No seed - you can't pin a roll and iterate, so treat each run as final.
The part nobody warns you about: 67 megapixels is a big tensor
An 8K result comes back into your graph as an ordinary ComfyUI IMAGE, which is a float32 tensor. At 67 megapixels that's on the order of 800 MB sitting in memory before anything else touches it, and the very next node - a save, a resize, another model - has to deal with it. People get away with it on a 24 GB card and get mysterious slowdowns or OOMs on a 8 GB one, and they blame the node. If you're on modest VRAM, upscale to 4K, save, and do the second stage separately.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Or Manager → search PopNow → Install, then restart. Add a key from popnow.ai/api/console/keys via Settings > PopNow, or:
POPNOW_API_KEY=sk-popnow-... python main.py
No dependencies (the pack needs only what ComfyUI ships), no weights, no GPU. Restart after the key is set so the node catalog loads.
Where people get burned
Your input is re-encoded on the way out. The pack uploads images as PNG, and if that PNG exceeds 10 MiB it falls back to JPEG at quality 95, 90, 85. A big detailed photo can silently arrive as a JPEG, which is a bit rude for an upscaler whose whole job is preserving detail. Downscale to fit the ceiling deliberately rather than letting the pack decide.
Picking a tier below your source shrinks it. An 8K source sent to the 2K tier comes back at 4 megapixels. People do this by accident with big camera files and conclude the node "ruined" the image.
A face you need to recognise gets rewritten. Same warning the KB gives for every generative rung of the ladder: expect identity drift, and give faces their own pass if it matters.
It's an API call, so the image leaves your machine - the standard trade for this whole category, well covered in the KB's API-node writeup. Failed runs are refunded; successful ones aren't, and a cancelled run is not a refund.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | The image to enlarge. Its framing and aspect ratio are kept; only the resolution goes up. | |
| resolution | COMBO | 4K | Output size tier: a pixel budget of about 4 (2k), 17 (4k) or 67 (8k) megapixels, with the aspect ratio kept. A tier below the source's pixel count scales the image down. All three tiers cost the same. |
| output_format | COMBO | JPEG | File type of the returned image. png is lossless but several times larger than jpeg. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |