Light-Tool: Upscale Image
A no-model upscaler with a sharpen toggle — and it knows when not to use it
- image
- image
If you're coming from the "real" upscaling world - ESRGAN models, tiled diffusion, SUPIR - this node is a different animal, and it's important to know which one you're getting. Light-Tool's Upscale Image is a geometric upscaler: it makes an image bigger with interpolation and optionally sharpens it. It adds zero new detail. It's the fast, deterministic, VRAM-free path from the first bucket of the upscaling essay, and for a lot of jobs that's exactly what you want.
The modes
Same four-mode family as its sibling Scale Image, driven by a target width and height (default 1024×1024):
- AUTO - stretches if the source aspect is within
aspect_tolerance(0.01) of the target, pads otherwise. - STRETCH - forces exact width×height, distortion be damned.
- FILL - scales until it covers the box, crops the center.
- PAD - fits inside and letterboxes with the RGBA
R/G/B/Acolor, positioned byalign.
resample runs LANCZOS through HAMMING (LANCZOS default). Nothing here is a secret - the interesting knob is the one the name advertises.
The sharpen toggle
sharpen defaults to on, and it's where this node earns a little nuance. It applies a plain PIL SHARPEN filter - and only when you're actually upscaling (the code checks that the target is larger than the source before touching it). So downscaling won't get a gratuitous sharpen pass. Real talk: PIL's SHARPEN is a blunt instrument. On a clean photo it can look crisp; on noisy or already-sharp sources it can look crunchy. For serious upscales the community's generic advice still holds - a light sharpen after interpolation is a taste thing, and you should A/B it with the toggle off before you commit.
Where it fits
This is the "make it bigger without a model" node: preparing a small image for a fixed-size canvas, bumping a detail pass's input, or doubling a reference before sending it somewhere that demands pixels. It is not the path to genuine detail - if the image is soft and you want the model to invent texture, that's the ESRGAN / tile-ControlNet lineage, not this node. If you want a model-driven upscale, this isn't it; keep this one for speed.
Installing it
Part of ComfyUI-Light-Tool by Hmily. ComfyUI Manager → search "ComfyUI-Light-Tool" → Install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ihmily/ComfyUI-Light-Tool
pip install -r requirements.txt
# restart ComfyUI
Pillow-only, no model files, works offline.
Where people get burned
- Expecting detail. The biggest trap in the whole category. Interpolation can't invent pores or fabric weave - that's the model's job. If the result looks "bigger but softer," that's physics, not a bug.
- Over-sharpening. Leave
sharpenon for organic sources and you may see halos. Turn it off for noisy or synthetic images. - Output size. Same as Scale Image: if your target isn't a multiple of 8, pair this with the pack's Safe Image Crop so the VAE stays happy downstream.
Right tool, right job: if "more pixels, nothing invented" is the job, this is a perfectly good one - and it's free.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| width | INT | 1024 | — |
| height | INT | 1024 | — |
| mode | COMBO | AUTO | 4 options: AUTO, STRETCH, FILL, PAD |
| R | INT | 2550–255 | — |
| G | INT | 2550–255 | — |
| B | INT | 2550–255 | — |
| A | INT | 2550–255 | — |
| align | COMBO | center | 5 options: center, top-left, top-right, bottom-left, bottom-right |
| resample | COMBO | LANCZOS | 6 options: LANCZOS, NEAREST, BILINEAR, BICUBIC, BOX, HAMMING |
| aspect_tolerance | FLOAT | 0.01 | — |
| sharpen | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |