← All posts
Comparison·6 min read

Opus 5 vs Kimi K3: the same briefs, run side by side

Opus 5 · max and Kimi K3 given identical one-shot briefs across 36 tasks. Real outputs running live, token counts, and list-price cost for the whole run.


Both Opus 5 · max and Kimi K3 ran the same 36 briefs in this arena — identical prompt, one shot each, no retries. Their outputs are below, running live. You can click through them before reading a word of analysis.

What this comparison actually is

Every artifact here is the model's real output file executing in your browser, not a screenshot and not a description. Where the two models disagree in quality, you will see it yourself rather than take my word for it.

Landing

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Landing” brief. Open “Landing” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The hero is genuinely well built: a serif display face with an italic terracotta accent on "camera roll", and a hand-drawn SVG photo-book mock with taped Polaroids and a circular letterpress-style seal. A trust line under the buttons (free preview, pay only when you print, ships to 118 countries) does real work, and the footer is complete — four link columns, wordmark, italic tagline, social pills, and a wave divider into the dark green band. Where it falls down: Everything between the hero and the footer renders as blank cream and beige bands — roughly 5,000px of empty page where features, how-it-works, pricing, testimonials and the FAQ accordion should be. The final CTA band above the footer is also empty, with no headline or button on the dark green panel. The result is that only two of the brief's ten sections are actually visible in a full-page capture. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 43 interactive elements against Kimi K3's 41.

Dashboard

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Dashboard” brief. Open “Dashboard” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The hand-rolled SVG holds up well: four KPI cards with sparklines and delta chips, a dual-line year-over-year chart with legend and gridlines, and a donut with the total centred in the hole. The coffee-brown and tan palette is applied consistently across sparklines, lines, bars and donut segments, and the category legend carries its own percentages as pills. A 3M/6M/12M range toggle and a dark-mode button are both present in the header alongside a branded BT avatar. Where it falls down: The Top Locations table has one row, and its figures ($693,382, 92,588, $7.49, 19,855, 16.6%) are identical to the chain-wide KPIs above — for a stated 24-location chain, next to a bar chart that lists eight cities. That single row leaves roughly two-thirds of the widest card as blank white space. The Revenue by City x-axis labels collide into each other; Denver, San Francisco, Chicago and Los Angeles overlap into unreadable text. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 13 interactive elements against Kimi K3's 5. Opus 5 · max builds a 3.5× denser DOM (637 vs 180 nodes).

Game

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Game” brief. Open “Game” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The title screen commits to the arcade look — layered cyan and magenta text glow, a faint starfield and grid, and a monospaced control legend that stays readable against the dark backdrop. All five powerups are documented before play as coloured capsules with letter and name (M multiball, W wide, L laser, S slow-mo, +1 life), and the footer stat line states 6 levels, 5 power-ups, combo scoring, 60 FPS. Where it falls down: There is no explicit start prompt; the closest thing is "SPACE / CLICK — LAUNCH BALL" in the controls list, which reads as in-game instruction rather than an invitation to begin. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 0 interactive elements against Kimi K3's 0.

Tool

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Tool” brief. Open “Tool” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The shell is a sensible tool layout: harmony-rule dropdown with Generate/Save/Saved in a sticky header, then a five-swatch row with per-swatch lock buttons, a contrast checker, a light/dark UI preview, and CSS/Tailwind/JSON export tabs. Every element the brief names has a designated place on the page. Where it falls down: No colours are generated: all five swatches are blank white with a solid black bar where the hex label belongs, and the hex input under each is empty. The WCAG checker is inert — both colour selects are empty, the ratio boxes are blank, the score is an em dash, and all four AA/AAA badges are greyed out. The export textarea is empty and the "light variant" and "dark variant" previews render identically white, so the light/dark comparison shows nothing. Kimi K3 throws 1 uncaught error (`Cannot read properties of undefined (reading 'addEventListener')`). Opus 5 · max ships 51 interactive elements against Kimi K3's 41. Opus 5 · max builds a 2.0× denser DOM (381 vs 186 nodes).

News

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “News” brief. Open “News” in the arena to run both full-screen, go blind, and vote.

Kimi K3: It reads as a real front page: heavy serif masthead with "Est. 1897" and a volume/issue line, a blue BREAKING ticker, section nav, and a three-column grid with a boxed Most Read, Weather and newsletter rail. Every one of the roughly nineteen stories has its own bespoke flat SVG illustration rather than a repeated placeholder, and the six section headings are colour-coded — world blue, science purple, culture orange, sport green, opinion red — each with a matching rule. The fictional copy is specific and internally consistent, with bylines, read times, kickers, and a footer that admits it is a fictional publication. Where it falls down: The lead story's headline column is too narrow for the type size, breaking the headline across five lines. The lead illustration leaves large empty pale-blue bands above and below the artwork, so the hero panel looks half-filled. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 91 interactive elements against Kimi K3's 32. Opus 5 · max builds a 2.1× denser DOM (999 vs 474 nodes).

