Veo 3.1 Fast vs Wan 3.0

Same start frame, same prompt, blind votes.

No votes yet. Vote on the arena page.

FactVeo 3.1 FastWan 3.0
Arena score1131869
5 second clip$0.50$0.50
Price sourceOfficialOfficial
Max length8s30s
Max resolution4K1080p
Native audioYesYes
Generation time76s262s

Side by side

Anime rooftop at dusk

She turns toward the camera as the wind lifts her red scarf. The camera slowly pushes in while the city lights flicker on behind her.

Veo 3.1 Fast
Wan 3.0

Latte art pour

The milk pours in a steady stream and draws a rosetta on the coffee. Steam rises. The camera holds still with a gentle focus breathing.

Veo 3.1 Fast
Wan 3.0

Skateboard bowl trick

The skater lands the trick, rolls across the bowl and carves up the far wall. The camera tracks alongside at speed.

Veo 3.1 Fast
Wan 3.0

Neon sign in the rain

Rain falls in front of the sign. The letters flicker once, then stay lit and sharp, still reading "OPEN LATE". A person with an umbrella walks past.

Veo 3.1 Fast
Wan 3.0

Fisherman portrait

He looks out to sea, then turns to the camera and smiles warmly, eyes crinkling. The boat sways gently.

Veo 3.1 Fast
Wan 3.0

Make this video in Korpi

Script, scenes, voice and captions in one place.

Run Grok Imagine via the API

Pay 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);