TiledWan Video VACE Pipeline
Run Wan 2.1 VACE on videos it was never meant to fit
- video
- mask
- model
- vae
- text_embeds
- samples
- feta_args
- context_options
- loop_args
- sigmas
- unianimate_poses
- fantasytalking_embeds
- uni3c_embeds
- multitalk_embeds
- freeinit_args
- cache_args
- slg_args
- experimental_args
- vace_ref_images
- processed_video
- processing_info
Wan 2.1 VACE is genuinely great at video inpainting - right up until your footage exceeds 832×480 and 81 frames, at which point it just refuses. TiledWan Video VACE Pipeline is the reason this pack exists: one node that takes a video, a mask, and conditioning, tiles the whole thing, runs the complete native WanVideo VACE pipeline on every tile, and stitches it back so you can process footage of any size and length without losing your mind (or your VRAM).
It's the flagship of Baverne's comfyUI-TiledWan pack, and the README states the premise plainly: "Wan2.1 Vace can perform video inpainting on 832x480 81-frame videos. This custom node set adapts it to process as long and as large videos as one wants with tiling while maintaining consistency." If you've done long-video work, you know that sentence is carrying a lot.
How it works, roughly: the video is split into temporal chunks (81 frames each by default) and each chunk into spatial tiles (832×480 by default), all with overlap. Every tile runs the full pipeline - encode, sample, decode - while already-processed neighboring tiles overwrite the overlapping regions to keep edges consistent, with masks zeroed in overwritten areas. The last frames of each chunk become reference frames for the next chunk, which is the temporal glue that stops each 81-frame window from drifting into its own universe. Stitching is dimension-wise - columns first, then lines, then across time - with fade blending at the overlaps, and the final output is cropped back to your exact input dimensions. Between tiles it offloads the model from VRAM, which is how "arbitrarily large" stops being a lie on consumer cards.
Inputs worth your time:
videoandmask- the footage and what to inpaint, matching in dimensions and frame countmodel(WANVIDEOMODEL) andvae(WANVAE) - feed it the output of ComfyUI's native WanVideo Loader with a Wan 2.1 VACE checkpoint and the matching video VAEtarget_frames/target_width/target_height- the tile geometry. 81 / 832 / 480 are the defaults because that's what the model is trained for; the tooltip is blunt that other frame counts "might generate artefact or frame drops"frame_overlap(10) andspatial_overlap(20) - how much the tiles bleed into each othervace_strength- 1.0 means total reconstruction, 0.0 means no change. This is your "how much am I actually editing" dialsteps,cfg,shift,seed,scheduler- standard Wan sampler settings
Optional inputs include text_embeds, vace_ref_images (reference frames to hold a character consistent across tiles), and denoise_strength, plus a wall of advanced kwargs like context_options, freeinit_args, and cache_args that you should ignore until you know why you need them. Outputs are processed_video (the stitched result) and processing_info, a string with tile counts and timing that's genuinely useful for tuning.
Install: ComfyUI Manager (search "comfyUI-TiledWan"), or cd ComfyUI/custom_nodes && git clone https://github.com/Baverne/comfyUI-TiledWan, then restart. The node declares no extra dependencies, though the source imports scipy - if you hit a ModuleNotFoundError there, pip install scipy. The heavy part isn't the node, it's the Wan 2.1 VACE model and Wan video VAE you load through the native WanVideo Loader.
Now the honest part, because the README is unusually candid. The model "does suffer from poor definition and 'cartoonish' outputs sometimes," and cranking up the spatial tile count can backfire - Wan is meant to be given meaningful frames, and over-tiling makes it lose the plot. You can also get a noticeable color shift even on unmasked areas, and partially overwritten tiles amplify it in later chunks. That's why the author frames the output as "a good workbase for VFX-artists" rather than a finished shot. Budget for compositing; the pack even ships a commented example workflow to get you started.
Inputs (47)
| Name | Type | Default | Description |
|---|---|---|---|
| video | IMAGE | Input video frames to process. Can be very large videos that will be automatically tiled for memory efficiency. | |
| mask | MASK | Mask defining areas to be processed. Should match the video dimensions and frame count. | |
| model | WANVIDEOMODEL | WanVideo model for video generation/processing. | |
| vae | WANVAE | Video VAE for encoding/decoding frames. | |
| target_frames | INT | 8116–200 | Target number of frames per temporal chunk. The model works best with 81 frames. If different, might generate artefact or frame drops |
| target_width | INT | 83264–2048 | Target width for spatial tiles. Works best around 832. |
| target_height | INT | 48064–2048 | Target height for spatial tiles. Works best around 480. |
| frame_overlap | INT | 100–40 | Number of overlapping frames between temporal chunks. |
| spatial_overlap | INT | 200–100 | Pixel overlap between spatial tiles. |
| steps | INT | 30 | Number of diffusion sampling steps. |
| cfg | FLOAT | 6.000–30 | Classifier-free guidance strength. Higher values follow the conditioning more closely. |
| shift | FLOAT | 5.000–1000 | Shift parameter for the sampling schedule. |
| seed | INT | 00–18446744073709550000 | Random seed for reproducible results. Use the same seed to get identical outputs. |
| scheduler | COMBO | unipc | Sampling scheduler algorithm. |
| vace_strength | FLOAT | 1.0000–10 | VACE encoding strength. Controls how much the video is modified during processing. 1.0 mean total reconstruction, 0.0 means no change. |
| vace_start_percent | FLOAT | 0.000–1 | — |
| vace_end_percent | FLOAT | 1.000–1 | — |
| decode_enable_vae_tiling | BOOLEAN | false | — |
| decode_tile_x | INT | 27240–2048 | — |
| decode_tile_y | INT | 27240–2048 | — |
| decode_tile_stride_x | INT | 14432–2040 | — |
| decode_tile_stride_y | INT | 12832–2040 | — |
| debug_mode | BOOLEAN | true | — |
| debug_color_shift | BOOLEAN | false | Enable color shift debugging to visualize tile boundaries. Useful for debugging tiling artifacts. |
| force_offload_between_tiles | BOOLEAN | true | — |
| text_embedsopt | WANVIDEOTEXTEMBEDS | — | |
| samplesopt | LATENT | — | |
| riflex_freq_indexopt | INT | 00–1000 | — |
| denoise_strengthopt | FLOAT | 1.000–1 | — |
| force_offloadopt | BOOLEAN | true | — |
| batched_cfgopt | BOOLEAN | false | — |
| rope_functionopt | COMBO | comfy | 2 options: default, comfy |
| feta_argsopt | FETAARGS | — | |
| context_optionsopt | CONTEXTOPTIONS | — | |
| loop_argsopt | LOOPARGS | — | |
| sigmasopt | SIGMAS | — | |
| unianimate_posesopt | UNIANIMATE_POSES | — | |
| fantasytalking_embedsopt | FANTASYTALKING_EMBEDS | — | |
| uni3c_embedsopt | UNI3C_EMBEDS | — | |
| multitalk_embedsopt | MULTITALK_EMBEDS | — | |
| freeinit_argsopt | FREEINIT_ARGS | — | |
| cache_argsopt | CACHEARGS | — | |
| slg_argsopt | SLGARGS | — | |
| experimental_argsopt | EXPERIMENTALARGS | — | |
| vace_ref_imagesopt | IMAGE | — | |
| vace_tiled_vaeopt | BOOLEAN | false | — |
| decode_normalizationopt | COMBO | default | 2 options: default, minmax |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| processed_video | IMAGE | Processed video with WanVideo VACE pipeline applied through tiled processing. Maintains original dimensions and quality. |
| processing_info | STRING | Detailed information about the processing including tile counts, timing, and processing summary. |