FlashVSR video super-resolution for ComfyUI: ultra-fast restoration, streaming quality, and WanVideo integration
This workflow brings FlashVSR to ComfyUI with three ready-to-run paths: an ultra-fast upscaler for quick turnarounds, a streaming-quality sampler for higher fidelity, and a WanVideo-integrated route that fuses FlashVSR conditioning with a text-to-video backbone. It is designed for editors, colorists, and creators who need real-time video super-resolution and restoration while preserving temporal consistency.
FlashVSR uses one-step diffusion, locality-constrained sparse attention, and a tiny conditional decoder to upscale and clean up low-resolution or AI-generated footage with minimal compute. The graph keeps your audio, provides side-by-side comparison renders, and writes separate deliverables per branch so you can pick the best result for your shot.
Key models in Comfyui FlashVSR workflow
- FlashVSR (Ultra Fast). The lightweight implementation optimized for one-step diffusion and real-time inference; ideal for rapid enhancement and live previews. See the plugin and notes in ComfyUI Ultra Fast implementation here.
- FlashVSR (Streaming/SM weights). Higher-fidelity variant with a tiny conditional decoder for robust temporal detail and restoration; used by the KSampler branch. Core node implementation and weights are documented in the ComfyUI FlashVSR repo here.
- Wan 2.1 text-to-video 1.3B (FlashVSR-tuned). A WanVideo backbone prepared to accept FlashVSR conditioning for one-step restoration inside the Wan sampler; provides decode via the FlashVSR TCDecoder.
- uMT5-XXL text encoder. Supplies text embeddings to the Wan sampler when prompts are used; model reference: google/umt5-xxl.
How to use Comfyui FlashVSR workflow
At a glance: load a source clip, then choose one or more branches to render. All branches inherit the same input and audio and can run independently, producing their own output files and optional comparison videos.
Global Parameters
VHS_LoadVideo(#123) loads your source clip and passes audio to every renderer to preserve sound.VHS_VideoInfo(#129) exposes FPS for consistent exports. Two helper nodes, “Before Resize”GetImageSizeAndCount(#162) and “After Resize”GetImageSizeAndCount(#163), report dimensions and frame count so you always know what each branch is processing.LayerUtility: ImageScaleByAspectRatio V2(#140, #154, #155) normalizes frames for each path using letterbox scaling. Pick your long-side target per branch to control tradeoffs between quality and speed.
FlashVSR Ultra-Fast
- This path prioritizes throughput while retaining the characteristic FlashVSR temporal stability. Frames are resized (
ImageScaleByAspectRatio V2(#154)) and sent to two variants ofFlashVSRNode(#152 set to “full”, #143 set to “tiny”) so you can compare speed and sharpness. - Each variant writes its own video via
VHS_VideoCombine(#144 and #153) with audio passthrough. Use this when you need quick client checks, upscaling dailies, or fast AI footage cleanup.
FlashVSR_SM_KSampler
- The streaming branch aims for higher fidelity using the FlashVSR SM weights. Two
FlashVSR_SM_Modelloaders (#158 with TCDecoder, #150 without) feed twoFlashVSR_SM_KSamplerpasses (#146 and #148) for A/B comparisons on challenging footage. - Frames are resized to a working resolution (
ImageScaleByAspectRatio V2(#155)), then processed in Pass 1 and Pass 2.LayerUtility: PurgeVRAM V2(#145, #147) frees memory between passes for stability on limited GPUs. - Each pass writes a result (
VHS_VideoCombine#157 “Pass_1”, #156 “Pass_2”). Two comparison composers (ImageConcanate#165 and #167) generate side-by-side videos of source vs result (VHS_VideoCombine#166, #168) so you can quickly judge which pass to keep.
KJ Wan Flash VSR
- This route injects FlashVSR conditioning into a WanVideo sampler for one-step restoration guided by optional text prompts.
WanVideoModelLoader(#22) loads the FlashVSR-tuned Wan model, whileLoadWanVideoT5TextEncoder(#11) andWanVideoTextEncode(#104) provide prompt embeddings if you want stylistic guidance. - Your frames are resized (
ImageScaleByAspectRatio V2(#140)), thenWanVideoEmptyEmbeds(#78) sets the correct width, height, and frame count.WanVideoAddFlashVSRInput(#114) fuses the prepared images with the FlashVSR embeds that the sampler expects. WanVideoSampler(#27) performs one-step inference;WanVideoDecode(#121) reconstructs frames with the FlashVSR TCDecoder loader (#119). AColorMatch(#142) stage restores the original look, followed by an optional side-by-side join (ImageConcatMulti#117). Final outputs are written viaVHS_VideoCombine(#135, #30).
Key nodes in Comfyui FlashVSR workflow
FlashVSRNode (#152, full)
- Core ultra-fast upscaler in “full” mode. Adjust
scalefor 2x/4x work, enablecolor_fixto stabilize luminance, and usetiled_vaeortiled_ditwhen working at larger resolutions. Tunesparse_ratio,kv_ratio, andlocal_rangeonly if you see motion softness or temporal drift. Implementation reference: ComfyUI-FlashVSR_Ultra_Fast.
FlashVSRNode (#143, tiny)
- Ultra-fast “tiny” mode for maximum speed. Use it for previews or very long sequences. Same controls as the full node, but expect slightly softer micro-detail. Reference: ComfyUI-FlashVSR_Ultra_Fast.
FlashVSR_SM_KSampler (#146, Pass 1)
- Streaming-quality sampler paired with a TCDecoder-enabled model (#158). Set
scalefirst, then balancecfgandstepsfor detail vs speed. If VRAM is tight at high resolutions, enablefull_tiledand reducesplit_num. Implementation details and weights: ComfyUI_FlashVSR.
FlashVSR_SM_KSampler (#148, Pass 2)
- Second streaming pass with a complementary model setup (#150). Use it to test alternative TCDecoder/embedding combos on the same frames. Keep
kv_ratioandlocal_rangeconsistent across passes when you want a controlled A/B.
WanVideoAddFlashVSRInput (#114)
- Bridges your preprocessed frames into the Wan sampler as FlashVSR conditioning. The
strengthcontrol determines how assertively FlashVSR restoration is applied relative to any prompt influence. Increase strength when the source is very compressed or AI-generated.
WanVideoSampler (#27)
- One-step inference inside the Wan pipeline. If you use prompts, start neutral and avoid strong negative lists; let FlashVSR handle restoration while text slightly nudges tone or scene interpretation. Keep
stepsto one for true FlashVSR behavior in this route.
ColorMatch (#142)
- Harmonizes color back to the source after restoration. Use it to avoid unintended hue or gamma shifts, especially when exporting comparisons.
Optional extras
- Picking a branch
- Use FlashVSR Ultra-Fast for real-time edits, quick dailies, or long runtimes.
- Use FlashVSR SM KSampler when you need extra robustness on noisy, compressed, or flickery footage.
- Use KJ Wan Flash VSR if you want one-step restoration with light prompt guidance inside a Wan sampler.
- VRAM hygiene
- The streaming branch includes explicit VRAM purges for stability. If you chain long shots, keep them enabled.
- Comparisons and delivery
- The workflow writes per-branch outputs plus side-by-side comparisons. Review the “Compare_” files first, then keep the pass that looks best for your scene.
- References
- Ultra Fast implementation: ComfyUI-FlashVSR_Ultra_Fast
- FlashVSR nodes and SM sampler: ComfyUI_FlashVSR
- uMT5-XXL encoder: google/umt5-xxl
Acknowledgements
This workflow implements and builds upon the following works and resources. We gratefully acknowledge smthemex for the ComfyUI FlashVSR node (FlashVSR Source) and lihaoyun6 for the ComfyUI FlashVSR Ultra Fast node (FlashVSR Ultra Fast) for their contributions and maintenance. For authoritative details, please refer to the original documentation and repositories linked below.
Resources
- FlashVSR Source
- GitHub: smthemex/ComfyUI_FlashVSR
- FlashVSR Ultra Fast
Note: Use of the referenced models, datasets, and code is subject to the respective licenses and terms provided by their authors and maintainers.


