WAN2.1 Resolution
WAN2.1 wants even numbers and 480p/720p — this node hands them to you
- width
- height
- aspect_ratio
- halved_width
- halved_height
Local video generation is a different beast from images, and one of the first things that bites is resolution. Wan 2.1 - Alibaba's Apache 2.0 video model that effectively became the local default - was trained for 480p and 720p output, in specific shapes. Feed it a random 1024×832 and you're either blowing your VRAM budget or getting video that doesn't encode cleanly.
The WAN2.1 Resolution node from the Image Size Tools pack (TheLustriVA/ComfyUI-Image-Size-Tools) gives you four sane presets - the 16:9 and 9:16 versions of 480p and 720p - plus halved versions of each for when your GPU is on the edge.
How it works
Like every node in this pack, it's a hardcoded lookup table in a single Python file. Pick "1280×720 (16:9) - 720p HD" and it returns the numbers. The two things that make it Wan-specific are hidden in the preset values:
- Even dimensions. All four presets are even on both sides, which matters for video encoding - odd frame sizes get fussy in ffmpeg and friends.
- The 480p shape is 832×480, not 854×480. That's the shape Wan actually trained on, and it's also kinder to your VRAM than the broadcast standard.
The halved outputs are the VRAM escape hatch. Wan 2.1's 14B model needs real memory; a 1.3B variant exists partly to get people onto weaker cards, but for everyone else the trick is generating at half resolution when you're testing or tight on VRAM.
The one thing to know: the toggle is decorative
Here's the grounded-in-source detail nobody's README mentions: the halve_resolution input is accepted but never actually read. Read the node's get_resolution code and you'll see it computes halved_width and halved_height unconditionally - the boolean just sits there. As of v0.3.4, whether the checkbox is on or off, you get the same five outputs. The halved values are always there for you to grab; the toggle just doesn't gate them.
That's not a bug that breaks anything - you can happily ignore the checkbox and wire halved_width/halved_height into your latent whenever you want lower memory use. Just don't expect it to switch anything off.
Inputs and outputs
resolution- enum: 480p/720p in landscape and portrait. That's all.halve_resolution- boolean, does nothing yet (see above).
Outputs: width, height, aspect_ratio (STRING), and the two halved INTs. Wire width/height into your video latent (Empty Latent Video or your Wan wrapper's latent node), or the halved pair when VRAM is tight. The aspect_ratio string is there for ratio-aware parts of your workflow.
Installing
ComfyUI Manager → Install Custom Nodes → search "Image Size Tools", or:
cd ComfyUI/custom_nodes
git clone https://github.com/TheLustriVA/ComfyUI-Image-Size-Tools.git
Restart ComfyUI. No dependencies, no downloads - the whole pack is pure Python stdlib, which is the point.
The honest take
For Wan 2.1 specifically, this is a genuinely useful little node, because 480p/720p shapes are easy to get wrong and expensive to get wrong on purpose - a wasted 14B render is minutes of GPU time. It won't fix your VRAM problems by itself (for that you want SageAttention, TeaCache, or a 1.3B model), but it stops the resolution from being the thing that kills your run. The dead toggle is a bit of a letdown, but the halved outputs being always-available means you lose nothing in practice.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| resolution | COMBO | 4 options: 832×480 (16:9) - 480p Standard, 1280×720 (16:9) - 720p HD, 480×832 (9:16) - 480p Vertical, 720×1280 (9:16) - 720p Vertical | |
| halve_resolution | BOOLEAN | false | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| width | INT | — |
| height | INT | — |
| aspect_ratio | STRING | — |
| halved_width | INT | — |
| halved_height | INT | — |