The title card sat two pixels too high.
The kind of thing you notice at midnight: a lower third I had built against a 1920×1080 canvas, pinned to the bottom edge, floating above it on every export. I spent an hour convinced my compositor was rounding. It was not rounding. The file was 1920×1056.
I had assumed "1080P" meant 1080 lines. On the H3 lanes I render through, it means the tier called 1080P, and the tier returns 1056.
The short version. On the H3 lanes measured on 2026-11-01, 1080P renders at 1920×1056, 768P at 1344×768 and 480P at 864×480, all at 24 fps, and durations quantise to whole frames — a 5-second request returns about 5.167 s.
Why is H3's 1080P only 1056 pixels tall?
Ten renders across three tiers, read out of container metadata rather than a spec sheet: 480P comes back 864×480, 768P comes back 1344×768, and 1080P comes back 1920×1056. All of them at 24 fps.
1056 is 1080 minus 24 — one frame's worth of rows. It is also a multiple of 32, the sort of number that makes a hardware decoder happy and a designer unhappy. The pattern held across landscape, vertical and square requests, which is when I stopped treating it as a bug in my pipeline.
If you need exactly 1920×1080, you upscale and accept that you are inventing 24 rows. If you are building a template, build it in percentages and the problem disappears.
Why is a five-second clip 5.167 seconds long?
The same night, a five-second clip cut against a five-second beat drifted. I assumed my timeline setting. It was the frame grid: durations quantise to whole frames at 24 fps, so a five-second request lands at 124 frames, which is 5.167 seconds.
One second is worse. Ask for one second and you get 39 frames — 1.625 seconds, more than sixty percent longer. For flashes, stutters and impact cuts, "one second" is a fiction.
What I changed: generate slightly long, then cut to the timeline. It sounds like giving up. It is the only way I have found to land on a beat.
What each H3 tier actually returns
- 480P, 864×480, a cent per second, up to fifteen seconds. Where drafts live.
- 768P, 1344×768, vertical and landscape. What I publish most things from.
- 960P, 1728×960, which refuses to run without a reference image. That became its own piece.
- 1080P, 1920×1056, ten seconds maximum — the ceiling I keep forgetting.
- 1440P, 2560×1440, the one that carries the scene presets.
- 2K, 2560×1440, ten cents a second, four-second minimum, the only tier with 21:9.
The ten-second ceiling on 1080P is the practical trap. It is not a warning or a slow render; the request is rejected. A fifteen-second shot has to be planned as two takes from the start.
What I do now
Two things, ten seconds each: open the delivered file and read its dimensions, and put the frame count in the bin instead of the duration. Both would have saved the hour I spent blaming the compositor.
If you are rendering into a template you did not author, ask which height it was built against. The answer will be 1080, and the answer will be wrong.
The full tier table — measured pixels, duration windows and per-second rates — is on the H3 page.
I work on Callirra, which is how I have ten files to read instead of one. If your lane returns a different raster, I would like the metadata — a table built from three providers would beat mine from one.