Model economics · 31 July 2026 · Asfandyar Malik
Opus 5 Is Half the Price. Why Was the Bill the Same?
3 chapters, played or read
Runtime 02:15
Overview
Overview
"There's a test going round this week where someone gave Claude Opus 5 and Claude Fable 5 the exact same prompt and had them build the same app, three times over. Blind — he didn't know which model bu
🧪 The experiment — Level 3 is the runbook
Cost warning — read before you start
claude --version # verified working: 2.1.186 command -v jq || brew install jq00:0002:15
the question
"There's a test going round this week where someone gave Claude Opus 5 and Claude Fable 5 the exact same prompt and had them build the same app, three times over. Blind — he didn't know which model built which until the end. It's a genuinely good test, and Opus 5 came out ahead.
But there's a number in his own results that he says out loud three separate times and never adds up. And when you do add it up, the headline everyone is repeating about Opus 5 — half the price — mostly stops being true.
So I'm going to show you his numbers, show you what's hiding in them, and then I'm going to run the same experiment four times with one setting changed, and we'll see what it does to the bill. Because I think almost everyone testing this model right now is testing it wrong — including me, until last week."
give him the win, properly
"First, credit where it's due, because the methodology here is better than most of this genre.
Same prompt, both models, one shot, no revisions, deployed live. And blind — he had a separate agent open both builds unlabelled so he couldn't favour one. If you've watched enough of these videos you'll know how rare that is. Most of them are somebody clicking around going 'yeah, this one feels better.' Blinding it is real work and it's the right call. I'm copying it today.
One footnote and then I'll move on, because I covered it properly in my last video: Opus 5 beating Fable on a benchmark chart isn't the same as Opus 5 being the top model. Anthropic's own docs still describe Fable 5 as their highest-capability tier, and Opus 5 as the better value. Both things are true at once. Twenty seconds, moving on."
the number that got buried
"Now the part that made me want to make this video.
He's got a live dashboard running through the whole test — tokens, cost, duration, tool calls, lines of code. Great idea, and it's the reason this is even findable. Watch what it says.
So the first build is half price, and then… it isn't. Same model, same pricing, same session.
That's the whole thing. 'Half the price' is a rate, not a bill. A cheaper model that thinks three times as much is not a cheaper model — it's the same invoice with better output. Which might be a great trade! But it is not the trade the internet is currently describing, and if you switched to Opus 5 this week expecting your spend to halve, this is why it didn't.
His totals for the session, by the way: a hundred and fifty dollars, seven hours forty of compute, a hundred and twenty-two million tokens. For three apps."
the setting
"So why did it use so many tokens? Because of one setting, and he tells us what it is in the first minute: both models were running on max effort.
And here's the thing. Anthropic's documented guidance for Opus 5 is to start at xhigh for coding and agentic work — not max — and then sweep downward, because on this model low and medium are documented as unusually strong. The docs go further: they say the effort setting you carried over from your previous model is probably the wrong one. And they specifically warn that max can show diminishing returns and is prone to overthinking.
Let's find out what it actually costs."
four runs. THE EXPERIMENT.
"One prompt. Four runs. The only thing I change is the dial.
One shot each. No revisions. Same prompt every time — I'm keeping his rules because they're the right rules.
And say the total out loud: this experiment cost me $X. People trust a number you're willing to say.
the recommendation
"So what do you actually do on Monday.
Close + CTA
"So: Opus 5 is genuinely good, it genuinely competes with a model at twice the price, and it is genuinely half the rate. It is not automatically half the bill — that part is a setting, and the setting is yours.
I've put the exact prompt, the four run configs, and the cost table in the description so you can run this on your own task — free, go take it. And if you want the whole workflow, that's what we do inside Claude Codex Mastery — nine dollars a month, going to twenty-nine. Link's below. I'll see you in the next one."
🧪 The experiment — Level 3 is the runbook
| Step | Command | When |
|---|
What it proves: that "Opus 5 is half the price" is a rate, not a bill — and that the missing variable is one effort setting.
Cost warning — read before you start
The reference video spent $150 on three builds at max effort. This is four runs of one build, so it's cheaper, but it is not cheap.
- Estimate first — this is the gate.
./run-matrix.sh prompt.txt --only Cruns the cheapest row (Opus 5 atmedium) and prints its real cost. Multiply by ~6 for a rough ceiling on all four, sincemaxcan run several timesmedium. If that number makes you wince, shrink the prompt now, not after you've spent it. - Watch the first run. If run A is still going after ~45 minutes,
Ctrl-Cand simplify the build prompt. A prompt that's too ambitious burns money without producing a comparable artifact.
Prerequisites — you already have everything
This runs through the Claude Code CLI you already have installed. No API key, no separate billing setup — it uses your existing Claude Code login.
claude --version # verified working: 2.1.186
command -v jq || brew install jqRun it from a normal terminal, or from the integrated terminal inside VS Code — same thing. The Claude Code VS Code extension is great for watching a single run happen, but the matrix needs the CLI so all four runs are scripted and identical.
The three flags that make this experiment possible
| Flag | Why | ||||
|---|---|---|---|---|---|
| `--effort low\ | medium\ | high\ | xhigh\ | max` | The whole experiment. Per-run effort control, exactly the five documented levels. |
--output-format json | Returns total_cost_usd and a per-model modelUsage breakdown with costUSD, token counts and cache reads. This is where your cost table comes from. | ||||
--permission-mode acceptEdits | Lets it write the app without stopping to ask. Each run gets its own directory so they can't collide. |
STEP 1 — Pick and freeze one prompt
One build, not three. Requirements:
- Rich enough to differentiate. Something with state, interaction and visual design. A playable game, a live-simulated dashboard, a small tool.
- One shot, no revisions. Same rule the reference video used, and it's the right one.
Write it to prompt.txt in this folder. Freeze it — do not tweak between runs. Changing the prompt invalidates the entire comparison.
cat > prompt.txt <<'EOF'
Create a fully playable <thing> in a single self-contained HTML file.
<your requirements — be specific about features, not implementation>
EOFSTEP 2 — Run the matrix
cd youtube-videos/05-opus5-vs-fable5-same-app/experiments
./run-matrix.sh prompt.txt # all four
./run-matrix.sh prompt.txt --only C # estimate cost on one row firstFour runs: Opus 5 at max, xhigh, medium, then Fable 5 at max. Each run gets its own directory (out/run-A/ … out/run-D/) so the builds can never see or overwrite each other, with Claude Code's raw JSON in out/run-<X>/result.json. You get:
RUN MODEL EFFORT IN OUT CACHE_READ TURNS LOC TIME COST
A claude-opus-5 max 8420 58200 142000 37 3180 27m14s $1.4971
B claude-opus-5 xhigh 8420 31100 96000 24 2140 15m02s $0.8196
C claude-opus-5 medium 8420 14800 51000 14 1610 07m41s $0.4121
D claude-fable-5 max 8420 26400 88000 29 1980 31m50s $1.4042
TOTAL BILLED THIS SESSION: $4.1330 (incl. Claude Code overhead)TURNS is Claude Code's agentic turn count — a nice extra signal the raw-API version couldn't give you: higher effort generally means more tool calls, and you can see it.
Those numbers are illustrative. Yours will differ. Use yours.
STEP 3 — Judge it blind
Do not look at the table before you judge. Hand the four builds to a separate agent:
./blind-shuffle.sh # finds the build in each out/run-*/ and shuffles into blind/1..4
open blind/1.html blind/2.html blind/3.html blind/4.htmlcat blind/.mapping # the revealSTEP 4 — Fill in the deck
Slide 10 of slides-youtube.html ships with — placeholders. Replace every one with your real figures, including the cache-read column and the total.
STEP 5 — Decide, honestly
| If your result was… | Then the video says… |
|---|---|
medium looked as good as max, for ~⅓ the cost | "Half the price finally shows up in the bill. Start xhigh, sweep to medium." |
xhigh held but medium degraded | "xhigh is the sweet spot — max was pure waste on my task." |
max was genuinely, visibly better | "Max earns its money on hard builds — but know that it is money, and your bill won't halve." |
| Results were noisy / inconsistent | "One run each isn't enough to call this. Here's what I saw, here's why you should test your own." |
All four of those are good videos. Do not steer the result toward the thumbnail.
What "captivating" looks like here
The dramatic beats, in order:
- The four builds open side by side, unlabelled. Four versions of the same app, and the viewer is playing along trying to guess which is the expensive one.
- You commit to a ranking out loud — before seeing any numbers. This is the tension.
- The cost column appears. If the one you liked was also the cheapest, that's the video. If it was the most expensive, that's also the video, and a more honest one.
- The total spend, said plainly. "$4.13 to find this out" or "$47 to find this out" — either way, naming it is what makes people trust the rest.
The thing that makes this different from every other comparison video: they compare outputs, you compare outputs per dollar. Nobody's doing the second one.
Honesty checklist
- [ ] One prompt, frozen, identical across all four runs
- [ ] Cache-read column present (otherwise "3× tokens" invites a correct "but not 3× cost")
- [ ] n=1 per run, said out loud at least once
- [ ] Judging was genuinely blind; if it wasn't fully, say so
- [ ] Total spend stated as a real number
- [ ] His figures labelled as his, everywhere they appear
Keep exploring
More long-form resources built the same way — primary sources, working files, and commands that actually run.
Setup instructions rot faster than anything else here. Every command on this page is copied from the vendor's own documentation and linked to it — open the docs alongside this page and trust those over this one.