clipkit bench

Measured, not asserted.

Four engines, the same videos, one machine. Clipkit's native runtime renders the median benchmark video in 3.4 seconds — against 33.7s for Remotion and 107.2s for HyperFrames. Our browser runtime, the open one, still beats both. Every implementation was validated, token-counted, and render-verified. Our ground rule: bias lives in choosing the battlegrounds, never in the measurement — numbers we don't like get published anyway.

8.2x
faster than Remotion
native runtime · median paired per-cell ratio; medians 3.4s vs 33.7s
29.5x
faster than HyperFrames
native runtime · median paired per-cell ratio; medians 3.4s vs 107.2s
100%
agent-authored videos valid
the only tool with zero failures: Remotion 87%, HyperFrames 67%
40–53%
fewer tokens for the same video
median 1.63x vs Remotion, 2.15x vs HyperFrames — zero losing cells
render speed — four engines, one machine

How long the same video takes to render.

Same briefs, same laptop, back to back. Clipkit ships two runtimes of one engine: the browser runtime, which is open source and runs anywhere WebGPU runs, and the native runtime — the same engine and the same shaders compiled to drive a GPU directly, with no browser in the loop. That is what runs on our render cloud. Both are measured here against both alternatives.

enginemedian render per videoClipkit native isClipkit browser is
Clipkit — native runtime
Rust + wgpu, no browser · n=13
3.4s
Clipkit — browser runtime
WebGPU + WebCodecs, open source · n=15
13.4s
4.4x faster
Remotion
React + headless Chrome · n=13
33.7s
8.2x faster2.5x faster
HyperFrames
HTML + headless Chrome · n=10
107.2s
29.5x faster8.1x faster

Intel i9-9980HK / AMD Radeon Pro 5500M / macOS, wall clock per render, medians. Cells are the 60-cell agent benchmark below: each engine renders the artifact its own agent authored, gated by its own validator, on its own real pipeline — no engine is asked to run another's output. The speed-up columns are median paired per-cell ratios over cells where both engines produced a video, so they are not the medians divided. n differs by column because engines fail on different cells, and a failed render has no time to compare; the failures are counted in the validity table below. Native crashed on 2 of 15 cells on this GPU — see what we don't claim.

agent bench — real agents, neutral briefs

What happens when agents actually author.

60 cells: 5 briefs (kinetic type, data scene, brand sizzle, UI screencast, 30s launch spot) x 3 model tiers (Haiku 4.5, Sonnet 5, Opus 4.8) x isolated authoring agents per tool. Artifacts validated with each tool's own gate, rendered on the real pipelines, tokens pulled from the agents' transcripts. Render speed for these same cells is the table above.

toolvalid videosmedian cost / video
Clipkit (agent card)15/15 · 100%$0.89
Remotion13/15 · 87%$0.82
HyperFrames10/15 · 67%$1.43

The honest read: Remotion is slightly cheaper per attempt — and ships an invalid video 13% of the time, discovered only after you render. Validity is the product. Remotion's two failures compiled cleanly (tsc-green) and crashed at render time; a schema gate catches the same class before a frame is drawn.

format bench — token economy

The same video, three formats, counted.

Tokens are the unit AI systems pay in. Each brief below was implemented in all three tools; counts are tiktoken o200k_base. Clipkit is counted minified (what the MCP server and structured outputs emit); Remotion includes its registration file.

briefclipkitremotionvs clipkithyperframesvs clipkit
Title Card3285471.67x5831.78x
15s Promo (the pitch brief)2334441.91x5732.46x
Lower Third3435511.61x6161.80x
Kinetic Words2546182.43x8313.27x
Stat Bars4988131.63x1,1052.22x
Slideshow3626711.85x1,1233.10x
Quote Card4096101.49x7091.73x
Logo Sting6618711.32x9961.51x
Progress Steps6209601.55x1,3352.15x
Countdown3427102.08x8902.60x
Grid Reveal2966132.07x9293.14x
Gradient Hero5617701.37x8371.49x
Multiscene6221,0091.62x1,1321.82x
median1.63x2.15x

