STAR Video Super-Resolution
STAR's diffusion video upscaler
- star_model
- images
- images
Upscaling video is a different job from upscaling an image, and this node is built for the hard version. Feed it an IMAGE batch of frames and it runs the STAR diffusion pipeline - 4x super-resolution with temporal coherence, the thing a good image upscaler applied frame-by-frame can't give you. The classic failure: a per-frame upscaler that handles a patterned wallpaper perfectly in stills and makes it shimmer like a broken GIF in motion, because nothing forces consecutive frames to agree. STAR is temporally aware by design - a temporal VAE, ControlNet conditioning, and a diffusion pass that sees whole chunks of frames at once, built on the I2VGen-XL / VEnhancer lineage.
Wire star_model from the STAR Model Loader, and images from anything that outputs frames - LoadImage for a single photo, VHS LoadVideo, or a video loader. It emits images back out as a batch you save with VHS or SaveAnimatedWEBP. Single-image use works fine, but the model was born for footage: genuinely degraded old clips are where it shines, not clean renders that an ESRGAN pass handles faster.
The inputs that matter
- upscale (1–8, default 4): the factor. 4x is the sweet spot; higher eats VRAM fast.
- solver_mode:
fastuses STAR's optimized schedule - 4 coarse + 11 fine steps, hardcoded, and thestepsinput is ignored.normaluses a uniform schedule and respectssteps. Leave it onfastunless you're deliberately experimenting; it's the difference between "slow" and "bring a book". - denoise (default 0.9): how much of the input structure survives. Lower = more faithful to the original, less invented detail. 0.9 is the STAR default and a good place to sit.
- guide_scale (default 7.5) and prompt: STAR always appends its built-in quality prompt, so leaving the prompt blank is not a mistake - that's the intended use. Raise
guide_scaleif you want the model's interpretation to dominate. - max_chunk_len (default 32) and segment_size (default 0): your VRAM and RAM levers. Lower
max_chunk_lento shrink the frames-per-chunk and fit longer videos in less VRAM (chunks overlap 50% to keep motion coherent). Setsegment_sizeto 16–32 for long videos to bound system RAM; segments crossfade at 25% overlap so the seams stay invisible. - color_fix (default
adain): post-pass color matching so the upscaled footage doesn't drift from the source.waveletpreserves low-frequency color instead;noneif you want to grade later yourself.
Install and first run
Same as the loader - ComfyUI Manager, search ComfyUI-STAR, or:
cd ComfyUI/custom_nodes
git clone --recursive https://github.com/ethanfel/Comfyui-STAR.git
cd Comfyui-STAR
pip install -r requirements.txt
First run downloads the checkpoint into ComfyUI/models/star/ (choose light_deg.pt vs heavy_deg.pt in the loader), plus the OpenCLIP encoder and SVD temporal VAE. Restart ComfyUI after installing.
Where people get burned
It's heavy. This is diffusion, not a filter - expect minutes per clip, and real footage costs real GPU. One community run needed a rented pod and ~90 minutes for a single 4K clip, and a 299-frame scene at 430p wouldn't fit even in 80GB VRAM until it was downscaled first. On a consumer card, set the loader's offload to model or aggressive and drop max_chunk_len - or skip ComfyUI entirely for very long videos and run the pack's standalone inference.py, which streams frames straight to ffmpeg and copies the audio:
python inference.py input.mp4 -o output_4x.mp4 --offload model --segment-size 8
Heavily compressed sources will make the model invent structure (it has to). Clean the footage first if you can, and give it footage, not a slideshow - temporal coherence only pays off when there's motion to be coherent about.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| star_model | STAR_MODEL | Connect from STAR Model Loader. | |
| images | IMAGE | Input video frames (IMAGE batch). Can come from LoadImage, VHS LoadVideo, etc. | |
| upscale | INT | 41–8 | Upscale factor applied to the input resolution. 4x is the default. Higher values need more VRAM. |
| steps | INT | 151–100 | Number of denoising steps. Ignored in 'fast' solver mode (hardcoded 15). More steps = better quality but slower. |
| guide_scale | FLOAT | 7.51–20 | Classifier-free guidance scale. Higher values follow the prompt more strongly. 7.5 is a good default. |
| prompt | STRING | Optional text prompt. STAR's built-in quality prompt is always appended. Leave empty to use only the quality prompt. | |
| solver_mode | COMBO | fast | fast: optimized 15-step schedule (4 coarse + 11 fine). normal: uniform schedule using the steps parameter. |
| max_chunk_len | INT | 324–128 | Max frames processed at once. Lower values reduce VRAM usage for long videos. Chunks overlap by 50%. |
| seed | INT | 00–18446744073709550000 | Random seed for reproducible results. |
| denoise | FLOAT | 0.900.1–1 | How much noise to add before denoising. 0.9 = STAR default (preserves input structure). 1.0 = full denoise (starts from pure noise). Lower values preserve more of the original. |
| color_fix | COMBO | adain | Post-processing color correction. adain: match color stats from input. wavelet: preserve input low-frequency color. none: no correction. |
| segment_size | INT | 00–256 | Process video in segments of this many frames to reduce RAM usage. 0 = process all at once. Recommended: 16-32 for long videos. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |