SUPIR is one of the most powerful image restoration models available for AI video upscaling, but it was designed as a single-image model, not a video model. That single fact explains almost every flickering problem you will encounter: when SUPIR processes each frame independently, tiny differences in how it reconstructs texture, skin, and fine detail from frame to frame accumulate into visible temporal instability — shimmering edges, pulsing grain, crawling textures, and faces that subtly morph. The good news is that flickering in SUPIR workflows is largely fixable, and the fixes fall into three categories: reducing per-frame randomness, adding temporal conditioning between frames, and smoothing residual inconsistency in post. This guide walks through all of them in practical detail.

Why SUPIR Flickers in the First Place

Also worth reading: Why is there flickering in my video clip but only in certain sections? · What's the difference between temporal consistency and flicker suppression in AI video upscaling? · RTX vs AMD video upscaling benchmarks: which GPU actually wins for AI video upscaling in 2026?

SUPIR (Scaling-UP Image Restoration) uses a diffusion-based pipeline built on SDXL-class backbones with a negative-positive prompt mechanism and a restoration-guided sampling process. Diffusion models start from random noise, and even with a fixed seed, the denoising trajectory differs slightly whenever any input changes — including a single pixel shift caused by motion between frames. Because each output frame is an independent 'hallucination' of what a clean 4K version should look like, two nearly identical source frames can produce noticeably different reconstructions.

The problem compounds at higher upscale factors. When you push 1080p footage to 4K, SUPIR has to invent roughly four times more pixels per frame than it would at a 2x scale, giving the model more freedom to diverge from its own previous decisions. Fine textures like hair, fabric weave, foliage, film grain, and skin pores are the worst offenders because they are statistically ambiguous — many different 4K interpretations are equally plausible, so the model picks a different one each frame. Flat walls and smooth gradients rarely flicker; detailed organic surfaces almost always do to some degree.

There is also a batch-processing dimension. If you run SUPIR through ComfyUI or a similar node-based tool with dynamic batching, VRAM pressure can cause slightly different execution paths (different tiling boundaries, different attention chunking) across frames, which introduces additional inconsistency on top of the inherent stochasticity.

Fix 1: Lock Down Your Seeds and Sampling Settings

The first and cheapest fix is eliminating avoidable randomness. In ComfyUI's SUPIR implementations, make sure your KSampler nodes use a fixed seed rather than a randomized one. A randomized seed guarantees frame-to-frame variation even on static shots. With a fixed seed, identical input patches produce identical outputs, which removes one entire class of flicker.

Next, reduce the denoise strength. SUPIR's s_churn and denoise-related parameters control how far the sampler deviates from the low-resolution input. High denoise values (above roughly 0.5 in many SUPIR configs) give the model license to reinterpret content aggressively, which looks great on a single hero frame but destroys temporal coherence across a sequence. Dropping denoise into the 0.2–0.35 range typically cuts visible flicker by more than half at the cost of somewhat less detail generation. For archival or dialogue-heavy footage where stability matters more than sparkle, this trade is usually worth it.

Also disable or minimize s_churn (set it to 0 if your workflow exposes it). Churn deliberately injects extra noise during sampling to increase diversity — exactly what you do not want in a video context. Similarly, keep the CFG scale moderate (around 4–7); very high CFG amplifies prompt-driven divergence between frames because small input differences get magnified through the guidance term.

Fix 2: Use Temporal Conditioning and Overlap Techniques

Fixed seeds alone cannot fix flicker on moving footage, because the input itself changes every frame. The next layer of defense is making frames aware of each other. Several approaches exist, and they differ in complexity and quality:

FeatureFixed Seed OnlyTemporal Conditioning (e.g., Deforum-style / vid2vid init)Post-Hoc Deflicker
How it worksSame seed reused per framePrevious frame (or warped latent) used as init/conditionOptical-flow-based luminance matching after render
Flicker reductionModerate (~30–50%)Strong (~60–80%)Moderate (~40–60%)
Detail retentionHighMedium-highHigh (doesn't touch generation)
Speed costNone~10–25% slowerFast (minutes per clip)
Best forStatic/slow shotsGeneral footageFinal polish pass
DifficultyTrivialIntermediateEasy
Temporal conditioning works by feeding the previously generated frame — often warped forward using optical flow estimates of camera and object motion — as the initial latent or as a reference image for the current frame. Tools in the ComfyUI ecosystem such as the SUPIR video wrappers, Flowframes-style interpolation pre-passes, and AnimateDiff-assisted pipelines all implement variants of this idea. The practical result is that frame N starts from something close to frame N−1, so the diffusion process only needs to make small corrections instead of re-hallucinating the scene from noise.

A simpler variant worth trying before full optical-flow wiring: process your video at a lower intermediate resolution first (for example, run a fast traditional upscaler like RealESRGAN-anime or a Lanczos resize to bring 1080p to 1440p), then let SUPIR handle only the final 1.33x step to 4K. Smaller upscale factors mean less hallucination freedom, which directly translates to less flicker. Many practitioners report that a two-stage pipeline produces more stable results than a single aggressive 4x SUPIR pass, at roughly similar total compute cost.

Tiling also matters. If your SUPIR setup tiles large frames (common on GPUs with 12–24 GB VRAM), tile seams can shimmer as content moves across tile boundaries. Increase tile size if VRAM allows, add generous tile overlap (64–128 pixels minimum), and enable tiled VAE decode consistently across all frames so the same tiling geometry applies throughout the clip.

Fix 3: Post-Processing Deflicker Passes

Even well-conditioned SUPIR renders usually benefit from a final deflicker pass. Dedicated deflicker tools analyze luminance statistics frame-by-frame and apply corrective gains to suppress brightness pumping. Options include the deflicker filters in FFmpeg (via the deflicker filter), DaVinci Resolve's built-in deflicker OFX, After Effects' Deflicker effect, and open-source tools like Stabilize/deflicker plugins in the ffmpeg-vapoursynth ecosystem (e.g., the deblock-adjacent temporal median approaches or qtgmc-derived luma stabilization).

For texture-level shimmer that luminance correction cannot fix, temporal smoothing is the stronger medicine. Applying a light temporal blur or motion-compensated averaging (for example, SVFI/RIFE-based frame blending at high interpolation factors, then re-timing back down) averages out per-frame texture noise while preserving perceived sharpness. Be careful with strength: over-smoothed footage develops ghosting trails around moving objects, which reads as worse than mild flicker to most viewers. A good starting point is blending no more than 20–30% of neighboring frames.

Grain management deserves special mention. SUPIR tends to generate inconsistent synthetic grain on noisy sources. Two reliable strategies: either denoise the source thoroughly before SUPIR (so the model generates cleaner, more consistent texture), or embrace the grain by adding a uniform, controlled film-grain layer in post (a static or lightly animated grain plate) that masks residual micro-flicker perceptually. Adding 2–4% matched grain in Resolve or via a grain overlay frequently makes remaining instability invisible without touching the underlying render.

Common Mistakes That Make Flicker Worse

The most frequent mistake is chasing flicker with more denoise strength, hoping a 'better' reconstruction will be more stable. It does the opposite: higher denoise increases per-frame creative freedom and therefore increases divergence. If your footage shimmers, the first knob to turn is always downward on denoise, not upward.

Second is mixing settings mid-render. Changing prompts, seeds, samplers, or even ComfyUI model versions partway through a clip guarantees discontinuities. Batch the entire shot under one configuration, and if you must change settings, split at natural cut points rather than within continuous takes.

Third is ignoring the source. Heavily compressed sources (bitrates below roughly 5 Mbps for 1080p H.264) contain compression artifacts that SUPIR interprets differently on every frame, producing crawling block-edge artifacts after upscale. Running a light pre-denoise or artifact-reduction pass (even a simple hqdn3d filter in FFmpeg at conservative settings) stabilizes the input distribution and measurably reduces output flicker.

Fourth is over-cropping or mis-framing the input. If your preprocessing crops or letterboxes inconsistently — off-by-one pixel shifts from odd dimensions not divisible by 8 or 64 — the model sees jittery inputs and produces jittery outputs. Normalize all frames to identical, standard-divisible dimensions (multiples of 64 are safest for SDXL-class models) before they enter the SUPIR queue.

Finally, some users blame SUPIR for flicker that actually originates in their player. Browser players and variable-frame-rate files can introduce playback stutter that looks like flicker. Always review renders in a proper editor timeline or with a constant-frame-rate export (e.g., re-mux to CFR MP4 with -vsync cfr) before concluding the render itself is unstable.

SUPIR Versus Alternatives for Stable 4K Video Upscaling

It is fair to ask whether fighting SUPIR's flicker is worth it compared with alternatives. The honest answer depends on your content and priorities:

FeatureSUPIRTopaz Video AI (Proteus/Iris)RealESRGAN / ESRGAN variantsAnimateDiff + upscale hybrid
Max detail recoveryExcellent (best-in-class hallucination)GoodFair–goodGood
Temporal stability out of boxPoor–moderateExcellentGoodModerate–good
Speed (per 4K frame)Slow (5–20s+)Fast (near real-time on RTX GPUs)Very fastSlow
CostFree (open weights)$299 perpetual / subscription tiersFreeFree
ControlVery high (prompts, params)Low–moderateLowHigh
Best use caseHero shots, restoration projectsBulk conversion, client workQuick passes, animeStylized/animated content
Topaz Video AI remains the pragmatic choice for commercial work where throughput and guaranteed stability matter more than maximum fidelity; its models are trained with temporal consistency objectives that SUPIR lacks. SUPIR earns its place when you need genuine restoration — degraded, low-resolution, or damaged footage where its detail synthesis dramatically outperforms conventional enhancers. A hybrid strategy works well for longer projects: use Topaz or a stable classical pipeline for the bulk of the runtime, and reserve SUPIR for the handful of shots that justify per-frame babysitting and post-deflicker effort.

A Practical Step-by-Step Workflow

Start by preparing the source: convert to constant frame rate, normalize dimensions to multiples of 64, and apply gentle denoising if the bitrate is low. Then configure SUPIR with a fixed seed, denoise around 0.25–0.35, s_churn at 0, and CFG near 5. Render a short test segment — 3 to 5 seconds is enough — rather than committing to a full render. Review the test at 100% zoom on a 4K display, looking specifically at hair, foliage, and textured fabric, since these reveal flicker fastest.

If the test still flickers, add temporal conditioning: wire the previous frame's output (optionally flow-warped) as the init image for the next frame, or drop your intermediate upscale factor so SUPIR handles a smaller step. Re-test. Once stability is acceptable, run the full render, then apply a deflicker pass tuned conservatively, followed by optional light grain to mask residuals. Export at CFR with a high-bitrate intermediate codec (ProRes 422 or All-I H.264 at 100+ Mbps) so you are not introducing new compression artifacts at the finish line. Budget-wise, expect this iterative process to take several hours of GPU time per minute of finished 4K footage on a consumer card like an RTX 4090, versus minutes with Topaz — that time cost is the real price of SUPIR's superior detail ceiling.

When to Act and What Results to Expect

Address flicker before the full render, not after. Every hour spent tuning on a 5-second test saves potentially days of re-rendering a feature-length or even a 10-minute project. As a rule of thumb, if your test segment shows visible shimmer at normal viewing distance on a 4K screen, the full render will too — flicker does not average out over longer durations; it fatigues viewers faster.

Realistic expectations matter. Even a fully optimized SUPIR video pipeline rarely achieves the frame-to-frame perfection of models trained natively on video. A well-tuned setup typically reduces visible flicker by 70–90% relative to naive per-frame processing, leaving minor texture liveliness that most viewers read as 'film-like' rather than defective. If your tolerance for any instability is zero — broadcast deliverables, medical imaging, forensic work — SUPIR is probably the wrong primary tool regardless of tuning. For YouTube restorations, archival family footage, and cinematic enhancement projects where a touch of organic texture is acceptable or even desirable, the fixes described here turn SUPIR from a flickering novelty into a genuinely production-capable 4K restoration engine.