Every ratio above 1.00x is a cell Clipkit wins. There are no cells below 1.00x — and if there were, they would be in this table.

test it yourself

The corpus is the proof. Open it.

Below is the actual benchmark corpus — every brief, all three implementations, the exact files behind the table above. Read them side by side, copy them out, or open the Clipkit source in the editor and watch it render live in your browser.

{
  "output_format": "mp4",
  "width": 1920,
  "height": 1080,
  "duration": 5,
  "frame_rate": 30,
  "background_color": "#0b0f14",
  "elements": [
    {
      "id": "headline",
      "type": "text",
      "layer": 3,
      "time": 0,
      "duration": 5,
      "text": "Ship videos faster",
      "font_family": "Inter",
      "font_weight": "800",
      "font_size": 96,
      "fill_color": "#f4f7fb",
      "x": 960,
      "y": 470,
      "x_anchor": "50%",
      "y_anchor": "50%",
      "animations": [
        {
          "type": "text-slide",
          "time": 0.3,
          "duration": 0.6
        }
      ]
    },
    {
      "id": "bar",
      "type": "shape",
      "shape": "rectangle",
      "layer": 2,
      "time": 0.8,
      "duration": 4.2,
      "x": 960,
      "y": 560,
      "x_anchor": "50%",
      "y_anchor": "50%",
      "width": 240,
      "height": 6,
      "fill_color": "#1ba6ff",
      "keyframe_animations": [
        {
          "property": "width",
          "keyframes": [
            {
              "time": 0,
              "value": 0
            },
            {
              "time": 0.5,
              "value": 240,
              "easing": "ease-out"
            }
          ]
        }
      ]
    },
    {
      "id": "subline",
      "type": "text",
      "layer": 1,
      "time": 1,
      "duration": 4,
      "text": "The video engine for AI agents",
      "font_family": "Inter",
      "font_weight": "500",
      "font_size": 40,
      "fill_color": "#9aa3b2",
      "x": 960,
      "y": 640,
      "x_anchor": "50%",
      "y_anchor": "50%",
      "animations": [
        {
          "type": "fade-in",
          "duration": 0.5
        }
      ]
    }
  ]
}
Token counts: tiktoken o200k_base, exactly as published. “Open live” renders the Clipkit source in your browser on the real engine — no account, no server render.

The full suite — corpus, runners, timing scripts, and methodology — is being published as an open-source repo so the numbers can be reproduced (and challenged) on your hardware. Machine-record template included; PRs adding briefs or engines are welcome once it lands.

what we don't claim

The numbers that didn't favor us.

  • A clean sweep on render speed — the native runtime crashed on 2 of 15 cells (an uploaded texture wider than this GPU’s 8,192px limit) and lost one cell outright to our own browser runtime, 27.4s vs 11.1s, on a composition stacking per-element blurs. 13/15 rendered; the losing cell is in the ratio.
  • "75% fewer tokens" — our real medians are 39% and 53%; we publish the distribution.
  • "200+ fps browser export" as a blanket claim — that is Apple-Silicon-scoped (M4, n=3); the same export runs 4–5 fps on an Intel i9, and both rows are published.
  • "No headless browsers" — Remotion and HyperFrames drive one for every render, and so does our browser runtime; only the native runtime has no browser in the loop.
  • Agent-lane token superiority — Remotion agents emit terser code per attempt; our agent-lane win is validity at cost parity, not tokens.

Conditions: Intel i9 MacBook Pro / M4 mini (both recorded), Node 22, remotion 4.0.498–499, hyperframes 0.6.97–0.7.68, @clipkit/* 1.0.1–1.3.0, tiktoken o200k_base. Full per-experiment conditions ship with the repo.