CHIP-8

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “CHIP-8” brief. Open “CHIP-8” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The chassis is well made: a phosphor-green CRT bezel with scanline framing, a right-hand rail of CPU, registers, timers and stack panels, a CPU-speed slider reading 700 IPS, and pause/reset controls. The footer states the quirk set it claims to implement (VF-reset, shift VY to VX, I+=X+1, BNNN+V0, wrap-coord/clip-draw), which is the right level of detail for an emulator. Where it falls down: The display is entirely black. The corax+ test ROM produces no output at all — zero opcodes graded, no checkmarks, no Xs, nothing on screen to read. The instrumentation confirms nothing executed: CYCLES 0, EMU SPEED 0/s, PC still at 0x200, and empty REGISTERS and STACK panels — while the header badge still says RUNNING. The panel labelled HEX KEYPAD contains no keypad, just four lines of text, and those lines describe BRIX paddle controls rather than the loaded ROM. Kimi K3 throws 1 uncaught error (`Failed to execute 'atob' on 'Window': The string to be decoded is not correctly `). Opus 5 · max ships 5 interactive elements against Kimi K3's 3.

Particles

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Particles” brief. Open “Particles” in the arena to run both full-screen, go blind, and vote.

Kimi K3: Six presets — Galaxy, Fireworks, Rain, Swarm, Orbit, Snow — beat the brief's five, with the active one clearly highlighted. 2,500 particles render at 92 FPS with additive glow and visible motion trails, and the galaxy preset shows genuine structure, a bright core with spiral arms, rather than uniform noise. The floating glass panel exposes particles, gravity, friction, force and trails as labelled sliders with live numeric values, and a bottom hint line documents drag, shift+drag, space and H. Where it falls down: The purple colour-theme swatch is shown as selected while the field renders in full spectrum, so the theme control's effect is not apparent. Gravity reads 0.00 on the default preset of an app called Gravity Lab, which undersells its headline parameter. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 29 interactive elements against Kimi K3's 14. Opus 5 · max builds a 2.5× denser DOM (142 vs 57 nodes).

3D Game

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “3D Game” brief. Open “3D Game” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The canvas is genuinely drawing something: a full-frame starfield of discrete points at varying brightness, not the black screen this brief usually produces. The menu itself is well set — a glowing cyan slab-serif wordmark, monospace body copy that states the goal and the controls in two short lines, and a solid cyan CTA whose dark label measures about 11.7:1 contrast. Boosting the frame reveals faint teal geometry with a thin cyan thruster streak sitting behind the copy, so there is hand-rolled 3D-ish output on the canvas beyond the stars. Where it falls down: The top-left HUD (SCORE / SPEED / HIGH) renders at RGB 25,25,25 on pure black, roughly 1.2:1 contrast, so the readout is effectively invisible on a normal display. At native brightness nothing but scattered stars is discernible behind the menu — the geometry only becomes visible when the image is brightened around ten times, so the start screen gives no sense of a tunnel racer. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 0 interactive elements against Kimi K3's 1. Opus 5 · max builds a 2.9× denser DOM (112 vs 38 nodes).

Marble 3D

Kimi K3: The persistent top strip already exposes the whole economy loop — cash, depth, and colour-coded fuel, hull and cargo bars — so the Motherload structure is legible before you press anything. The dialog lists all six controls including the awkward ones (rescue when out of fuel, teleport if bought), and CONTINUE is correctly greyed out against an active NEW GAME to show no save exists. Where it falls down: The HUD chips render at about 1.26:1 contrast (roughly RGB 31,31,31 on near-black), so the CASH / DEP / FUEL / HULL / CARGO labels are barely readable in this state. Everything below the horizon at y≈474 is pure black with zero pixel variation — no strata, tiles or ore — leaving the bottom 40% of the page dead empty behind the dialog. The one surface structure at top right is an unlabelled flat olive rectangle with no signage or detail. Kimi K3 throws 1 uncaught error (`Cannot read properties of undefined (reading '0')`). Opus 5 · max ships 2 interactive elements against Kimi K3's 2.

Artillery

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Artillery” brief. Open “Artillery” in the arena to run both full-screen, go blind, and vote.

