EZ Upscale (Tiled)
EZ Upscale (Tiled)
- image
- IMAGE
Tiled upscaling is the old reliable trick for making images bigger when your card can't handle the full resolution at once: split the image into overlapping tiles, re-diffuse each one, blend the seams back together. Usually that means wiring up Ultimate SD Upscale or a custom tile graph with a dozen nodes and a ControlNet pass. EZ Upscale (Tiled) is the version that hides all of that inside a settings node - you set five numbers and the rest happens for you.
The catch, and the first thing to understand: this node doesn't produce an image. It produces an EZ_IMAGE_SETTINGS object that you feed into the pack's EZ Generate (or EZ Generate Save) node, which does the actual work. If you drop EZ Upscale (Tiled) onto a fresh canvas and look for an image output, you'll be confused - the output socket is labeled IMAGE but it's a bundle of instructions, not pixels. That's the pattern of this whole pack: settings nodes describe a job, EZ Generate executes it.
How it works
Under the hood EZ Generate takes your image, resizes it up by the multiplier, cuts it into square tiles of tile_size pixels with tile_overlap pixels of shared margin, and runs the sampler on each tile as img2img at denoise = 1 - image_weight. The tiles get feathered masks so the seams disappear, then they're composited back onto the full-size canvas. That's exactly the tiled diffusion upscaling described in the upscaling KB - arbitrary output sizes on limited VRAM - just with the node salad removed.
Because each tile is sampled at whatever size you set tile_size to, the model always works in its comfort zone even as the total image grows. A 2x upscale of a 1024px image to 2048px with 1024px tiles is really just four img2img passes the model is built for.
The inputs that matter
image- the IMAGE you're upscaling.image_weight(default 0.6) - how much the source image steers each tile. Higher means it hugs the original, lower means the sampler gets more creative. This is your denoise control in disguise:denoise = 1 - image_weight. For a clean upscale keep it at or above 0.5.multiplier(default 2.0, range 0.01–8) - the scale factor. 2x is the sweet spot for this kind of pass; going much beyond that in one shot is where quality starts to fall apart.tile_size(default 1024) andtile_overlap(default 64) - smaller tiles are more VRAM-friendly, more overlap means smoother seams at the cost of re-sampling the same pixels repeatedly.
Install
This ships in the Prompt Helpers pack by Pauan. Easiest path is ComfyUI Manager - search "Prompt Helpers" and install. Manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/Pauan/comfyui-prompt-helpers
Then restart ComfyUI. The pack's only Python dependencies are PyYAML and desktop-notifier - no model downloads, no heavy backend. One real requirement: it's built on the new Nodes 2.0 extension API, so you need a current ComfyUI (0.8.0+). If the nodes don't show up in your menu after install, that's the reason.
Where people get burned
- Batch size must be 1. The node errors if you feed it a batched image, so don't try to upscale a batch in one go.
- It won't combine with EZ Detail - the pack refuses both at once, by design.
- No built-in ControlNet Tile. The classic tiled-upscale failure is tiles diverging from the source and producing a patchwork. EZ Upscale handles seams for you, but it doesn't add a ControlNet Tile guide, so push
image_weighthigh (low denoise) and keepmultipliermodest - that's your anti-patchwork insurance. - It's diffusion upscaling, not a pixel upscaler, so it invents detail rather than just sharpening. That's the point, but don't expect it to preserve exact textures.
This isn't the ultimate quality upscaler - SeedVR2-class models still win on detail. It's the one you reach for when you want a clean 2x with no extra machinery and no VRAM explosion.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| image_weight | FLOAT | 0.60–1 | How much the image should influence the result. Higher number means it closely matches the image, lower number means more random. |
| multiplier | FLOAT | 2.000.01–8 | Scale factor (e.g., 2.0 doubles size, 0.5 halves size). |
| tile_size | INT | 102416–16384 | The pixel width and height of each tile. |
| tile_overlap | INT | 640–16384 | Amount of pixels that overlap between each tile. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | EZ_IMAGE_SETTINGS | — |