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

Checked against the sources below on October 22, 2026.
oxframeRemotion
LanguageRustReact (TypeScript or JavaScript)
How a frame is drawnNative renderer, CPU or GPUA React tree in Chrome Headless Shell
LicenseMIT or Apache-2.0Free 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
TelemetryNoneOn by default for client-side rendering; mandatory for the Automators plan from Remotion 5.0
InstallRust and ffmpegNode.js; Chrome Headless Shell is downloaded on first render
Live previewoxframe dev: timeline, markers, tunablesRemotion Studio
An agent sees the framesoxframe check: a storyboard and a JSON report of 15 rules, plus an MCP serverAgent skills; the agent renders stills to look at
Frame shapes16:9, 9:16 and 1:1 from one sceneOne size per composition
Parallel renderingrender --jobs N, the same bytes for any NConcurrency on one machine, Lambda and Cloud Run
HTML, CSS, LottieNoYes
MaturityPre-1.0, the API still changesVersion 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

4 s of 1920 × 1080 video, median of three runs after a warm-up, 2026-10-22, Intel(R) Core(TM) Ultra 7 255H, 16 threads, Linux.
ToolCommandTime
Remotion 4.0.537npx remotion render Hello3.21 s
oxframe 0.20.4render --cpu0.53 s
oxframe 0.20.4render (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.

Other comparisons

Get started with oxframe