Kimi K3: Real terrain renders behind the modal: a jagged hill silhouette with a grass fringe over a dirt fill, under a blue-black sky gradient, which matches the destructible pixel-artillery brief. The menu card carries everything needed on one screen — a 2-Player Hotseat toggle, a clear START GAME button, and a four-line control legend at about 4.5:1 contrast. Where it falls down: The scene is far too dark: terrain measures around RGB 15,12,10 against a sky of about 7,12,17, so the hills are nearly indistinguishable from the background at normal brightness. A bright tan strip with a small yellow sprite on top sits at the right edge, painting over the 4px frame border and spilling about 4px outside the play field box — it is the brightest thing in the scene and reads as an overflow artifact. An unlabelled grey arrow floats at the top centre of the field with no value or caption next to it. Opus 5 · max throws 2 uncaught errors (`Failed to execute 'addColorStop' on 'CanvasGradient': The value provided ('#f0a `). Opus 5 · max ships 8 interactive elements against Kimi K3's 2. Opus 5 · max started erroring after interaction — the kind of break a screenshot never shows.

Tower Def

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Tower Def” brief. Open “Tower Def” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The only full application layout in the batch: tower palette with colour-coded costs on the left, a status bar with cash, lives, wave, enemy count, speed and pause up top, and a next-wave panel on the right with composition, clear bonus and countdown. The right panel spells out the maze mechanic the brief asks for — towers physically block the path, keep at least one route open — and the board shows labelled SPAWN and EXIT nodes joined by the open corridor, so the puzzle is readable before the first placement. Type and chip contrast are strong throughout; white and amber on dark navy stays legible at every size used. Where it falls down: The grid lines sit only about six RGB steps above the board fill (roughly 22,27,31 on 16,21,26), so the buildable cells are very hard to make out. Both side panels run full height with their lower halves completely empty — about 330px of dead space under the six tower cards and roughly 490px under the wave panel. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 7 interactive elements against Kimi K3's 9. Opus 5 · max builds a 2.3× denser DOM (182 vs 78 nodes).

Catapult

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Catapult” brief. Open “Catapult” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The gold-gradient serif wordmark with its warm glow and the matching brass PLAY button give the page a coherent medieval identity — the most confident typography in the batch. Title, tagline and CTA are cleanly centred with generous vertical spacing, and the tagline holds about 8.7:1 contrast. Where it falls down: The rest of the page is entirely empty: the background measures a flat RGB 10,8,7 in every corner and across the mid-field, with no castle, catapult, ground line, texture or vignette anywhere. No controls or aim/power explanation appear at all, unlike every other title screen in this batch. Kimi K3 throws 1 uncaught error (`Cannot read properties of undefined (reading 'shake')`). Opus 5 · max ships 5 interactive elements against Kimi K3's 1. Opus 5 · max builds a 12.0× denser DOM (168 vs 14 nodes).

Hardest

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Hardest” brief. Open “Hardest” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The stark white play field with heavy black display type is the right call for a World's Hardest Game tribute and gives the highest text contrast in the batch. The menu covers play, level select and a one-line control and objective summary without clutter, and the subtitle has an actual voice rather than placeholder filler. Where it falls down: The two stacked buttons are sized to their labels (about 112px versus 196px wide), so the centred pair looks unaligned rather than deliberately staggered. The hint line sits at roughly 3:1 contrast (grey 119 on white) at small size, the weakest text on the page. The frame is entirely monochrome with a large empty white field above and below the menu — none of the green zone, coins or blue dots the copy names appear anywhere. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 3 interactive elements against Kimi K3's 2.

Bloxorz

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Bloxorz” brief. Open “Bloxorz” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The level-select card is the tidiest dialog here: teal wordmark, a two-line rules statement that actually explains the win condition, a 5x2 level grid with the unlocked tile highlighted, and a full-width gradient CTA that names the level it launches. The page chrome behind is blurred by a proper backdrop filter, so the overlay reads as an intentional modal scrim rather than a dead background. Where it falls down: The locked tiles sit at roughly 1.9:1 for the 'Locked' caption and 2.7:1 for the numbers, so nine of the ten level slots read as near-empty boxes. Outside the card the page is a flat RGB 4,6,10 with no isometric board, block or grid visible, so nothing on screen signals a 3D puzzle. Kimi K3 throws 1 uncaught error (`Cannot read properties of null (reading 'width')`). Opus 5 · max ships 10 interactive elements against Kimi K3's 7. Opus 5 · max builds a 1.8× denser DOM (152 vs 85 nodes).

Copter

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Copter” brief. Open “Copter” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The title screen has a coherent cave-flyer look: layered dark rock silhouettes top and bottom, a parallax starfield, and a cyan neon-glow wordmark that reads clearly against the near-black background. Controls are explained up front with the input words (SPACE, CLICK, TOUCH) picked out in yellow, and the persistent BEST/DIST HUD is already parked in the top corners where it will live during play. The outlined PILOT READY button is the single brightest interactive element, so the entry point is unambiguous. Where it falls down: The helicopter sprite sits directly on top of the second instruction line, its rotor crossing the leading 'Avoid' — the sprite and the copy occupy the same band instead of being stacked. BEST 0 appears twice on one screen, once in the HUD and once inside the menu block, which is redundant. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 0 interactive elements against Kimi K3's 1. Kimi K3 builds a 2.7× denser DOM (12 vs 32 nodes).

Launch

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Launch” brief. Open “Launch” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The menu card is well organised: a two-by-two stat grid (best distance, total distance, runs, cash) with small grey labels over large coloured values, then one dominant blue LAUNCH MODE button. The dusk gradient from deep indigo to peach gives the flat card a real sense of sky and depth, and the card's rounded dark panel keeps the text legible over it. Where it falls down: The clouds are just overlapping translucent circles and the overlaps show as darker lens-shaped seams, so they read as stacked discs rather than cloud shapes; one cluster is also half-hidden behind the card. The sun has a dull grey-olive ring around it that looks like an unintended stroke rather than a glow. The 'Reset progress' link is dark grey on a dark navy card and is close to invisible. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 1 interactive element against Kimi K3's 1. Opus 5 · max builds a 3.3× denser DOM (97 vs 29 nodes).

Bubble

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Bubble” brief. Open “Bubble” in the arena to run both full-screen, go blind, and vote.

Kimi K3: Where it falls down: The full-page capture is a single pure black 1280x800 frame — every pixel is #000000, verified against the file. There is no title, no HUD, no score or lives readout, no canvas border and no control hint anywhere on the page, so nothing at all is rendered for the viewer. Kimi K3 renders a blank or near-blank viewport here, while the other side draws a real interface. Kimi K3 throws 2 uncaught errors (`Cannot read properties of undefined (reading 'addEventListener')`). Opus 5 · max ships 0 interactive elements against Kimi K3's 0.

Castle

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Castle” brief. Open “Castle” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The 'Between Waves' panel header is clean and well written — bold title, a one-line explanation of what the screen is for, and a bordered SOULS counter pinned to the top right. The instructional copy underneath explains the whole grab-and-fling loop, including sappers and the souls economy, with the key verbs bolded. Where it falls down: Two screens are drawn at once: the 'Between Waves' panel sits on top of the still-present title screen, so CASTLE KEEPER, the instructions and the DEFEND THE CASTLE button all bleed through at very low contrast and are close to unreadable. The panel's body is empty — despite a header telling you to spend souls, there are no upgrade items, prices or slots, leaving roughly 400px of blank space between the header and START NEXT WAVE. HUD fragments in the top-left and top-right corners are cut off by the panel's edges rather than being hidden or dimmed cleanly. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 1 interactive element against Kimi K3's 3.

Fluid

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Fluid” brief. Open “Fluid” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The control panel is genuinely usable: four named parameters (viscosity, diffusion, dye fade, vorticity) each with a slider and a live numeric value, six colour-palette swatches, and Debug/Clear buttons. It tells you how to use it — 'Drag anywhere to inject velocity & dye' — which is the one thing a blank fluid canvas needs, and a grid-size plus FPS readout sits unobtrusively in the bottom-right corner. White-on-dark panel text and the bright blue slider handles hold up well against the black simulation field. Where it falls down: The performance readout in the corner shows 9 FPS on a 256x256 grid with no dye in the field, which is low for an idle state. The panel is anchored hard to the top-left corner with the remaining ~1000px of canvas left visually unbalanced and unframed — there is no canvas boundary indicating where the draggable field ends. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 14 interactive elements against Kimi K3's 6. Opus 5 · max builds a 2.7× denser DOM (106 vs 39 nodes).

Cloth

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Cloth” brief. Open “Cloth” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The shaded crimson cloth has real per-facet lighting, with lighter and darker triangles across the drape, and it clearly reads as fabric resting over the yellow ball rather than a flat polygon. The control panel covers what the brief asks for: a gravity slider with a live value, Wind/Shaded/Pins toggles that show their current state in the label, Reset and Drop Ball, plus an instruction line explaining both dragging and tearing. Active toggles are filled pink against dark inactive pills, so the current state is readable at a glance. Where it falls down: The cloth and the ball both run off the bottom of the frame and are clipped, so the simulation is not fitted to its viewport. The mesh resolution is coarse enough to show a visible staircase along the right-hand silhouette of the cloth instead of a smooth edge. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 19 interactive elements against Kimi K3's 6. Opus 5 · max builds a 4.4× denser DOM (101 vs 23 nodes).

Life

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Life” brief. Open “Life” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The toolbar is complete and well ordered — Play, Step, Clear, Randomize, Fit, Save, Load on the left, Gen and Pop counters plus a speed slider on the right — and it covers everything a Life implementation needs. The pattern library is a real feature, not a placeholder: Glider, LWSS, Gosper Gun, Pulsar, Pentadecathlon and a Draw mode, with the active mode outlined in cyan. Bright teal cells on a near-black grid give strong contrast at small cell sizes, and the bottom hint line documents left-click draw, right-drag pan and scroll zoom. Where it falls down: The pattern library panel floats over the top-right corner of the grid and hides the live cells underneath it rather than sitting beside the board. Roughly 110px of dead black margin surrounds the grid on the left, right and bottom, so the board does not fill the space the Fit button implies it should. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 25 interactive elements against Kimi K3's 14. Opus 5 · max builds a 5.6× denser DOM (211 vs 38 nodes).

Boids

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Boids” brief. Open “Boids” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The control panel is well organised: seven labelled sliders (separation, alignment, cohesion, perception radius, max speed, boid count, obstacles) each show a right-aligned live numeric value, and the four buttons use a filled teal state to mark what is active. Panel typography is consistent throughout — uppercase letter-spaced labels, monospaced values, uniform track and thumb styling — and the teal-on-near-black palette holds together. Where it falls down: The canvas is entirely black. With BOID COUNT set to 400 and OBSTACLES set to 3, not a single boid, obstacle or trail is drawn anywhere in the roughly 950x800 px simulation area. The counter in the bottom-left reads '0 FPS', so the readout itself never advanced past zero. Button styling is inconsistent: 'Mouse: Predator' and 'Edges: Wrap' both display a current mode, yet only one is highlighted, and the un-highlighted mode button is styled identically to the 'Reset' action. Kimi K3 throws 1 uncaught error (`Cannot read properties of undefined (reading 'push')`). Opus 5 · max ships 25 interactive elements against Kimi K3's 11. Opus 5 · max builds a 3.2× denser DOM (150 vs 47 nodes).

Traffic

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Traffic” brief. Open “Traffic” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The road network reads clearly as a city grid: dashed lane centre lines, grey junction caps and paired red/green signal heads on every approach. The HUD is compact and legible, with live counters for cars on road, throughput and average wait stacked above the spawn-rate and sim-speed sliders, and a red Reset visually separated from the teal Pause. A second contextual panel for per-intersection tuning (NS green, EW green, Toggle Phase) exists, matching the 'click a node to toggle it and tune its signal' instruction in the header. Where it falls down: Both floating panels sit directly on top of the grid and hide the top-left and top-right blocks, including several intersections and their signal heads. The signals are 4-5 px dots repeated four to a junction; across the whole grid they read as scattered red/green noise rather than as directional lights, and it is hard to tell which approach any dot governs. The right-hand panel is in an unresolved state: it says 'Select an intersection' while its sliders and Toggle Phase button are rendered fully active rather than disabled. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 17 interactive elements against Kimi K3's 7. Opus 5 · max builds a 3.1× denser DOM (131 vs 42 nodes).

Ecosystem

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Ecosystem” brief. Open “Ecosystem” in the arena to run both full-screen, go blind, and vote.

Kimi K3: Three agent layers are separable at once: a green grass cell field, pale rabbit dots and red fox clusters, with live counts (Grass 7370, Rabbits 14399, Foxes 224) in the header pill. The bottom-right panel plots three separate population time series with per-series colour and current value, which is the core deliverable for a predator-prey piece. The controls panel exposes real model parameters (rabbit and fox reproduction thresholds, energy yields, metabolism, grass regrow) plus Pause/Step/Reset and a seed readout for reproducibility. Where it falls down: The hint line at the bottom-left is dark grey over the bright green field and is clipped by the left edge, making it effectively unreadable. The field is packed to the point where individual rabbits merge into the grass glow, so at this population the canvas reads as texture rather than as discrete agents. The population chart has no axes, no time scale and no y-scale, so the curves convey shape but no magnitude. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 27 interactive elements against Kimi K3's 10. Opus 5 · max builds a 3.8× denser DOM (232 vs 61 nodes).

