DY Wan Upscaler (fal)
A Wan-based creative video upscaler
- video
- video_url
There are two kinds of video upscaling, and it's worth knowing which one you're buying. One kind just adds pixels - clean, faithful, no invention. The other runs a generative model over your footage to add detail that was never there, at the cost of nudging the content around. This node is firmly the second kind: it runs a Wan-based diffusion pass over your video, using a quality-boosting prompt to sharpen textures and enrich detail. Think of it as a refiner more than a resizer.
The tell is in the defaults. The strength sits at 0.02 - an extremely light denoise - which is deliberate: it lets Wan touch up detail and micro-texture without rewriting your video's actual content. Push it higher and you're re-generating, not enhancing. If what you want is clean restoration that leaves faces alone, the pack's Seedvr Upscale Video node is the more conservative choice; reach for this one when you want that glossy, detailed, "cinematic" Wan look laid over existing footage.
What it actually does
Your video (or a video URL) goes to fal.ai, fal runs the Wan-based upscaler, and you get an enhanced clip back - no VRAM, no downloads, billed per generation. Because it accepts a video_url directly, you can chain it straight off another fal node's URL output without downloading the intermediate file at all.
The inputs that matter
- video or video_url: your source - wire a
VIDEO, or paste/route a URL (e.g. from a fal video generator). - prompt (default a "cinematic, photorealistic, 8k" quality string): steers the enhancement. The default is a fine starting point; tweak it toward your footage's style.
- strength (default 0.02): the master dial. Low preserves content and lightly enhances; higher invents more and drifts further from the original. Move it in small increments.
- num_inference_steps (default 10) and guidance_scale (default 3.5): quality/cost knobs; the defaults are tuned for this light-touch job.
- image_size / custom_width / custom_height: the target output dimensions.
The output is a single STRING, the URL of the upscaled video. Route it into Fal Save Media from URL to download, or Load Video from URL to pull frames in.
Installing it
ComfyUI Manager → search ComfyUI-fal-API → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/gokayfem/ComfyUI-fal-API.git
cd ComfyUI-fal-API
pip install -r requirements.txt
Restart ComfyUI. No model in models/; you need fal-client and a fal API key in config.ini under [API], or the FAL_KEY env var.
Where people get burned
The strength dial is where this goes wrong. It looks tiny at 0.02 and people crank it to "get more" - and then faces morph, identity slips, and the "upscale" quietly rewrites the shot. If you want more detail, nudge strength up by hundredths and check each step, or add specifics to the prompt instead. Treat it as a refiner and it behaves; treat it as a magic resolution button and it'll surprise you.
Also match your output dimensions to the source aspect ratio - a mismatch stretches the video. Standard API notes apply: no FAL_KEY, no output; errors surface as fal's real message; identical calls are served free from the cache.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| videoopt | VIDEO | — | |
| video_urlopt | STRING | — | |
| promptopt | STRING | cinematic composition, realistic high-quality photo, RAW photo, masterpiece, photorealistic, 8k | — |
| negative_promptopt | STRING | oversaturated, overexposed, static, blurry details | — |
| strengthopt | FLOAT | 0.020–1 | — |
| guidance_scaleopt | FLOAT | 3.51–20 | — |
| num_inference_stepsopt | INT | 101–50 | — |
| seedopt | INT | -10–2147483647 | — |
| fpsopt | INT | 241–120 | — |
| image_sizeopt | COMBO | custom | 7 options: custom, landscape_16_9, landscape_4_3, portrait_16_9, portrait_4_3, square, +1 |
| custom_widthopt | INT | 19200–8192 | — |
| custom_heightopt | INT | 10800–8192 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |