Video Tile Slicer (var. size)
Slice a video without blowing up your VRAM — where every tiled upscale starts
- images
- tiles
- tile_config
- visualization
- tile_count
- layout_label
If you've tried to upscale an LTX-2.3 or MiniMax H3 clip at full resolution, you already know the problem this node exists to solve: the thing OOMs. Tiled upscaling - cut the frames into overlapping chunks, run your expensive upscale branch per chunk, stitch it back together - is how you get 4K out of a card that can't hold 4K in one tensor. It's also a genuinely live topic in the community, with steady discussion since early 2025, because it's the difference between "my 12GB card can do this" and "this workflow is not for my hardware."
Video Tile Slicer (var. size) is the entry point of the comfyui-video-tiler pack. It splits your [B,H,W,C] image batch into a tiles_x × tiles_y grid, and - this is the clever bit - the tiles are tensor views, not copies. No memory blowup just from slicing; the tiles share the source buffer until something actually processes them. The pack also runs downstream nodes in ComfyUI's list context, one tile at a time, so your upscale branch never sees the whole clip at once. No custom loop nodes hiding in here.
The inputs that actually matter
tiles_x/tiles_y- horizontal and vertical grid cells, 1–5 each. Start with 2×2 and only go finer if you're still OOMing; more tiles means more seam area to blend later.overlap_extension_x/overlap_extension_y- how many pixels each tile reaches into its neighbor. This is what gives the merge node something to feather. Set these to 0 and you'll get hard seams you can't fix downstream.multiple- snap size, like 32. Keeps every tile aligned to the grid your upscale model expects. If your model needs sizes divisible by 8, this is your safety net.
Everything else is handled at merge time, which is the pack's neat trick: tile_config is geometry-only. You can tweak feathering in Video Tile Merge all day without ever re-slicing.
What comes out
The outputs you'll actually wire: tiles (the list of crops, feed it to your upscale branch, then into the merge node), tile_config (the opaque geometry tuple - keep it paired with the slicer, Merge/GetTile/Reference Tile Slice all need it), and visualization, which shows you a bordered layout plus a traversal gradient. Check the visualization before you burn GPU-hours on the real branch. tile_count and layout_label are handy when you're tuning - the label includes rough memory hints.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/maDcaDDie2000/comfyui-video-tiler
Restart ComfyUI. You'll find it under Video Tiler. The pack needs no extra Python dependencies - just PyTorch and NumPy, which ComfyUI already ships - and no model downloads. One honest caveat from the README: this pack was vibe-coded for personal use and isn't actively maintained. It's Apache 2.0 and the code is clean enough, but don't expect rapid fixes. It's built and tested against LTX-2.3 and MiniMax H3 tiled upscale workflows; other stacks may work, just don't file it under "guaranteed."
Where people get burned
The classic one: set overlap_extension to 0 "to keep tiles small" and then wonder why the merged video has a grid of seams. The seam tiles aren't waste - they're the blend material. Also, remember tiling reduces per-step VRAM but doesn't make long clips free; for genuinely long footage the disk-backed nodes in this same pack (Video Tile Disk Job and friends) are the low-VRAM path where you save one tile per run instead of holding the whole processed list in memory.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Video or image batch [B,H,W,C]. Same frame size for all batches. | |
| tiles_x | INT | 21–5 | Horizontal grid cells (1–5). Defines how many columns of normal tiles. |
| tiles_y | INT | 21–5 | Vertical grid cells (1–5). Defines how many rows of normal tiles. |
| multiple | INT | 321–64 | Snap tile sizes and overlap geometry to this pixel multiple (e.g. 8, 16, 32). |
| overlap_extension_x | INT | 1280–4096 | Horizontal overlap seam thickness (pixels), snapped to multiple. Seam tiles blend in Merge. |
| overlap_extension_y | INT | 1280–4096 | Vertical overlap seam thickness (pixels), snapped to multiple. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| tiles | IMAGE | List of tile crops (OUTPUT_IS_LIST). Wire to processing, then Video Tile Merge tiles input. |
| tile_config | TILE_CONFIG | Opaque layout tuple for Merge / Get Tile / Reference Tile Slice. Geometry only; changing Merge feather does not require re-slicing. |
| visualization | IMAGE | Two preview images: bordered layout + traversal gradient (not for final encode). |
| tile_count | INT | Number of tiles in the list. |
| layout_label | STRING | Human-readable layout summary and rough memory hints. |