SeedVR2 Video Upscaler (v2.5.24)
The node where the upscale actually happens
- image
- dit
- vae
- IMAGE
This is the business end of SeedVR2 - the node that takes your frames, the model, and the VAE, and gives you back the upscaled result. SeedVR2 is ByteDance's one-step video restoration model that the ComfyUI crowd adopted as the best "add real detail" upscaler going: Apache 2.0, no non-commercial rider, and it preserves the picture instead of reinventing it the way SUPIR does. This node is the current v2.5 main node - despite the name it's what most people run on single images, because the video path really does want a datacenter GPU.
The important thing to understand up front: this node doesn't hold a model. It's the assembly point. You feed it a DiT bundle from the SeedVR2 (Down)Load DiT Model node and a VAE bundle from the SeedVR2 (Down)Load VAE Model node, and it orchestrates the four-phase pipeline (encode → upscale → decode → color-correct) across your frames.
What wires in
- image - your input frames, as an image batch. One image or a whole video's worth; both work.
- dit - the
SEEDVR2_DIToutput from the DiT loader. This is where 3B-vs-7B and the FP16/FP8/GGUF choice actually got made. - vae - the
SEEDVR2_VAEoutput from the VAE loader.
No dit, no vae, no upscale. That's the shape of it.
The settings a beginner actually touches
- resolution - target for the shortest edge, default
1080. Aspect ratio is preserved automatically, so this is your "how big" dial. - batch_size - default
5, and this one has a rule that bites: it must follow the 4n+1 formula - 1, 5, 9, 13, 17, 21… The model processes each batch together for temporal consistency, so it needs that shape. Set it to 1 for a single still; for video, match your shot length if you can (a 21-frame shot likesbatch_size: 21). Bigger batches are actually faster per frame and more temporally coherent - but they cost VRAM. - color_correction - defaults to
lab, which is the right default. LAB does full perceptual color matching and keeps output faithful to the source. The alternatives (wavelet,wavelet_adaptive,hsv,adain,none) exist if you want to tune, butlabis where to start.
That's genuinely it for a first run. seed (default 42) makes results reproducible; max_resolution (0 = no cap) auto-scales down if any edge blows past a limit you set.
The VRAM and video knobs
The optional inputs are where you fight OOM and video seams:
- offload_device - defaults to
cpu. Where intermediate tensors get parked between phases.cpuis the safe choice for long videos;nonekeeps everything on the GPU (fastest, hungriest). - enable_debug - turn this on the moment anything goes wrong. It prints per-phase memory and timing, which tells you which phase OOMed - and that's what decides your fix (encode phase → VAE encode tiling; upscale phase → BlockSwap on the DiT loader; decode phase → VAE decode tiling).
- temporal_overlap (0–16) and prepend_frames (0–32) - video tools. Overlap blends between batches to kill the seam where one batch meets the next; prepend feeds reversed frames at the start to reduce the artifact you'd otherwise get on frame one. Leave both at 0 for stills.
- input_noise_scale / latent_noise_scale - small nudges (try 0.1–0.3 and 0.05–0.15 respectively) if you see artifacts at very high output resolutions. Most people never touch them.
- uniform_batch_size - pads the final batch so it matches the others, avoiding a temporal hiccup when your frame count isn't a clean multiple of
batch_size.
Install and the traps worth knowing
Install the pack via ComfyUI Manager (search "ComfyUI-SeedVR2_VideoUpscaler," install, restart) or clone it: cd ComfyUI && git clone https://github.com/numz/ComfyUI-SeedVR2_VideoUpscaler.git custom_nodes/seedvr2_videoupscaler, install requirements.txt, restart. Models auto-download on first use.
Two things to know before you judge the output. SeedVR2 lifts contrast - enough that some people feel the result reads as more AI-generated than the input, so eyeball it. And on close-up faces it can wreck skin texture (the corpus's bluntest review was "human to lizard upscaler"). It's not a settings bug, it's the model - give recognizable faces their own pass with ADetailer or inpainting rather than trusting one run. For video specifically, fine repeating textures (patterned wallpaper, fabric weave) can shimmer because consecutive frames resolve them differently; that's the temporal problem, and temporal_overlap only softens it.
The output is a plain IMAGE batch, normalized for ComfyUI, matching your input's RGB/RGBA format - wire it into a Save Image or a video combine node and you're done.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input video frames as image batch. Accepts both RGB (3-channel) and RGBA (4-channel) formats. Output format will match input format. | |
| dit | SEEDVR2_DIT | DiT model configuration from SeedVR2 (Down)Load DiT Model node | |
| vae | SEEDVR2_VAE | VAE model configuration from SeedVR2 (Down)Load VAE Model node | |
| seed | INT | 420–4294967295 | Random seed for reproducible generation (default: 42). Same seed with same inputs produces identical output. |
| resolution | INT | 108016–16384 | Target resolution for the shortest edge in pixels (default: 1080). Automatically maintains aspect ratio of input. Even values required for optimal processing. |
| max_resolution | INT | 00–16384 | Maximum resolution limit for any dimension (default: 0, no limit). If any edge exceeds this after applying resolution, both dimensions are scaled down proportionally. Useful to prevent excessive VRAM usage on extreme aspect ratios. |
| batch_size | INT | 51–16384 | Number of frames processed together per batch (default: 5). Must follow pattern 4n+1: 1, 5, 9, 13, 17, 21, ... • Higher values: Better temporal consistency and faster processing • Lower values: Reduced VRAM usage Ideally match to shot length for best quality. |
| uniform_batch_size | BOOLEAN | false | Pad final batch to match batch_size (default: False). Prevents temporal artifacts caused by small final batch. Add extra compute but recommended for optimal quality. |
| color_correction | COMBO | lab | Corrects color shifts in upscaled output to match original input (default: lab). The upscaling process may alter colors; this applies color grading to restore them. • lab: Perceptual color matching with detail preservation (recommended) • wavelet: Frequency-based natural colors, preserves fine details • wavelet_adaptive: Wavelet base with targeted saturation correction • hsv: Hue-conditional saturation matching • adain: Statistical style transfer approach • none: No color correction applied |
| temporal_overlapopt | INT | 00–16 | Overlapping frames between consecutive batches (default: 0, disabled). Improves temporal consistency across batch boundaries through blending. Values 1-4 work well for most content. |
| prepend_framesopt | INT | 00–32 | Number of frames to prepend (reversed from start) before processing (default: 0). Helps reduce artifacts at video beginning. Prepended frames are automatically removed from final output. |
| input_noise_scaleopt | FLOAT | 0.0000–1 | Input noise injection scale (default: 0.0, disabled). Adds controlled variation to input images before encoding. Range: 0.0 (no noise) to 1.0 (maximum noise). Can help with certain types of artifacts. |
| latent_noise_scaleopt | FLOAT | 0.0000–1 | Latent space noise injection scale (default: 0.0, disabled). Adds controlled variation during the diffusion process. Range: 0.0 (no noise) to 1.0 (maximum noise). Can soften details if input_noise_scale doesn't help. |
| offload_deviceopt | COMBO | cpu | Device for storing intermediate tensors between processing phases (default: cpu). • 'none': Keep all tensors on inference device (fastest but highest VRAM usage) • 'cpu': Offload to system RAM (recommended for long videos, slower transfers) • 'cuda:X': Offload to another GPU (good balance if available, faster than CPU) |
| enable_debugopt | BOOLEAN | false | Enable detailed debug logging (default: False). Shows memory usage, timing information, and processing details. Useful for troubleshooting errors and performance issues. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | Upscaled video frames with color correction applied. Format (RGB/RGBA) matches input. Range [0, 1] normalized for ComfyUI compatibility. |