SUPIR is one of the most powerful image restoration models available today, and when it is adapted into ComfyUI for video work, the single biggest technical challenge is temporal conditioning — keeping frames consistent with each other so your upscaled 4K video does not flicker, pulse, or drift. This guide explains what temporal conditioning actually means in a SUPIR ComfyUI pipeline, how to configure it, which settings matter, and where the approach falls short compared to dedicated video upscalers.
What Temporal Conditioning Means in SUPIR
Also worth reading: What Is the Best AI VHS Upscaling Workflow for 4K? · What Is the Best Kling 3.0 4K Workflow for Upscaling and Polishing AI Videos? · How Do You Build a Local 4K Upscaling Workflow for AI-Generated and Low-Res Footage?
SUPIR (Scaling-UP Image Restoration) was released in early 2024 as a diffusion-based restoration model built on SDXL. It was designed for single images, not video. When you feed a video through SUPIR frame by frame, each frame is restored independently, and because diffusion sampling is stochastic, tiny differences in noise, text prompts, and latent states produce visible frame-to-frame inconsistency. Viewers perceive this as shimmering textures, crawling edges, or faces that subtly morph — problems that are invisible in stills but glaring at 24–30 fps.
Temporal conditioning is the umbrella term for techniques that anchor each frame's generation to its neighbors. In practice this means three things: reusing the previous frame's latent or VAE output as a reference input, keeping the random seed fixed across the sequence (or using controlled seed variation), and conditioning the positive prompt with descriptions of motion and scene continuity rather than static photo-style language. Some community workflows also pass a low-resolution version of the neighboring frames through SUPIR's captioner or control path so the model sees continuity cues.
It is important to be honest about the limits: SUPIR has no native temporal attention layers. Every method described here is a workaround layered on top of an image model. That is why even well-tuned SUPIR video pipelines rarely match the stability of models trained on video data, such as those used by commercial AI video upscalers. For archival footage where per-frame detail recovery matters more than perfect smoothness, the tradeoff can still be worth it.
Why Frame-by-Frame SUPIR Flickers Without Conditioning
The flicker problem comes from how diffusion sampling works. Each denoising run starts from random Gaussian noise. Even with identical inputs, two runs with different seeds converge to slightly different texture patterns — grain orientation, skin pore detail, fabric weave. At 30 frames per second, your eye integrates these differences into motion that should not exist. Measurements from community tests commonly show inter-frame SSIM dropping 5–15% between consecutive unconditioned SUPIR outputs of the same shot, which is enough to read as obvious shimmer.
A second source of instability is SUPIR's automatic captioning step. The default workflow uses a vision-language model to describe each frame and feeds that description as the positive prompt. Because captions are generated per frame, wording shifts slightly — "a woman standing" becomes "a woman posing" — and prompt drift translates directly into output drift. Locking or averaging the caption across the video removes a large share of the variance before sampling even begins.
Third, restoration strength matters enormously. SUPIR's s_churn, EDM-style sampling parameters, and the restoration strength slider all control how far the model deviates from the input. High values produce dramatic detail but amplify stochastic divergence between frames. For video, most practitioners run restoration strength in the 0.4–0.6 range instead of the 0.7–1.0 typical for photos, accepting softer detail in exchange for coherence.
Core Workflow Setup in ComfyUI
A working SUPIR video pipeline in ComfyUI follows this structure. First, load your video with a VHS (Video Helper Suite) node or Load Video node and extract frames at native resolution. Second, split the job into two stages: a low-cost pre-pass and the SUPIR pass itself. The pre-pass typically runs a fast traditional upscaler or a lightweight ESRGAN variant to bring frames to roughly 1024 pixels on the long side, since SUPIR is trained around SDXL resolutions and performs poorly on very small inputs.
Next comes the SUPIR stage. You need the SUPIR custom nodes package installed via ComfyUI Manager, plus the SUPIR checkpoint files (the v0Q and/or v0F safetensors variants, roughly 2.5 GB each) placed in your models folder, and an SDXL base checkpoint that SUPIR uses internally. The key nodes are SUPIR_model_loader_v2, SUPIR_first_stage (which handles the initial encode and degradation modeling), SUPIR_encoder, SUPIR_conditioner, SUPIR_sampler, and SUPIR_decoder. Between the conditioner and sampler sits where temporal logic lives.
For temporal anchoring, the most common pattern is a batch-consistency loop: process frame N, decode it, then feed the decoded result back as an additional reference image alongside frame N+1, often blended at 20–40% opacity in latent space or passed through an IPAdapter-style image conditioning node. Fixed-seed sampling (same seed for every frame) combined with identical prompts eliminates another large variance source. Finally, decode frames and reassemble with VHS Video Combine at the original frame rate, then optionally interpolate to 60 fps with RIFE for smoother playback.
Key Settings Comparison
The table below summarizes the settings that most affect temporal stability versus quality and speed, based on values commonly reported in community testing during 2024–2026:
| Setting | Stability-Focused | Quality-Focused |
|---|---|---|
| Restoration strength | 0.35–0.50 | 0.65–0.85 |
| Seed strategy | Fixed seed, all frames | Per-frame random seed |
| Prompt handling | Single locked caption for whole clip | Per-frame auto-caption |
| CFG scale | 3.0–4.5 | 4.5–7.5 |
| Sampling steps | 25–35 | 40–50 |
| Reference blending | Previous frame at 30% latent weight | None |
| Resolution target | 2048px long side | 3840px (4K) direct |
| Relative VRAM use | ~10–14 GB | 16–24 GB |
| Typical speed (per frame, RTX 4090) | 4–8 seconds | 10–20 seconds |
Alternative Approaches and How They Compare
SUPIR is not the only route to AI video upscaling, and depending on your footage it may not be the best one. Dedicated video diffusion upscalers trained with true spatiotemporal attention handle motion natively, while classic single-image enhancers avoid diffusion randomness entirely. Here is how the main options stack up:
| Approach | Temporal stability | Detail quality | Speed | Cost |
|---|---|---|---|---|
| SUPIR + temporal conditioning (ComfyUI) | Moderate; residual shimmer common | Excellent micro-detail | Slow (seconds/frame) | Free, local GPU required |
| Real-ESRGAN / ESRGAN variants | Very high (deterministic) | Good but plastic-looking | Very fast | Free |
| Video-native diffusion upscalers | High (trained on motion) | Very good | Moderate | Subscription or heavy local VRAM |
| Commercial desktop apps (e.g., Topaz Video AI class tools) | High | Good, less creative detail | Fast on modern GPUs | One-time license, ~$299 |
| Cloud AI upscaling services | High | Varies by provider | Fast | $10–$50/month tiers |
Common Mistakes That Ruin Output
The most frequent error is running SUPIR at 4K directly. The model operates comfortably near SDXL resolutions (around 1024×1024 equivalent); pushing a 480p frame straight to 2160p in one hop produces artifacts and quadruples compute. Upscale in stages — first pass to roughly 1080p-class resolution, SUPIR pass, then a light conventional upscale to 4K if needed. Second, leaving auto-captioning enabled per frame almost guarantees prompt drift; generate one caption from a representative frame and reuse it verbatim.
Third, mixing seeds mid-clip creates a visible seam at the change point. If you must vary seeds to break up repetitive texture, crossfade over several frames rather than cutting. Fourth, ignoring color-space handling: VHS nodes and SUPIR's decoder can disagree on full-range versus limited-range YUV, producing washed-out or crushed blacks in the assembled video. Verify with a test clip of ten frames before committing to a multi-hour render. Fifth, underestimating VRAM: SUPIR at high tile counts spikes past 16 GB easily, and out-of-memory failures at frame 800 of 1,200 waste an evening. Enable tiled VAE decoding and test on a short segment first.
Finally, do not skip deinterlacing or deflickering pre-passes on old footage. SUPIR will faithfully restore combing artifacts and brightness pulsing, baking them into your 4K master. Run QTGMC or a similar deinterlacer first, and consider a temporal median deflicker before the SUPIR stage.
Hardware Requirements and Practical Timelines
Realistically, you want a GPU with at least 12 GB of VRAM for 720p-source work with tiling, and 16–24 GB for comfortable 1080p-source processing. An RTX 3060 12GB can complete a job but slowly; an RTX 4090 processes a 10-second 24 fps clip (240 frames) at moderate settings in roughly 20–40 minutes including overhead. Add disk headroom: intermediate PNG sequences for a 4K render routinely consume 100–300 GB, so plan storage before starting.
Budget time for iteration. Expect two to four test renders of short segments before settings lock in, then a batch run. A feature-length restoration is a multi-day project on consumer hardware. Cloud GPU rentals (roughly $0.30–$1.00 per hour for consumer-class cards, more for datacenter GPUs) can compress that timeline dramatically if local hardware is the bottleneck, though you will pay egress costs for moving terabytes of frames.
When SUPIR Temporal Conditioning Is Worth It — and When It Is Not
Choose the SUPIR route when your source is genuinely degraded — soft, compressed, low-resolution — and per-shot detail recovery justifies the complexity, and when you have the GPU capacity and patience for slow batch processing. It suits archivists, restoration hobbyists, and creators working with irreplaceable footage where no off-the-shelf tool recovers enough detail.
Skip it when your source is already decent quality and you mainly need clean enlargement to 4K; a deterministic upscaler or a commercial app will finish in minutes with better temporal behavior. Skip it too when turnaround matters — client deadlines rarely survive a per-frame diffusion pipeline with manual tuning. And be skeptical of any claim that SUPIR produces perfectly stable video; as of 2026 it remains an image model wearing a video costume, and the honest expectation is 'much better than naive frame-by-frame,' not 'indistinguishable from native video.'
Recommended Starting Configuration
If you want a concrete baseline to iterate from: extract frames at native rate, pre-upscale to 1280 on the long side, run SUPIR_first_stage with default degradation settings, lock a single caption generated from a mid-clip frame, set restoration strength to 0.5, CFG 4.0, 30 steps, DPM++ 2M SDE Karras or the EDM sampler SUPIR ships with, fixed seed across the clip, tiled VAE decode at 512-pixel tiles with 64-pixel overlap, blend the prior decoded frame into conditioning at 30%, assemble at original frame rate, then apply RIFE interpolation to 48–60 fps and a gentle unified sharpen. Render a 3-second test, check it at full screen, adjust one variable at a time, and scale up only when the test holds up. That disciplined loop — small test, single-variable changes, full-screen review — is what separates usable 4K restorations from expensive-looking flicker reels.