ComfyUI Node

FlashVSR Ultra-Fast

The one-node video upscaler

By lihaoyun6·Created 10 months ago·Updated 9 months ago· 754
FlashVSR Ultra-Fast
  • frames
  • image
modelFlashVSR-v1.1
modetiny
scale2
tiled_vaetrue
tiled_dittrue
unload_ditfalse
seed0

Video upscaling is a different animal from image upscaling, and the difference is why this node exists. You can't just run a good image upscaler on every frame and call it done - nothing forces frame 41 and frame 42 to make the same choices about a repeating pattern, so fine texture starts to shimmer and crawl. FlashVSR is one of the two models that actually solved this well enough for people to use, and this node is the "just plug frames in" version of it.

What it's for, and when to actually reach for it

FlashVSR's whole pitch is in its name: it's fast. The community's other real option for video, SeedVR2, wins on quality when the source is genuinely low-res - 256px pushed up to 1024px, that kind of lift - but it's slow enough that people rent an L40S for it. FlashVSR is the one you reach for when your source is already decent and you just want more resolution without waiting around. If you're rescuing a badly degraded clip, this isn't your tool; if you're taking a clean-ish 480p-720p render up a notch fast, it is.

Under the hood it's a diffusion transformer (DiT) restoration model built on the Wan 2.1 VAE's latent space, streamed frame-by-frame instead of denoised from scratch the way a normal generation is. The original FlashVSR project comes from OpenImagingLab; this specific pack (from lihaoyun6) is the ComfyUI wrapper worth using - there are a couple of others floating around, including one built into Kijai's WanVideoWrapper, and the community consensus in practice is that this one does better, largely because it runs on Sparse_SageAttention instead of requiring you to compile a custom attention kernel by hand.

Inputs and outputs that matter

You feed it frames (an IMAGE batch - your video, loaded and decoded already) and get image back, the upscaled frames, which you hand off to whatever writes your video out. Everything else is a knob:

  • model - FlashVSR or FlashVSR-v1.1 (default v1.1). v1.1 is the newer checkpoint; early side-by-sides against SeedVR2 describe it as having better fidelity, while SeedVR2 tends to look sharper. Different look, not strictly better or worse.
  • mode - tiny (default, fast), tiny-long (built for long clips so you don't blow your VRAM budget over hundreds of frames), or full (noticeably better quality, and noticeably slower - "10x better, takes ages" is roughly the community's read on it).
  • scale - 2 to 4. The pack's own advice is blunt: 4 is always better, drop to 2 only if you're VRAM-constrained.
  • tiled_vae / tiled_dit - both default on. They split the decode and DiT passes into tiles so peak VRAM stays lower, at some speed cost. Leave them on unless you have headroom to spare.
  • unload_dit - frees the DiT model before decoding to shave the VRAM peak further, for more time.
  • seed - the usual.

Installing it

Through ComfyUI Manager, search for "ComfyUI-FlashVSR_Ultra_Fast" and install. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/lihaoyun6/ComfyUI-FlashVSR_Ultra_Fast.git
python -m pip install -r ComfyUI-FlashVSR_Ultra_Fast/requirements.txt

Then grab the model weights - download the entire FlashVSR folder from JunhaoZhuang/FlashVSR on HuggingFace (or the -v1.1 repo if you want that checkpoint) and drop it into ComfyUI/models/FlashVSR. You need all four files: LQ_proj_in.ckpt, TCDecoder.ckpt, diffusion_pytorch_model_streaming_dmd.safetensors, and Wan2.1_VAE.pth. Restart ComfyUI after.

If you're on a Turing-generation card or older, pin your Triton version before you clone - pip install -U triton<3.3.0 (or triton-windows<3.3.0 on Windows) - or the sparse-attention path will fail to build.

Common issues

Faces come out wrong. This is the complaint that shows up most: FlashVSR can lose facial detail or outright mangle faces, especially at default settings on tiny. If a recognizable face matters in the shot, don't trust a single FlashVSR pass on it - give it a separate detail/face pass, the same rule that applies to every generative upscaler.

Out-of-memory on full mode at high scale. People with 16GB cards report OOMs running full at 4x scale. Drop to tiny or tiny-long, keep tiled_vae/tiled_dit on, or step scale down to 2 before you assume your GPU can't do it.

It's not fixing a genuinely low-res source. If your input is closer to 256px than 720p, FlashVSR is the wrong pick - SeedVR2 has the edge on heavy lifts like that, even though it costs you more time.

Older GPU, build errors on install. That's the Triton version pin above - Turing and earlier need triton<3.3.0, and it's easy to skip past that line in the README until the install fails.

CategoryFlashVSR

Inputs (8)

NameTypeDefaultDescription
framesIMAGESequential video frames as IMAGE tensor batch
modelCOMBOFlashVSR-v1.1Model version.
modeCOMBOtinyUsing "tiny-long" mode can significantly reduce VRAM used with long video input.
scaleINT22–4
tiled_vaeBOOLEANtrueDisable tiling: faster decode but higher VRAM usage. Set to True for lower memory consumption at the cost of speed.
tiled_ditBOOLEANtrueSignificantly reduces VRAM usage at the cost of speed.
unload_ditBOOLEANfalseUnload DiT before decoding to reduce VRAM peak at the cost of speed.
seedINT00–1125899906842624

Outputs (1)

NameTypeDescription
imageIMAGE