Shader

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Shader” brief. Open “Shader” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The two-pane layout suits the brief: preset dropdown, Compile, an Auto-compile checkbox, Pause, a status dot and an FPS readout along the top bar, with the editor docked to the right. The editor holds a real, substantial raymarching shader (SDF plane/sphere/torus, rotation matrix, hash, map function) above a short header documenting the expected mainImage signature and the iTime, iResolution and iMouse uniforms. Where it falls down: The preview area — roughly 870x740 px, more than half the page — is completely black with nothing drawn, and the FPS field reads '-- FPS' rather than a number, consistent with the reported 'Cannot access mouseX before initialization' error. No error is surfaced anywhere in the UI; the status indicator beside the FPS counter is green, so the interface reports a healthy state while the canvas is blank. Long code lines are clipped flat against the right edge of the editor with no wrapping and no visible horizontal scrollbar, cutting several function bodies mid-expression. Kimi K3 throws 1 uncaught error (`Cannot access 'mouseX' before initialization`). Opus 5 · max ships 8 interactive elements against Kimi K3's 5. Opus 5 · max builds a 2.7× denser DOM (92 vs 34 nodes).

Gen Art

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Gen Art” brief. Open “Gen Art” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The palette picker is the standout element: eight named palettes each shown as a five-swatch strip, with the active row outlined, so schemes can be compared before being applied. The sidebar covers the whole generative workflow in one column — algorithm select, seed field with a randomise button, palette list, particle count and an Export PNG action pinned to the bottom. Where it falls down: The PARTICLES readout shows 'NAN' while the slider thumb sits at a definite position, which is a visible numeric bug in the control itself. The canvas area, roughly 960x800 px and three quarters of the page, is entirely empty black with no output, frame or placeholder. The seed field is blank with no placeholder or default, so there is no indication of what seed is in effect or what format is expected. Kimi K3 throws 1 uncaught error (`Cannot read properties of undefined (reading 'toFixed')`). Opus 5 · max ships 25 interactive elements against Kimi K3's 13. Opus 5 · max builds a 1.7× denser DOM (186 vs 110 nodes).

Charts

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Charts” brief. Open “Charts” in the arena to run both full-screen, go blind, and vote.

Kimi K3: Charts do render: a three-series line chart with circular point markers, horizontal gridlines at 0, 10.0k, 20.0k and 30.0k, Q1-Q4 category ticks and a colour-dot legend, all drawn as SVG. The chart-type switcher (Line, Area, Bar, Scatter, Pie / Donut) is present with Line selected, and the header carries a CH mark, a subtitle and a light/dark toggle. The three series colours (indigo, pink, green) stay distinguishable where the lines cross, and the grey axis labels are readable on the navy background. Where it falls down: The y-scale is padded to 30.0k when the highest point is around 23k, so the top third of a very tall plot is empty and all three series are squeezed into the lower half. Only the Line tab is drawn; the other four chart types sit behind tabs, so the page is one 4-point chart in a ~1100x710 px card — that is the source of the low measured density, not a drawing failure. There are no axis titles or units beyond the 'k' suffix and no value labels on the points, so the chart cannot be read without the footer caption. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 11 interactive elements against Kimi K3's 6. Opus 5 · max builds a 4.5× denser DOM (368 vs 81 nodes).

Music

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Music” brief. Open “Music” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The most complete UI in this batch: transport (Play, Stop, BPM, master), a full synth-engine row (waveform, ADSR, cutoff, resonance), an effects row (delay time and feedback, reverb mix and decay), a 5x16 step sequencer and a two-octave keyboard, all in one coherent dark layout. The sequencer is readable at a glance — every track is colour-coded, active steps are filled in that colour, and the pitched tracks (Bass, Lead) print the actual note name inside the cell. The keyboard labels both the note name and the computer-key binding under each key, with a hint line explaining that keys A to apostrophe and mouse or touch both work. Where it falls down: The 16 step columns carry no step numbers and no visual grouping every four steps, so working out where you are in the bar means counting cells. The small white note labels on the saturated green Bass pads and cyan Hat pads have weak contrast at this size and are hard to read. The black rectangle beside the title (presumably the scope or visualiser) has no label, border treatment or idle baseline, so it reads as a hole punched in the header. Kimi K3 throws 1 uncaught error (`f.cancelScheduledValues is not a function`). Opus 5 · max ships 27 interactive elements against Kimi K3's 97. Kimi K3 started erroring after interaction — the kind of break a screenshot never shows. Opus 5 · max builds a 3.3× denser DOM (953 vs 286 nodes).

Spreadsheet

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Spreadsheet” brief. Open “Spreadsheet” in the arena to run both full-screen, go blind, and vote.

Kimi K3: All the expected spreadsheet chrome is present and correctly wired up visually: column headers A-C, row numbers 1-10, an A1 cell-reference box and a formula bar with an "=SUM(A1:B5)" placeholder. The active cell is marked with a blue outline and its row and column headers are tinted to match, so the selection is unambiguous. Where it falls down: The sheet is only 3 columns by 10 rows, so the whole app sits in the top-left corner and roughly three quarters of the 1280px page is blank white. Every one of the 30 cells is pre-filled with "0" instead of being empty, which makes a new sheet look like it already holds data. The toolbar's B / L / C / R buttons and the bare colour swatch beside them have no icons or labels, so their purpose is not guessable from the screen. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 27 interactive elements against Kimi K3's 13. Opus 5 · max builds a 7.1× denser DOM (651 vs 92 nodes).

Kanban

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Kanban” brief. Open “Kanban” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The shell is clean and restrained: indigo grid logomark, search field, dark-mode toggle, and three columns each with a count badge, a delete button and an "Add a card" affordance. A dashed "Add column" placeholder sits at the end of the row, which is the right pattern for this kind of board. Where it falls down: The board ships completely empty — all three columns read 0 — so there is no card content, no labels, and nothing to show what the drag-and-drop in the brief actually moves. With no cards the columns collapse to about 220px tall and roughly 80 percent of the viewport is blank grey. The dashed "Add column" tile is clipped by the right edge of the 1280px viewport, with its right border cut off. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 44 interactive elements against Kimi K3's 12. Opus 5 · max builds a 4.0× denser DOM (295 vs 74 nodes).

Diagram

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Diagram” brief. Open “Diagram” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The canvas is not empty: two nodes labelled Start and Process render with visible connection ports and a drawn edge between them, above a full toolbar with shape types, undo/redo/delete, snap, zoom with reset, and JSON/SVG/PNG export. The dark floating toolbar reads cleanly against the pale grid canvas, and the greyed-out Undo/Redo correctly reflect an empty history. A hint line explains the non-obvious interactions - double-click for a new node, drag a port to connect, wheel to zoom, space-drag to pan. Where it falls down: With only two seed nodes on a full-bleed canvas, well over 90% of the screen is bare grid, so the low density measurement is fair even though the UI itself is complete. The interaction hints are set in small low-contrast grey-blue text jammed into the bottom-right corner, which is the easiest place on the page to miss. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 14 interactive elements against Kimi K3's 15. Opus 5 · max builds a 5.3× denser DOM (363 vs 69 nodes).

Pixel Art

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Pixel Art” brief. Open “Pixel Art” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The editor furniture is unusually complete: six tools plus a filled-rect toggle, current colour with a swatch palette and add-to-palette, brush size, X/Y symmetry, a shortcut legend, a zoom slider with grid toggle and cursor readout, and Layers/Frames/Export tabs on the right. The 32x32 canvas draws a proper transparency checkerboard at zoom 20 and is cleanly centred in the dark workspace. The animation requirement is visibly addressed by a dedicated Frames tab sitting alongside Layers and Export. Where it falls down: The layer row's delete X sits outside the row's blue border and is cut off by the right edge of the window. The tool buttons are unlabelled and the pencil and eyedropper glyphs are near-identical diagonal strokes, so the tool grid is hard to parse at a glance. The undo and redo buttons in the top-right are dark grey on near-black and are very hard to see. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 73 interactive elements against Kimi K3's 30. Opus 5 · max builds a 2.7× denser DOM (351 vs 131 nodes).

Calculator

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Calculator” brief. Open “Calculator” in the arena to run both full-screen, go blind, and vote.

Kimi K3: Two functions plot on a properly labelled axis grid with ticks from -8 to 8 on both axes, and each function row in the panel is colour-keyed to its curve with its own visibility toggle and delete button. The split between plot area and right-hand control column is clean, with zoom in/out/reset anchored to the bottom-left of the canvas. Where it falls down: The number pad is mis-ordered: rows read 7 8 9 divide 4, then 5 6 multiply 1 2, then 3 minus 0 dot, because the keys wrap across a five-column grid instead of forming the standard 7-8-9 / 4-5-6 / 1-2-3 block. The last keypad row is cut off by the bottom edge of the page, so the keys on it are only half visible. Both load clean — no uncaught exceptions from either entry. Opus 5 · max ships 76 interactive elements against Kimi K3's 46. Opus 5 · max builds a 1.7× denser DOM (150 vs 88 nodes).

Match-3

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Match-3” brief. Open “Match-3” in the arena to run both full-screen, go blind, and vote.

