⭐ Star LTX Video Settings
The LTX dimensions calculator that also remembers the half-res trick
- image
- width
- width_float
- height
- height_float
- width_50%
- width_50%_float
- height_50%
- height_50%_float
- frames
- frames_float
- fps
- fps_float
- seconds
- seconds_float
LTX-Video has a math problem nobody wants to do by hand. It wants its own native resolutions - 1280×720-ish for HD, with ratios like 21:9 and 9:16 that don't divide neatly - and it renders internally at half the resolution you request before upscaling. If you hardcode a 1920×1080 latent into an LTX workflow you're asking for trouble. Star LTX Video Settings is the calculator that does that math for you and emits every number downstream needs: full size, the half-size values the model actually works with, frame count, and framerate - as both INT and FLOAT so whichever node you're wiring into gets its type.
How it works
You pick a video_size (HD / FHD / Custom), a ratio from 11 options (1:1 up through 21:9, plus the portrait ones like 9:16 and 9:21), and it computes the pixel dimensions from fixed per-size ratio tables in the source. If your source image already has the ratio you want, best_size_from_input (with an optional image input) reads it straight from the pixels instead of the dropdown. fps and seconds then give you the frame math. The outputs are the whole story:
width/height(INT) andwidth_float/height_float(FLOAT) - the full-res canvas size, both numeric types so you can feed an Empty Latent that wants INT or a conditioning node that wants FLOAT.width_50%/height_50%and their float twins - half the requested size. This is the LTX-specific bit: the model renders internally at half resolution and upscales, so these are the values to feed the actual latent when you want the model to do its native thing. The KB notes this is exactly why matching Wan's quality on LTX takes requesting 1080p.frames/frames_float,fps/fps_float,seconds/seconds_float- the timing set.
That's fourteen outputs, which sounds like a lot, but they're organized by job: grab the half-size pair for the latent, the full-size pair for the output expectation, frames+fps for the video combine node.
Where it fits
Wire it at the top of an LTX workflow: the 50% width/height into your Empty Latent (or straight into the pack's LTXV All-in-One), fps and frames into whatever encodes the final video. One calculator node, no arithmetic in your head, and the "why is my output smaller than I asked" confusion disappears.
Installing
Part of the StarNodes pack - install Starnodes via ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt
Restart, then search star on the canvas. No models.
Common issues
The trap is using the full-size values where the model wants its internal half-size - if your LTX output comes out soft or the sampler complains about shape, you've wired the wrong pair. Also, best_size_from_input only helps if the input image is near the family's native aspect; a heavily-cropped source will just give you whatever ratio it has. And remember the custom width/height step is 32 - LTX is picky about divisibility, and the step exists so you can't break it by typing.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| video_size | COMBO | FHD | 3 options: HD, FHD, Custom |
| ratio | COMBO | 16:9 | 11 options: 1:1, 4:3, 3:2, 16:10, 16:9, 21:9, +5 |
| custom_width | INT | 192032–8192 | — |
| custom_height | INT | 108032–8192 | — |
| best_size_from_input | BOOLEAN | false | — |
| fps | INT | 241–120 | — |
| seconds | INT | 151–60 | — |
| imageopt | IMAGE | — |
Outputs (14)
| Name | Type | Description |
|---|---|---|
| width | INT | — |
| width_float | FLOAT | — |
| height | INT | — |
| height_float | FLOAT | — |
| width_50% | INT | — |
| width_50%_float | FLOAT | — |
| height_50% | INT | — |
| height_50%_float | FLOAT | — |
| frames | INT | — |
| frames_float | FLOAT | — |
| fps | INT | — |
| fps_float | FLOAT | — |
| seconds | INT | — |
| seconds_float | FLOAT | — |