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:
| Feature | Fixed Seed Only | Temporal Conditioning (e.g., Deforum-style / vid2vid init) | Post-Hoc Deflicker |
|---|---|---|---|
| How it works | Same seed reused per frame | Previous frame (or warped latent) used as init/condition | Optical-flow-based luminance matching after render |
| Flicker reduction | Moderate (~30–50%) | Strong (~60–80%) | Moderate (~40–60%) |
| Detail retention | High | Medium-high | High (doesn't touch generation) |
| Speed cost | None | ~10–25% slower | Fast (minutes per clip) |
| Best for | Static/slow shots | General footage | Final polish pass |
| Difficulty | Trivial | Intermediate | Easy |
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:
| Feature | SUPIR | Topaz Video AI (Proteus/Iris) | RealESRGAN / ESRGAN variants | AnimateDiff + upscale hybrid |
|---|---|---|---|---|
| Max detail recovery | Excellent (best-in-class hallucination) | Good | Fair–good | Good |
| Temporal stability out of box | Poor–moderate | Excellent | Good | Moderate–good |
| Speed (per 4K frame) | Slow (5–20s+) | Fast (near real-time on RTX GPUs) | Very fast | Slow |
| Cost | Free (open weights) | $299 perpetual / subscription tiers | Free | Free |
| Control | Very high (prompts, params) | Low–moderate | Low | High |
| Best use case | Hero shots, restoration projects | Bulk conversion, client work | Quick passes, anime | Stylized/animated content |
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.