STAR Video Super Resolution (All-in-One)
The diffusion-powered video upscaler that actually reads your prompt
- images
- images
Most video "upscalers" you can drop into ComfyUI are pixel stretchers - ESRGAN passes and Lanczos that make the image bigger without adding anything. STAR is not that, and if you've ever run SUPIR on a still you already know what it feels like. It's a full diffusion model that treats upscaling as generation: it denoises your low-res frames back to life, guided by a text prompt, 2x to 4x bigger, with temporal coherence across the clip. Slow, VRAM-hungry, occasionally magical - and a genuinely different tool from the RTX real-time nodes or a SeedVR2 pass.
STAR stands for Spatial-Temporal Augmentation with Text-to-Video Models for Real-World Video Super-Resolution, from NJU-PCALab (Nanjing University, arXiv 2501.02976). This node is a wrapper around it by vjumpkung - a single-node pack that bundles the whole pipeline so you never touch the research code. It's a niche one, and the lack of community noise around it (zero real footprint on r/comfyui as of mid-2026) tells you it hasn't gone mainstream. It's not a beginner's first upscaler. It's the one you reach for when a clip is genuinely low-res and soft and you want detail invented, not just pixels.
How it works
Under the hood the node runs a four-piece pipeline. Your frames get upscaled to the target resolution and normalized, then encoded into latent space by Stable Video Diffusion's temporal VAE. The model adds noise, then a text-to-video U-Net (I2VGen-XL-based) with a ControlNet-style structure hint denoises it back over your chosen step count, conditioned on your prompt plus a built-in negative. Finally a chunked temporal-VAE decode turns the latents back into frames, and an AdaIN color fix (borrowed from sd-webui-stablesr) corrects the color drift diffusion upscalers love to introduce. The noise level is fixed internally - you don't set denoising strength, the model does.
Long clips are handled by chunking: if your frame count exceeds max_chunk_len, the video is sliced into overlapping windows with a 50% overlap so the seams don't show.
The inputs that matter
- model - Light vs Heavy Degradation. Pick based on how wrecked the source is; heavy is for genuinely degraded footage. Each is a separate ~2-3GB weight file from the
SherryX/STARHF repo, auto-downloaded on first use. - images - a
IMAGEtensor of frames, e.g. straight from VHS_LoadVideo (the included example workflow uses exactly that). - resolution - target for the shorter side, aspect ratio preserved. 720 is fine for 2x on a 360p source; don't chase 2160 unless you have the VRAM.
- prompt - this is the party trick. "a high quality video" or describing the scene genuinely steers what detail gets invented.
- steps / cfg / sampler / solver_mode - defaults (15, 7.5, dpmpp_2m_sde, fast) are sane; bump steps toward 30-50 if results look mushy.
- max_chunk_len - the VRAM valve. Lower it when you OOM.
- precision - fp16 or fp8. fp8 roughly halves model memory, and the code falls back to fp16 if your torch build can't do it.
- seed - deterministic roll for reproducibility.
Output is a single IMAGE tensor (upscaled frames, 0-1 range) - wire it into VHS_VideoCombine to write the mp4.
Install
ComfyUI Manager: search ComfyUI-STARWrapper and click install. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/vjumpkung/ComfyUI-STARWrapper.git
cd ComfyUI-STARWrapper
pip install -r requirements.txt
Then restart. The requirements list is heavy and pinned in ways that can bite: open-clip-torch==2.20.0, numpy<2, plus av, opencv-python, fairscale, torchsde, diffusers[torch]. The README explicitly wants xformers installed first, matched to your PyTorch version (the bundled install.py attempts that match for you); the author notes CUDA 13 builds don't work.
Where people get burned
VRAM. This loads a U-Net, a structure network, an OpenCLIP text encoder and the SVD temporal VAE at once - think many GB even in fp16. If you OOM, lower max_chunk_len first, then the resolution. The two model files eat ~2-3GB of disk each on top. First run needs internet for the model, the VAE and the CLIP encoder, so a firewall or a flaky HF connection stalls at startup. And the pinned open-clip-torch / numpy<2 can fight other nodes in a big install - if unrelated nodes start erroring after this lands, check those versions. Don't expect real-time: a diffusion upscaler that rewrites detail takes minutes per short clip, not seconds. That's the price of the prompt-guided magic, and it's why the fast NVIDIA nodes and STAR aren't really competitors.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| model | COMBO | Light Degradation | STAR checkpoint trained for the source degradation level. |
| precision | COMBO | fp16 | UNet weight precision. FP8 requires compatible PyTorch and hardware. |
| prompt | STRING | a good video | — |
| resolution | INT | 72016–16384 | — |
| max_chunk_len | INT | 321–128 | Maximum temporal window processed by the diffusion model. |
| cfg | FLOAT | 7.50–20 | Classifier-free guidance strength. |
| sampler | COMBO | dpmpp_2m_sde | 2 options: heun, dpmpp_2m_sde |
| solver_mode | COMBO | fast | 2 options: fast, normal |
| steps | INT | 151–100 | — |
| seed | INT | 420–18446744073709550000 | — |
| vae_decode_chunkopt | INT | 11–8 | Frames decoded per VAE pass. One minimizes peak VRAM; increase only when enough VRAM is available. This value no longer invalidates diffusion sampling in the modular workflow. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |