⭐ Star SD Upscale Refiner Advanced
Star SD Upscale Refiner Advanced — one node to make SD1.5 output big and beautiful
- model
- clip
- vae
- IMAGE
- options
- image
- latent
If you're on SD1.5, your base generations cap out around 512–768px, and the classic "make it big" recipe is a multi-node monster: an ESRGAN upscale, a latent encode, a tiled second-pass with low denoise, LoRA stacking, maybe a ControlNet tile to hold the structure together. Star SD Upscale Refiner Advanced collapses that whole chain into one node with the knobs you actually need. It's the most opinionated node in the StarNodes pack, and for SD1.5 users it's the one that justifies the install.
What it does, end to end
You feed it the model, CLIP and VAE from a checkpoint loader, plus an image (or the latent you want to refine). Internally it runs a full two-phase pipeline:
- Optional pixel upscale - with
UPSCALE_IMAGEon, it scales the image toOUTPUT_LONGEST_SIDE(default 3200) using the ESRGAN model picked inUPSCALE_MODEL(defaults to the reliable4x_NMKD-Siax_200k). This is the "more pixels" rung of the upscaling ladder - fast, no hallucination, gives the refine pass a bigger canvas. - Tiled refine pass - the image is encoded to latent and re-sampled at low denoise (
refine_denoise, default 0.2) with your chosensampler_name/scheduler_name. Diffusion runs overtile_size-sized tiles with a tiled VAE decode, which is what keeps a 3200px upscale tractable on modest VRAM. Optional ControlNet tile guidance (controlnet_name) holds the structure so tiles don't drift.
Along the way it can stack up to three LoRAs with individual weights (lora_1_name…lora_3_name + strengths), apply your own positive/negative prompts, and even handles FreeU/PAG-style patches internally for extra detail. There's an options input where you can plug Star Split Sampler Option to run the refine pass with two different samplers.
The inputs that matter
For a beginner, the short list is: the model/clip/vae trio, an IMAGE input, UPSCALE_IMAGE + OUTPUT_LONGEST_SIDE, refine_denoise (keep it low - 0.2 is a great starting point; too high and the upscale drifts from your original), and refine_steps (default 9 - enough for a refine pass, and low enough to be fast). Set your LoRA slots if you're stacking them. Outputs are image and latent, so you can either save the result or keep working from the latent.
Installing
Part of StarNodes:
cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt
Restart, search star under ⭐StarNodes/Upscale. ComfyUI Manager users: search "Starnodes". Note it needs a current ComfyUI - it leans on VAEDecodeTiled and modern sampler internals, so if you're months behind on updates, update before blaming the node.
Where people get burned
refine_denoise is the #1 mistake: crank it to 0.5+ on a 3200px upscale and you get a second-generation image that barely resembles your original, with doubled artifacts. Keep it at 0.2–0.3 and bump refine_steps if you want more refinement. Second, the ControlNet tile input is optional - leave it at "None" until you're comfortable, and only add a tile ControlNet model if your tiles visibly diverge. Third, this is an SD1.5-focused pipeline; feeding it a Flux or SDXL checkpoint will produce wrong results because the internal defaults assume the SD1.5 latent format. It's the right tool for the job, but only for that job.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| lora_1_name | COMBO | None | 1 options: None |
| lora_1_strength | FLOAT | 0.25-10–10 | — |
| lora_2_name | COMBO | None | 1 options: None |
| lora_2_strength | FLOAT | 0.10-10–10 | — |
| lora_3_name | COMBO | None | 1 options: None |
| lora_3_strength | FLOAT | 0.10-10–10 | — |
| positive_prompt | STRING | masterpiece, best quality, highres | — |
| negative_prompt | STRING | (worst quality, low quality, normal quality:1.5) | — |
| use_negative | COMBO | No | 2 options: No, Yes |
| seed | INT | 53984759830–18446744073709550000 | — |
| refine_steps | INT | 91–500 | — |
| refine_denoise | FLOAT | 0.200–1 | — |
| tile_size | INT | 102464–16384 | — |
| sampler_name | COMBO | euler | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler_name | COMBO | simple | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
| IMAGEopt | IMAGE | — | |
| controlnet_nameopt | COMBO | None | 1 options: None |
| UPSCALE_IMAGEopt | BOOLEAN | false | — |
| UPSCALE_MODELopt | COMBO | 4x_NMKD-Siax_200k.pth | 1 options: Default |
| OUTPUT_LONGEST_SIDEopt | INT | 320064–99968 | — |
| optionsopt | * | Optional refine options. Connect ⭐ Star Split Sampler Option to split the refine pass between two samplers, or ⭐ Star FlowMatch Option (SIGMAS) to override the sigma schedule. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| latent | LATENT | — |