Our own measurements · run Sep 2, 2026
We benchmarked Fable 5.1 ourselves
Every number on this page came out of our own terminal. Nothing here is copied from a third-party leaderboard. We ran the same prompts through Claude Fable 5, Claude Fable 5.1 and Claude Opus 5 at three effort levels, recorded what the API reported, and paid the bill. The method is written out in full below so you can disagree with it, or run it yourself.
How we ran the tests
Everything went through Claude Code's headless mode, which reports token usage and cost per call as JSON:
claude -p "<prompt>" --model <model> --effort <low|high|max> --output-format json
- Models.
claude-fable-5,claude-fable-5-1andclaude-opus-5, on the same account, same machine, same session conditions. - Effort pinned explicitly. Every run passes
--effort. This matters: our first attempt inherited a global"effortLevel": "low"fromsettings.jsonwithout us noticing, which invalidated the labels on an earlier version of this page. Never trust the default. - Three prompts, chosen to span task types rather than to flatter anyone: a light reasoning problem (count the domino tilings of a 2×10 rectangle), a code-generation task (a self-contained HTML file with an SVG bar chart), and a plain-English explanation (what prompt caching is and why it saves money). A fourth, harder prompt - deriving a closed form for a central-binomial series - is used in a separate repeated test.
- Tools disabled. Each prompt ends "Do not use any tools", so every run is pure generation. No tool loops, no file reads, no web calls muddying the token counts.
- What we count.
usage.output_tokensfrom the API response, which is everything the model generates: the visible answer plus its reasoning tokens. Both bill at $50 per million on Fable. Where the API reportsthinking_tokenswe split the two apart. Input and cache tokens are excluded from the token figures but included in the cost figures. - Speed is
duration_api_ms, wall clock for the request, and throughput is output tokens divided by that. Time spent reasoning counts, because you wait for it. - Cost is
total_cost_usdas reported per call, on an API-billed account. Note this includes Claude Code's own system-prompt cache write of roughly $0.25-0.35 per fresh session, which is overhead of the harness rather than of the task. - One run per cell for the three-prompt suite below. That is not enough to be a benchmark, and we say so plainly in the reliability section - it is the first thing you should hold against these numbers.
Where the tokens actually go
Output tokens for the whole three-task suite, split into visible text and reasoning. This is the finding that reframes everything else.
| Model | Effort | Output tokens | Reasoning | Visible | Reasoning share |
|---|---|---|---|---|---|
| Fable 5 | low | 2,771 | 34 | 2,737 | 1% |
| Fable 5.1 | low | 3,809 | 90 | 3,719 | 2% |
| Opus 5 | low | 3,176 | 58 | 3,118 | 2% |
| Fable 5 | high | 3,444 | 190 | 3,254 | 6% |
| Fable 5.1 | high | 3,869 | 182 | 3,687 | 5% |
| Opus 5 | high | 4,819 | 277 | 4,542 | 6% |
| Fable 5 | max | 7,727 | 4,205 | 3,522 | 54% |
| Fable 5.1 | max | 10,026 | 6,725 | 3,301 | 67% |
| Opus 5 | max | 6,201 | 1,453 | 4,748 | 23% |
One run per cell, three prompts summed. Cells where the API reported thinking_tokens: 0 for Fable 5.1 at low and high effort are suspicious, since 5.1 has reasoning permanently enabled - we treat the max-effort rows as the trustworthy ones and flag the rest.
Speed: is 5.1 faster than Opus 5?
No. Not on either measure, at any effort level we tested. The claim circulating that 5.1 is roughly twice as fast as Opus 5 is, on our numbers, close to exactly backwards.
| Effort | 5.1 wall clock vs Opus 5 | 5.1 throughput vs Opus 5 | 5.1 cost vs Opus 5 | 5.1 reasoning vs Opus 5 |
|---|---|---|---|---|
| low | 1.36× | 0.88× | 2.05× | 1.6× |
| high | 1.04× | 0.77× | 1.75× | 0.7× |
| max | 1.61× | 1.01× | 2.75× | 4.6× |
Above 1.00× means Fable 5.1 is slower, dearer, or more reasoning-heavy than Opus 5. The one place they are close is wall clock at high effort. At max effort 5.1 took 1.6× as long and cost 2.75× as much, and generated over four times the reasoning tokens.
Pricing: per token versus per task
This is the whole story in one line, and it applies to both cost and speed: Fable 5.1 is cheaper per token and competitive per token of throughput. It is more expensive per task and slower per task. The difference is reasoning.
| Model | Effort | Wall clock | Tokens/sec | Measured cost |
|---|---|---|---|---|
| Fable 5 | low | 43s | 64 | $0.95 |
| Fable 5.1 | low | 58s | 66 | $0.98 |
| Opus 5 | low | 42s | 75 | $0.48 |
| Fable 5 | high | 51s | 68 | $0.98 |
| Fable 5.1 | high | 65s | 59 | $0.91 |
| Opus 5 | high | 63s | 77 | $0.52 |
| Fable 5 | max | 106s | 73 | $1.19 |
| Fable 5.1 | max | 122s | 82 | $1.22 |
| Opus 5 | max | 76s | 82 | $0.44 |
Cost is what the API actually billed for the three-prompt suite, including Claude Code's per-session cache-write overhead. Opus 5 lists at $5/$25 per million input/output against Fable's $10/$50, and the measured bills line up with that: Opus 5 came in at roughly half to a third of Fable 5.1 for the same work.
Quality: does the extra spend buy better output?
We took the six HTML charts produced by the code-generation prompt, stripped every trace of which model wrote which, shuffled them, and had Grok grade them blind on a five-part rubric out of 50.
Caveats: one grader, one run per cell, and a five-bar SVG chart is not representative of real engineering work. "Over-engineering" is precisely the axis where a judge's own taste does the most work.
Second task type: a plain-English explanation
To check whether that result was an artefact of one toy task, we graded a second, completely different output type - the nine answers to "explain what prompt caching is, in plain English for a working developer" - on a rubric built for prose rather than code: technical accuracy, clarity to a developer, conciseness, and scope discipline. Nine answers, three models, three effort levels, blind and reshuffled.
Effort again bought nothing: means by effort were low 32.3, high 31.0, max 32.0. Across both grading passes and both rubrics, higher effort never produced better-judged output. Still one grader on both passes - a second judge failed on a configuration error - so the ranking is replicated across tasks but not across graders.
Third task type: an open-ended brief, and the gap collapses
Both tests above share two features that work against Fable 5.1: the task has a clear finish line, and the rubric contains an over-engineering criterion, which makes doing more than asked a defect by definition. So we ran a third pass designed to remove both. An open brief with no required structure ("present this data as compellingly as you can, make your own choices"), n=2 per model, graded on information design, editorial judgment, visual craft, restraint and would-ship. No scope-compliance criterion at all.
| Grading pass | Task shape | Fable 5 | Fable 5.1 | Opus 5 | Gap |
|---|---|---|---|---|---|
| Code chart (/50) | tight spec | 45.7 | 41.3 | n/a | 4.4 |
| Code chart, scope criterion removed (/40) | tight spec | 36.7 | 34.7 | n/a | 2.0 |
| Explanation (/40) | tight spec | 35.0 | 32.7 | 27.7 | 2.3 |
| Open brief (/50) | open | 38.0 | 36.0 | 35.5 | 2.0 |
What the earlier passes actually measured, then, is narrower than it first looked: on tasks with a clear finish line and a rubric that rewards staying inside it, Fable 5.1's extra exploration is scored as a defect. Change either condition and the effect largely disappears. The grader's own summary of the open-brief winner is the useful line: it won because it "foregrounds those comparisons and then stops". Restraint was what scored, not effort or spend, and no model had a monopoly on it. An agentic version of this test, where models can iterate on real files rather than emit one shot, is running now and will be added here.
The axis these prompts miss: how tightly the task is specified
Every prompt above has a clear finish line - count the tilings, draw five bars, explain a concept. That is exactly the regime where a lower per-token rate wins, which is why Opus 5 looks cheap on this page. Our earlier hands-on eval tested the opposite case, and the answer flips.
| Cell | Total cost | Blended rate | Objective check | Blind taste |
|---|---|---|---|---|
| Hard task · Fable 5 high | $1.04 | $2.97/M | pass | n/a |
| Hard task · Fable 5 low | $1.33 | $3.26/M | pass | n/a |
| Hard task · Opus 4.8 high | $0.75 | $2.02/M | pass | n/a |
| Hard task · Opus 5 high | $0.79 | $1.66/M | pass | n/a |
| Design task · Fable 5 high | $1.60 | $3.31/M | pass | 4.5 |
| Design task · Fable 5 low | $1.12 | $3.19/M | pass | 4.5 |
| Design task · Opus 4.8 high | $1.96 | $1.78/M | pass | 4.0 |
| Design task · Opus 5 high | $5.78 | $0.73/M | pass | 3.5 |
Two tasks: a narrow algorithmic problem graded by an independent numerical checker, and an open-ended visual-design brief graded by acceptance checks plus a blind taste judge. n=1 per cell. Note this eval predates Fable 5.1 - "Fable" here is Fable 5.
So the useful answer to "which model should I use" is not a model name, it is a question: how tightly is the work specified? Tight spec, clear finish line - the per-token rate decides, and Opus wins. Vague brief, no obvious stopping point - the volume decides, and the model that knows when to stop wins. The cost calculator now has that dial on it. The obvious gap: Fable 5.1 was not in this eval, so the open-ended half has not been re-run against it. That test is next.
Where the money actually goes, and the cache cut finally showing up
Every test above this point is single-shot: one request, nothing to reuse, no caching to speak of. That is the wrong shape of workload to see Anthropic's price cut, which is why measured costs kept moving against Fable 5.1. So we ran the same brief again as a real agentic build - tools on, multiple files, iterating in a sandboxed directory - and broke the bill into its parts.
| Build | Turns | Output tokens | Cached tokens re-read | Minutes | Cost | Our tests |
|---|---|---|---|---|---|---|
| Fable 5 r1 | 24 | 43,311 | 1,344,512 | 11 | $4.93 | 7/7 |
| Fable 5 r2 | 40 | 74,587 | 2,922,893 | 21 | $8.84 | 7/7 |
| Fable 5.1 r1 | 21 | 78,352 | 1,694,554 | 16 | $6.64 | 7/7 |
| Fable 5.1 r2 | 43 | 79,783 | 2,508,627 | 19 | $7.35 | 7/7 |
| Opus 5 r1 | 111 | 175,960 | 18,919,435 | 45 | $15.72 | 7/7 |
| Opus 5 r2 | 59 | 130,449 | 6,873,477 | 31 | $7.94 | 7/7 |
| Fable 5, mean of 2 | 32 | 58,949 | 2,133,702 | 16 | $6.88 | 7/7 |
| Fable 5.1, mean of 2 | 32 | 79,068 | 2,101,590 | 18 | $7.00 | 7/7 |
| Opus 5, mean of 2 | 85 | 153,205 | 12,896,456 | 38 | $11.83 | 7/7 |
Six builds, n=2 per model (two runs each from the identical brief), high effort, sandboxed with filesystem writes confined to the build directory and web tools disabled. Every build passed all seven of our independent tests, including the daylight-saving discriminator a fixed-offset implementation fails. The models are separated here by cost and craft, not correctness.
.build directory of intermediate scratch behind. An earlier hands-on eval found the same behaviour on an open-ended design brief; the surprise is that it reproduced here on a tightly specified brief with hard acceptance criteria. Over-exploration does not need a vague prompt to trigger it.
How much to trust any of this
Less than you might like, and here is the specific reason. We ran the identical three-prompt suite twice under identical settings. The first run put Fable 5.1 at 1.10× Fable 5's output tokens; the repeat put it at 1.37×. One individual task swung from 0.90× to 1.62× between runs. Run-to-run variance on a single generation is as large as the effect we are trying to measure, which means every single-run figure on this page should be read as one sample, not a measurement. A repeated test - harder prompt, three runs per cell, low and max effort - is running as this page goes up, and the numbers here will be revised when it lands. We would rather publish that sentence than a tidy number we cannot reproduce.
Raw data
Every prompt, every raw JSON response, the runner scripts and the blind-grading key are kept alongside this page's source rather than summarised away. If a number here looks wrong, the response that produced it is on disk.