Output
Recompose each aspect ratio, render variants and languages from one project, pick export settings and decide when cloud rendering is worth it.
Make one master, usually 16:9, and rebuild each other format as its own layout from the same scenes and assets. Never crop a 16:9 film to 9:16. Use variables and batch renders for languages and versions, export with --quality delivery, and render on your own computer unless the job is long, 4K or a large batch.
One master, then recompose each format
Cropping cuts off text and UI. Recompose instead: the same timeline and assets, with type and UI re laid out for each frame shape. One creator's single run produced 16:9, 9:16, a 15 second teaser and a web version (SYGNITO).
In HyperFrames, size is fixed when the composition is built. Width, height, the root duration, frame rate and output format cannot be changed by render variables, so each aspect ratio is its own composition, sharing assets and scene files. Start each one with the matching preset:
npx hyperframes init launch-916 --resolution portrait
npx hyperframes init launch-11 --resolution squareIn Remotion, register one <Composition> per size and pass layout props.
Text size by destination
| Viewing | Body text | Headlines | Data labels |
|---|---|---|---|
| Full screen (YouTube, website) | At least 20 px | 60 px or more | At least 18 px |
| In a feed (X, LinkedIn, Instagram, TikTok) | At least 32 px | At least 90 px | At least 24 px |
Sizes are for a 1080 pixel frame. In 9:16, keep captions above the bottom 15%. Check the vertical cut on a phone width contact sheet before you call it done.
Check the format against the content before you build. "Vertical at 90 seconds with a chart-dense concept means charts a phone can't read." Cut the charts or shorten the film.
Variants and languages
Variables and batch renders
HyperFrames variables let one project render many versions. The agent declares slots on the root composition (types: string, number, color, boolean, enum, font, image), and you pass values at render time.
# one variant
npx hyperframes render --variables '{"ink":"#c8ff3d"}' --strict-variables --output reskin.mp4
# a batch, one row per version
npx hyperframes render --batch rows.json --output "renders/{name}.mp4" --strict-variablesThe batch writes a manifest.json with each row's status. Ask for a reusable template before the values are baked in. If two outputs come out identical, the variable never reached the property.
In Remotion, pass --props per render, or use Remotion Lambda for many renders. A company on the Automators license pays per render (0.01 USD, 100 USD per month minimum; prices checked on 15 Oct 2026).
Languages
The HyperFrames docs do not cover localization directly, but batch text variables are the mechanism. A 64 second HyperFrames launch film shipped "five languages from one source, each rendered in under a minute" (mrcsvlk).
- Translate every on screen line in the batch file, in quotes, exactly as it should appear.
- Re time each language when narration length changes. The voice is the clock, so a longer Vietnamese voiceover needs longer scenes.
- Run
npx hyperframes checkper language. Translated lines are often longer and overflow their boxes. - Check the font covers every character in every language. One known failure: a Hindi heading rendered at the wrong weight because the fallback font had no bold.
Fonts for Vietnamese and other non Latin scripts are covered in Fonts. For text and fonts in generated video, see Text and fonts.
A/B versions
npx hyperframes compare <a> <b> --at 4.5 --labels A,B puts candidates side by side at the same timestamp, up to 16 per sheet. For a website hero, Inbox Zero's founder advises against A/B testing the video itself: only about 10% of visitors click play, so sign up tests have too little data. Compare versions on watch through instead (elie2222).
Export settings
| Need | HyperFrames | Notes |
|---|---|---|
| Review copy | render --quality draft --output review.mp4 | Lower quality, same timing |
| First real encode | render --quality looks | The default, CRF 16 |
| Delivery master | render --quality delivery | H.264, yuv420p, fast start for the web |
| 60 fps | --fps 60 | Doubles render time; for fast UI motion only |
| 4K | --resolution landscape-4k | About 4 times slower per frame; does not sharpen 1080p video or small images |
| Transparent overlay for an editor | --format mov | ProRes 4444 with alpha; leave the page background unset |
| Transparent overlay for a browser | --format webm | VP9 with alpha; slow to encode |
| After Effects or Nuke | --format png-sequence | Largest output |
| README or pull request | --format gif --fps 15 | No audio |
| HDR | --hdr | HDR10 MP4; not on Lambda, not with 4K in one pass |
| Same result on every machine | --docker | Byte identical across hosts |
An MP4 cannot hold transparency; one test flattened the alpha to white. Skip 4K at 60 fps for social video, since platforms transcode anyway.
Platform targets
- YouTube (official): MP4, H.264, AAC audio at 48 kHz, about 8 Mbps at 1080p.
- TikTok, Reels, Shorts (third party consensus, no official spec found): 1080x1920, 30 fps, H.264 with AAC, about 10 to 15 Mbps.
- Loudness: -14 LUFS integrated, -1 dBTP true peak.
The full platform list, captions and AI labels are on Finishing.
Cloud rendering
Render locally by default. Use the cloud only for long, 4K or batch jobs.
| Option | How | Cost and limits |
|---|---|---|
| HeyGen hosted | npx hyperframes cloud render | HeyGen credits, 4K billed at 1.5x, 200 MB upload limit; check first with --dry-run |
| Your AWS account | npx hyperframes lambda deploy, then lambda render | Paid per invocation to AWS; SDR only |
| Google Cloud Run | Supported by the HyperFrames CLI | Your Google Cloud bill |
| Vercel Sandbox | HyperFrames on Vercel template | An 11 second sample took about 2 minutes cold on 4 vCPU |
| Remotion Lambda | npx remotion lambda | Videos under about 80 minutes at Full HD, 1,000 concurrent functions per region by default, "a few pennies" for several minutes (Remotion's estimate), plus a company license where needed |
Prices checked on 15 Oct 2026. Cloud machines often have no GPU, so WebGL, three.js and heavy blur render slowly there.
Deliverables checklist
master_16x9.mp4and each recomposed format.- Captions burned in for muted autoplay, plus
captions.srtor.vtt. - A poster frame baked in as frame 0, so the platform thumbnail shows it. Replace frame 0; do not add an extra frame.
- The contact sheet from the final review.
- The source project, so the next version is a one line change.
- A README with duration, BPM, music license, which shots are AI generated, and the final check results.
Sources
- HyperFrames: Variables and templating, Rendering and output, Cloud deploy, the CLI and creative skills installed with the plugin
- Remotion: Lambda, Render CLI, License
- YouTube upload encoding settings
- Vercel HyperFrames template, roo.beehiiv.com
- Posts on X linked inline