Kimi K3: The start overlay is well composed: gradient wordmark, three lines of genuine rules copy covering line-clear gems and colour bombs, and one clear Play button. The HUD above the board carries Score, Best, Moves and Target as four consistent tiles with a progress track beneath them, and an 8x8 board container is correctly sized behind the overlay. Where it falls down: The HUD panel is visibly wider than the board panel below it, so on a centred layout the two containers' edges do not line up. The backdrop dim is heavy enough that the HUD title and values drop to near-black-on-black, which reads as a page that has not finished loading rather than a dimmed background. Kimi K3 throws 2 uncaught errors (`Cannot read properties of undefined (reading '0')`). Opus 5 · max ships 3 interactive elements against Kimi K3's 2. Kimi K3 started erroring after interaction — the kind of break a screenshot never shows.

Idle

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Idle” brief. Open “Idle” in the arena to run both full-screen, go blind, and vote.

Kimi K3: Genuinely dense content: six generators each with cost, per-unit rate and owned count, eight upgrades in a card grid, thirteen milestones, a prestige panel with multiplier and legacy, and export/import/hard-reset save controls. Affordability is communicated visually - only the 10-cost Peasant has a lit yellow Buy button while the rest are muted - and the header shows both balance and per-second rate. The large MINT coin is an unmistakable focal point for the left column. Where it falls down: The left column stops after the play-time strip while the right column continues for roughly another 1100px, leaving a very large empty dark gutter down the left side of the page. The generator icons are near-identical small blue glyphs and every milestone uses the same grey star, so neither list has any visual differentiation between its entries. Opus 5 · max throws 1 uncaught error (`Cannot set property clientWidth of #<Element> which has only a getter`). Opus 5 · max ships 11 interactive elements against Kimi K3's 21. Kimi K3 builds a 2.9× denser DOM (104 vs 305 nodes).

Chess

Opus 5 · max
Kimi K3
Opus 5 · max and Kimi K3 on the “Chess” brief. Open “Chess” in the arena to run both full-screen, go blind, and vote.

Kimi K3: A full 8x8 board renders with correctly alternating light and dark squares, file letters a-h along the bottom and rank numbers 1-8 up the side, sized generously beside a clean side panel. The control panel is complete and sensibly grouped: side-to-move status, play as White or Black, three difficulty levels, New Game / Flip Board / Undo, and a move-history pane. Where it falls down: No pieces are drawn on any square. The status reads "White to move" with "No moves yet", so this is the opening position and all 32 pieces should be visible - the piece set simply does not render. The rank and file coordinates are tiny pale grey glyphs tucked into square corners and are hard to read against both the light and the dark squares. Kimi K3 throws 1 uncaught error (`Cannot read properties of undefined (reading 'type')`). Opus 5 · max ships 10 interactive elements against Kimi K3's 8. Kimi K3 started erroring after interaction — the kind of break a screenshot never shows. Opus 5 · max builds a 2.3× denser DOM (278 vs 123 nodes).

Cost and output size

Across the 35 briefs where both models produced a measurable artifact, Opus 5 · max averaged 15,894 output tokens per task and Kimi K3 averaged 8,522. At list pricing (Opus 5 · max: $25/M output; Kimi K3: $4/M output) the whole run costs $13.91 versus $1.19.

TaskOpus 5 · max tokensKimi K3 tokensOpus 5 · max costKimi K3 cost
Landing17,76416,334$0.44$0.07
Game12,4599,967$0.31$0.04
Tool12,69511,410$0.32$0.05
Dashboard12,6849,254$0.32$0.04
Particles12,2256,594$0.31$0.03
3D Game19,7048,135$0.49$0.03
CHIP-87,9587,511$0.20$0.03
News23,61210,825$0.59$0.04
Marble 3D9,716$0.04
Artillery20,1278,056$0.50$0.03
Tower Def17,66411,965$0.44$0.05
Catapult21,1269,992$0.53$0.04
Read the numbers carefully

Token counts are estimated from artifact size, and a larger file is not a better one — verbose boilerplate inflates the same column that genuine detail does. Treat cost as the reliable figure here and quality as something to judge from the panes above.

How to judge this yourself

Open any pairing in the arena and use blind mode: it hides both labels until after you vote, which is the only way to keep brand reputation out of your own judgement. Votes are public and feed the leaderboard.

Frequently asked questions

Is Kimi K3 better than Opus 5 · max?

It depends on the task, which is why this page embeds the outputs instead of declaring a winner. Run the panes above and judge the specific work you care about.

How many tasks did both models complete?

36 of the arena's 51 briefs have artifacts from both models. Tasks where either model has no entry are excluded rather than scored as a loss.

Which is cheaper?

On this run, Kimi K3 was cheaper — $1.19 versus $13.91 for the same 35 briefs.

Don’t take the post’s word for it

The arena runs every model’s real output live. Pick a challenge, go blind, and cast a vote that counts in the public tally.

Open the arena