oxframe vs Remotion
Pick oxframe when an AI agent writes the video, it renders in CI, and you want MIT/Apache with no seats, per-render fees or telemetry. Pick Remotion when your team lives in React, wants HTML and CSS in the frame, or renders on Lambda at scale.
At a glance
| oxframe | Remotion | |
|---|---|---|
| Language | Rust | React (TypeScript or JavaScript) |
| How a frame is drawn | Native renderer, CPU or GPU | A React tree in Chrome Headless Shell |
| License | MIT or Apache-2.0 | Free for individuals, non-profits and companies of up to 3 people; a company license above that |
| Price for a team of 10 | $0 | $25 per seat a month on the Creators plan, or $0.01 per render with a $100 monthly minimum |
| Telemetry | None | On by default for client-side rendering; mandatory for the Automators plan from Remotion 5.0 |
| Install | Rust and ffmpeg | Node.js; Chrome Headless Shell is downloaded on first render |
| Live preview | oxframe dev: timeline, markers, tunables | Remotion Studio |
| An agent sees the frames | oxframe check: a storyboard and a JSON report of 15 rules, plus an MCP server | Agent skills; the agent renders stills to look at |
| Frame shapes | 16:9, 9:16 and 1:1 from one scene | One size per composition |
| Parallel rendering | render --jobs N, the same bytes for any N | Concurrency on one machine, Lambda and Cloud Run |
| HTML, CSS, Lottie | No | Yes |
| Maturity | Pre-1.0, the API still changes | Version 4, years in production |
One scene in both
The scene from the Remotion migration guide: a title that springs in and a counter that runs from 0 to 100 %. Four seconds at 1080p and 30 fps.
Remotion
import {AbsoluteFill, Sequence, interpolate, spring, useCurrentFrame, useVideoConfig} from 'remotion';
// <Composition id="Hello" component={Hello} durationInFrames={120} fps={30} width={1920} height={1080} />
export const Hello: React.FC = () => {
const frame = useCurrentFrame();
const {fps} = useVideoConfig();
const rise = spring({frame, fps});
const opacity = interpolate(frame, [0, 20], [0, 1], {extrapolateRight: 'clamp'});
const percent = interpolate(frame, [30, 90], [0, 100], {
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
});
return (
<AbsoluteFill style={{backgroundColor: '#141414', color: 'white', justifyContent: 'center', alignItems: 'center'}}>
<h1 style={{fontSize: 96, opacity, transform: `translateY(${(1 - rise) * 60}px)`}}>Release 2.0</h1>
<Sequence from={30} layout="none">
<p style={{fontSize: 40}}>{Math.round(percent)}% faster builds</p>
</Sequence>
</AbsoluteFill>
);
};oxframe
use oxframe::prelude::*;
#[oxframe::scene]
pub async fn hello(view: View) {
let title = view.add(Txt::new().text("Release 2.0").h1().opacity(0.0).y(-20.0));
// Runs alongside the rest of the scene, like an element that is already mounted.
spawn(async move {
all((
title.opacity().to(1.0, 0.66),
title.y().to(-80.0, 0.8).ease(presets::OUT_BACK),
))
.await;
});
wait_for(1.0).await; // <Sequence from={30}> at 30 fps
let percent = Signal::new(0.0);
let line = view.add(Txt::new().body().y(40.0));
line.text().bind({
let percent = percent.clone();
move || format!("{:.0}% faster builds", percent.get())
});
percent.to(100.0, 2.0).await;
wait_for(1.0).await;
}
pub fn project() -> Project {
Project::new("hello").size(1920, 1080).fps(30).scene(hello())
}Render time
| Tool | Command | Time |
|---|---|---|
| Remotion 4.0.537 | npx remotion render Hello | 3.21 s |
| oxframe 0.20.4 | render --cpu | 0.53 s |
| oxframe 0.20.4 | render (GPU) | 1.46 s |
Each time is the whole render command, start to file. oxframe's scene is already compiled;
after a one-line edit, cargo build adds about 0.6 s. On a scene this short the
GPU spends more time starting than drawing, so the CPU renderer wins. The script is bench/vs/measure.sh: run it to time both on your machine.
The license, as of Remotion 4 and 5
Remotion is source-available, not open source. Its pricing page says it is free for individuals and companies of up to three people; the license FAQ adds non-profits and evaluation. Above three people, counting all personnel whether or not they write Remotion code, a company license is required.
The company license has two shapes: Remotion for Creators at $25 per seat a month, where a seat is a person writing Remotion code or driving an agent that does, and Remotion for Automators at $0.01 per render with a $100 monthly minimum. Enterprise starts at $500 a month.
The terms for Remotion 5.0 take effect when 5.0 is released. Under them, Automators customers render with a license key that sends an event for each render (IP address, domain, production or development, video or still). If that telemetry is blocked, they must send Remotion a monthly verifiable report of their renders. Client-side rendering already has telemetry that cannot be turned off; server-side telemetry stays voluntary for free users and Creators.
oxframe is MIT or Apache-2.0, at your choice. There are no seats, no render counts and no telemetry in the CLI or the SDK; what leaves your machine is listed on its own page.
What the difference means for an agent
Both tools let a coding agent write a video, and in both the agent works blind until it sees a frame. With Remotion the agent renders stills and reads them. With oxframe, oxframe check renders a storyboard of the whole video on the CPU and writes a JSON report: text running out of its box, low contrast, a caption outside the safe area, a move too fast to read. Each problem points at the node and the time, with a link to the rule and its fix. An agent reads the report, fixes the line, runs check again.
The render is the other half. Remotion drives a browser for each frame; oxframe draws the frame itself, so the same scene renders without Chrome, in seconds, on a free CI runner. That is what release-video-action does for every oxframe release.
When to pick Remotion
- Your team already writes React and wants components, CSS and HTML in the frame.
- You need Lottie, web fonts from CSS, or anything a browser can draw.
- You render at scale on Lambda or Cloud Run and want a mature toolkit for it.
- You fit the free license: an individual, a non-profit or a company of up to three people.
When to pick oxframe
- An AI agent writes the scenes and should check its own frames before you look.
- Renders run in CI or on a laptop without a browser, a seat count or a render meter.
- One scene should give 16:9, 9:16 and 1:1 without three compositions.
- You want byte-identical renders: the same code gives the same file.
Moving from Remotion
The Remotion migration guide maps useCurrentFrame, interpolate, spring and Sequence to oxframe and ports the scene above line by line. The remotion-to-oxframe skill does the same for an agent.
FAQ
Is oxframe free for companies?
Yes. oxframe is MIT or Apache-2.0: any company of any size can use it, ship it and render with it, with no seats, no per-render fee and no account.
Do I need Remotion for Automators to render in CI?
With Remotion, a company above three people needs a company license, and Automators is the per-render option ($0.01 a render, $100 a month minimum). With oxframe, a CI render costs only the runner time.
Does oxframe use a browser to render?
No. oxframe draws frames with its own renderer on the CPU or the GPU and pipes them to ffmpeg. The browser playground compiles the same scene to WebAssembly, but rendering a video needs no browser.
Can I use React components in oxframe?
No. oxframe scenes are Rust. Components such as TitleCard, BulletList, CodeExplainer and LowerThird cover the common parts of explainer and release videos, and you can write your own nodes.
Is oxframe faster than Remotion?
On the scene above, on one laptop, yes; the times and the script are on this page. Remotion bundles the project and starts Chrome on every render, which a short video feels most. Run bench/vs/measure.sh to time it on your machine.
Can an agent move a Remotion project to oxframe?
Yes, scene by scene. The remotion-to-oxframe skill and the migration guide map the Remotion API to oxframe; things a browser draws, such as arbitrary HTML and CSS or Lottie, do not carry over.
Sources
Checked on October 22, 2026. Found something out of date? Open an issue on oxframe-web.
- Remotion pricing
- Remotion license FAQ
- Remotion terms (v5.0)
- Remotion on GitHub
- oxframe license and what leaves your machine
- oxframe-sdk on GitHub