Claude Fable 5.1 vs Opus 5 vs Sonnet 5: One Point Apart
We gave four Claude models — Fable 5.1, Opus 5, Fable 5 and Sonnet 5 — the same five build briefs at maximum reasoning effort, one attempt each, with no browser to check their work. All twenty builds run live inside the article. Fable 5.1 won four of the five rounds and took the season by a single point, because the round it lost was the one where its code never ran at all.
Three months ago we started handing frontier Claude models the same build brief and publishing whatever came back, untouched. This is the third run, and the biggest: Anthropic's Claude Fable 5.1, Opus 5, Fable 5 and Sonnet 5, five tasks each, one attempt apiece. No retries, no follow-up notes, no cleanup. All twenty builds run live in this article.
Two things separate this run from the earlier ones. Every model was set to maximum reasoning effort, so nothing below can be explained away by a model not being given room to think. And none of them could open a browser to check its own work — they wrote a file and stopped, exactly as a person pasting a prompt into a chat window would.
Fable 5.1 won it, 17 points to 16. It also won four of the five rounds. Both of those facts are true at once, and the gap between them is the story.
Round 1: A seaside fairground, in pure SVG
The brief: a fairground at dusk as one self-contained SVG. A Ferris wheel with at least ten gondolas turning continuously, a carousel with at least six horses rising and falling out of phase, twinkling bulbs, chasing rim lights, a reflection in the water, a seamless loop. The trap is one clause — each gondola must stay upright throughout the rotation — which takes a second animation running backwards against the first.
All four kept the gondolas level. Fable 5.1 went further than the brief asked in a way that only shows if you watch closely: its horses face the direction the carousel is turning. Sonnet 5 solved the hard clause and then abandoned the easy half of the scene.
Round 2: A falling-sand sandbox, one HTML file
Sand, water, stone, wood, fire, smoke and an eraser on a grid at least 200 cells wide at 60fps. Water must level out, sand must sink through it, fire must eat wood and die. All four are live and paintable — pick a material and drag. Try setting the wood alight, then pouring water on it.
Fable 5.1
Opus 5
Fable 5
Sonnet 5
There is no correctness gap here at all. Four working sandboxes, four sets of right answers: sand piles at a proper angle of repose, water finds its level, fire consumes wood and dies without fuel, and sand dropped into water sinks through it and settles underneath without breaking the surface. This round came down to feel, and Fable 5.1 took it on performance.
Round 3: A Rubik's cube that solves itself, and the round that decided the season
A 3x3x3 cube in WebGL, scrambling itself with about twenty animated turns and then solving back. The pass mark was stated outright in the brief: every one of the six faces must actually be a single colour — make sure your rotation logic really returns the cube to solved.
Opus 5
Fable 5
Sonnet 5
Fable 5.1
That last frame is not a loading delay. Fable 5.1's cube never runs at all, and the reason is four lines of ordering:
277| cubies.push(cubie);
278| snap(cubie); <- calls the function here
279| }
... fourteen lines later ...
292| const _m4 = ..., _vx = new THREE.Vector3(), ...
293| function snap(c) {
295| _vx.fromArray(c.basis[0]); <- which reads _vx
The call on line 278 resolves, because a function declaration is hoisted to the top of its scope. But snap reads _vx, and const is not hoisted — it sits in what the language spec calls the temporal dead zone until the line that declares it executes. So the first cubie built throws Cannot access '_vx' before initialization, the module dies, and the page waits forever on its own loading message.
The fix is moving one line. And note what this does not tell us: the cube's rotation logic was never reached, so we cannot say whether it works. Nobody has ever seen it run. A model thinking as hard as it can, on a task whose brief explicitly asked it to make sure the thing worked, shipped a file that fails on the first statement that matters — because it could not open a browser, and it never re-read its own declaration order.
Round 4: The interchange, revived
This brief is from our first build-off in June, where it caught two different models on two different faults: Opus 4.8 drew beautiful loop ramps that connected to nothing, and Fable 5 merged cars into oncoming traffic. A top-down interchange as one SVG, two roads crossing on different levels, connecting ramps, at least twelve vehicles, and correct layering so cars vanish under the overpass.
Sonnet 5's is the interesting failure, because it took three separate checks to find. Its ramp path endpoints touch both roads, so the geometry says the ramps connect. Its drawing order puts the ramp vehicles beneath the bridge deck, so the exit traffic is hidden at the wrong moment. But watching the animation shows the real fault: all four of its ramp vehicles are created inside the frame, at the road's edge, out of nothing. Every other model routes ramp traffic along a path that starts off-screen and runs down the mainline before curving away, which is what sells the connection. Sonnet's loops touch both roads while no vehicle ever travels between them — Opus 4.8's June failure in a new costume.
Round 5: The tiebreaker
Four rounds in, Fable 5.1 and Opus 5 were level. So we revived the other brief from June, and it is the only one in the series that does not say how to build: a self-contained web page that animates a rocket launching — countdown, ignition, liftoff and ascent — with a mission-control HUD. No library named, no 3D requested, and one aesthetic instruction: make it look good.
In June, both models reached for Three.js and WebGL from a CDN without being asked. This time none of them did. Opus 5 and Fable 5.1 each hand-built the whole thing on 2D canvas; Sonnet 5 used no canvas at all, only DOM and SVG.
Fable 5.1 — 49 minutes
Opus 5 — 31 minutes
Fable 5 — 36 minutes
Sonnet 5 — 39 minutes
Fable 5's launch here is its original June build, from the first time this brief was run.
The two leaders did something nobody asked for and that is easy to miss: both compute the speed of sound from altitude rather than dividing by a fixed 340 m/s. Fable 5.1 at 4.54 km reports Mach 0.73 where the standard atmosphere gives 0.729. Opus 5 at 7.22 km reports Mach 1.03 where the true figure is 1.028. Both implemented the atmospheric lapse rate to make a number in the corner of a HUD correct. Sonnet 5, meanwhile, compresses the entire flight into 32 seconds, reaching 181 km and 23,927 km/h at 1.9g and calling MAX-Q at 80 km — numbers that cannot all be true at once, on a rocket whose exhaust plume is visibly detached from the vehicle.
Between the two leaders it came down to a neat symmetry. Opus 5 fluffs the start — half the rocket is buried in the ground at ignition, and there is no way to restart it — but it ends correctly, with a proper engine cutoff. Fable 5.1 has the best-looking launch of the four, controls, and even sound, and its burn never ends; the camera also judders in the final phase of the ascent. Fable 5.1 took the round, and with it the season.
The clock
| Build | Fable 5.1 | Opus 5 | Fable 5 | Sonnet 5 |
|---|---|---|---|---|
| Fairground | 35m | 24m | 39m | 69m |
| Sandbox | 31m | 13m | 20m | 38m |
| Rubik's cube | 25m | 16m | 16m | 42m |
| Interchange | 26m | 42m | 26m | 39m |
| Rocket launch | 49m | 31m | 36m | 39m |
Last season's headline was that the largest model was also the fastest on every round. That did not survive contact with a fourth model. Opus 5 is still quick, but Fable 5.1 beat it on two of five, and the only consistent pattern left is at the bottom: Sonnet 5 was the slowest model on three of the five rounds and never the fastest on any.
The verdict: 17–16
| Fairground | Sandbox | Cube | Interchange | Launch | Total | |
|---|---|---|---|---|---|---|
| Fable 5.1 | 4 | 4 | 1 | 4 | 4 | 17 |
| Opus 5 | 3 | 3 | 4 | 3 | 3 | 16 |
| Fable 5 | 2 | 3 | 3 | 3 | 2 | 13 |
| Sonnet 5 | 1 | 1 | 2 | 1 | 1 | 6 |
Fable 5.1 won four of the five rounds and took the season by a single point, because the one round it lost, it lost completely. Opus 5 won exactly one round, never placed below second, and never once shipped something broken.
That is the whole result in a sentence: the best builder and the most reliable builder finished one point apart, and the difference was a const declared fourteen lines too late.
It is worth being precise about what that means, because it is easy to over-read. Fable 5.1 is not a worse engineer than Opus 5 — on four separate briefs it produced the better artefact, and on two of them it fixed faults that had beaten earlier models. What it lacks is the last step. Opus 5's cube counts its own stickers and reports the result; Fable 5.1's cube never got far enough to have an opinion. When you cannot run what you write, the model that re-reads its own file wins ties it did not deserve to win.
Sonnet 5's six points need context too. Its physics were correct, its cube solved, its Ferris wheel obeyed the one clause built to catch models out, and on the rocket it was the only model that reviewed its own code during the build and caught two real bugs. It is not incapable. It is consistently third-best and occasionally careless, and across five rounds that compounds into a scoreline that looks worse than the work.
This series has now run three times. In June the lesson was that whoever checks their own work wins. In August it was that the frontier model treats a correct answer as the middle of the job. Both still hold. What this run adds is narrower and more useful: at the top, the models are no longer separated by whether they can build the thing. They are separated by what happens in the ten seconds after they think they have finished.
Every file above is the untouched output of a single run. Scroll back up, set fire to a wooden house, and see whether you score it the way we did.
More on Claude
Evergreen coverage we keep current — start here.
Want AI news before everyone else?
The morning's most important AI stories, straight to your inbox. No fluff.