Video Model Arena

Blind votes on the same frame and prompt across 8 video models.

3 votes · 47 clips · 6 prompts · Updated 2026-10-20

Vote

Loading battle0.0s

Leaderboard

RankModelScore5s clip
1–6Veo 3.1 FastGoogle11311000–1203Preliminary$0.50
1–6Kling 3.0Kuaishou11311000–1203Preliminary$0.45
1–6Seedance 1.5 ProByteDance11311000–1203Preliminary$0.26
—Kling 2.6Kuaishou—$0.35
—Seedance 2.5ByteDance—$1.50
1–6Grok ImaginexAI869797–1000Preliminary$0.25
1–6Wan 3.0Alibaba869797–1000Preliminary$0.50
1–6Hailuo 02MiniMax869797–1000Preliminary$0.23

Score: Bradley-Terry on blind votes, 95% interval below. Price: public list price for 5 seconds. Methodology

Head to head

All clips

Models

Make this video in Korpi

Script, scenes, voice and captions in one place.

Run Grok Imagine via the API

$0.0099 per clip on api.korpi.ai

Get API key
JavaScript
async function readResponse(response) {
  const result = await response.json();
  if (!response.ok || result.error || result.status === "failed") {
    throw new Error(JSON.stringify(result));
  }
  return result;
}

const res = await fetch("https://backend.korpi.ai/v1/videos/generations", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.KORPI_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "model": "grok-imagine",
    "prompt": "A girl with a red scarf turns toward the camera on a neon rooftop at dusk",
    "aspect_ratio": "9:16",
    "duration": 6
  }),
});
let result = await readResponse(res);

const deadline = Date.now() + 30 * 60_000;
while (true) {
  let next = result.result_url;
  if (!next && ["queued", "in_progress", "pending"].includes(result.status)) {
    next = `https://backend.korpi.ai/v1/videos/generations/${result.id}`;
  }
  if (!next) break;
  if (Date.now() >= deadline) throw new Error("Polling timed out");
  await new Promise((resolve) => setTimeout(resolve, 3000));
  const poll = await fetch(new URL(next, "https://backend.korpi.ai"), {
    headers: { Authorization: `Bearer ${process.env.KORPI_API_KEY}` },
  });
  result = await readResponse(poll);
}
console.log(result);