Khazad-dûm Benchmark: Gandalf vs Balrog in animated SVG

Inspired by Simon Willison's pelican benchmark: instead of a static pelican on a bicycle, models must generate a self-contained animated SVG (SMIL/CSS, no JavaScript) of Gandalf duelling the Balrog on the Bridge of Khazad-dûm. Two prompt variants per model: minimal (one line) and constrained (scene + animation requirements). Open the raw SVG to see the animation live.

Prompt 1: minimal
Generate an animated SVG of Gandalf duelling the Balrog on the Bridge of Khazad-dûm.
Prompt 2: constrained
Generate a single self-contained animated SVG (SMIL or CSS animations, no JavaScript, no external resources) depicting Gandalf duelling the Balrog on the Bridge of Khazad-dûm.

The scene must include:
- A narrow stone bridge spanning a fiery chasm below
- Gandalf facing the Balrog, staff in one hand and sword in the other
- The Balrog with visible wings, horns, and a flaming aura

It must animate for at least two animation loops:
- Flickering flames and glowing light on the Balrog and in the chasm
- Gandalf's cloak and robe waving
- A subtle pulsing glow from Gandalf's staff
- Both figures shifting stance as if clashing

Constraints:
- Single <svg> code block only, no explanation
- Loop must be seamless (no jumps when the animation restarts)
- Include XML comments describing what each group represents

claude-fable-5-1-constrained

len=22523 · anim=True · 19498 tok · 236.4s · cost=$0.96254 · api latency=?

open raw SVG

claude-fable-5-1-minimal

len=16602 · anim=True · 13021 tok · 168.9s · cost=$0.64917 · api latency=?

open raw SVG

claude-opus-5-constrained

len=31316 · anim=True · 28340 tok · 344.2s · cost=$0.70236 · api latency=?

open raw SVG

claude-opus-5-minimal

len=20197 · anim=True · 21338 tok · 283.9s · cost=$0.53255 · api latency=?

open raw SVG

gemini-3-8-flash-constrained

len=24882 · anim=True · 14171 tok · 91.4s · cost=$0.05236 · api latency=?

open raw SVG

gemini-3-8-flash-minimal

len=22475 · anim=True · 12746 tok · 69.0s · cost=$0.04769 · api latency=?

open raw SVG

glm-5-3-flash-constrained

len=11978 · anim=True · 4910 tok · 95.1s · cost=$0.00119 · api latency=?

open raw SVG

glm-5-3-flash-minimal

len=33872 · anim=True · 8715 tok · 325.6s · cost=$0.00217 · api latency=?

open raw SVG

gpt-5-6-luna-constrained

len=12069 · anim=True · 4783 tok · 35.5s · cost=$0.00548 · api latency=?

open raw SVG

gpt-5-6-luna-minimal

len=11331 · anim=True · 4304 tok · 37.8s · cost=$0.00513 · api latency=?

open raw SVG

gpt-6-astra-constrained

len=20989 · anim=True · 8418 tok · 196s · cost=$0.4105 · api latency=?

open raw SVG

gpt-6-astra-minimal

len=16211 · anim=True · 6021 tok · 136s · cost=$0.29965 · api latency=?

open raw SVG

kimi-k3-constrained

ERROR: HTTP 402 Payment Required (insufficient OpenRouter credit for this model)

kimi-k3-minimal

ERROR: HTTP 402 Payment Required (insufficient OpenRouter credit for this model)