We gave four Claude models the same four coding jobs

Haiku 5.5, Sonnet 5.5, Opus 5.5 and Fable 5.1 each got the jobs a web studio gets every month: a WordPress shortcode, a Shopify section, a tracking script for Webflow, and three bugs from a client's email. Hidden checks did the marking, and every model did every job twice: once at the highest effort setting and once at Claude Code's default. At max effort all four passed every check. At the default, two of them missed the same one, and everything cost a fraction as much. We ran it all on 24 October 2026.

By Ali Demirci, founder of Woofocus · October 24, 2026 · 10 min read

The short answer

At max effort, all four models passed all 76 of our checks. At Claude Code's default effort, Haiku 5.5 and Opus 5.5 still passed all 76, while Sonnet 5.5 and Fable 5.1 each missed one: the same time zone case in the bug hunt, explained below.

The bigger difference was the bill. Haiku did the four jobs for $0.08 in 5.5 min at the default effort, against $0.86 and 25 min at max. Every model was 3 to 11 times cheaper at its default, and finished the four jobs in under 8 minutes instead of 25 to 47.

So for code like this, small and clearly specified, with a way to check the result, we would start with Haiku 5.5 at the default effort. When a slip would cost a client money, as with dates, prices or stock, we would either raise the effort or use Opus 5.5, which also passed everything at its default and was the quickest of the four there, for $1.41. Anthropic's own Claude Code help still calls Sonnet "the right choice for the large majority of coding work", and our four small jobs say nothing about the large changes that advice is mostly about.

  • 76/76checks passed by every model at max effort
  • $0.08Haiku 5.5 at default effort: 76/76, 5.5 min
  • $0.64Sonnet 5.5 at default: 75/76, 4.9 min
  • $1.41Opus 5.5 at default: 76/76, 4 min
  • $4.11Fable 5.1 at default: 75/76, 7.6 min
Source: our test, 24 October 2026. All four jobs; cost is the runs' tokens at Anthropic's API list prices, time is the first to the last message.

The four jobs

We picked jobs we actually get from clients, wrote each as a short brief in a README, and gave every model a folder with the brief and the starting files. The examples (a bakery, a candle shop, a conference) are made up.

  1. WordPress: an opening hours shortcode. A table of the week's hours from a settings field, "Open now" in the site's time zone, a Friday that closes at 2 am, a compact mode that merges days, and escaping, because three people edit the hours. 27 checks.
  2. Shopify: a free-shipping progress bar. An Online Store 2.0 section with its settings schema, prices in cents, a threshold that can have cents too, a bar that stops at 100%, nothing at all for an empty cart, and the merchant's message escaped. 15 checks.
  3. Webflow: a UTM script. Footer code that keeps where a visitor first came from and where they came from this time, in cookies, and fills hidden fields on every form, including a form that appears later in a popup. It must never throw, even with cookies blocked. 14 checks.
  4. A bug hunt. A small ticket shop plugin "we wrote last year" and an email from the client: an early bird price still given after midnight, a discount code that took EUR 20 off instead of EUR 10, and "Sold out" with a ticket left. Find the causes, fix them, break nothing else. 20 checks, 9 of which already passed before the fix.

How we tested

We ran every test on 24 October 2026 in Claude Code (version 2.1.310), the way a developer at a studio would use it: the model gets a folder with the task, can read and write files and run commands, and says when it is done.

  • The models. Haiku 5.5, Sonnet 5.5, Opus 5.5 and Fable 5.1, picked with Claude Code's model setting. Every response in the logs names the model that served it, so we know each run used the model we asked for.
  • The same prompt for all. Each model got the same brief and the same short instructions; only the folder path differed, and the folders had random names, not model names. No web, no other agents, no advisor model.
  • Two effort levels. Every model did every job twice. First at max, the highest setting. Then at Claude Code's default: medium for Haiku, Sonnet and Opus 5.5, and high for Fable 5.1. The logs record the effort of every step, so we know which runs used which.
  • Hidden checks, written first. We wrote the checks before any model ran, tried them on a correct solution and on a deliberately sloppy one, and kept them encrypted until the runs of a job had ended. The models could write and run their own tests; they never saw ours.
  • One run each. One run per model, job and effort level. A second run could come out differently.
  • Cost is what the run's tokens cost at Anthropic's API prices, read on 24 October 2026, including Claude Code's own instructions (about 57,000 tokens at the start of every run, mostly read back from the cache after the first call). On a Pro, Max or Team plan you pay a monthly price instead, and the same numbers show how much of your usage a job takes.
  • Time is from the first message to the last in the run's log.

The results

Checks passed, cost at API prices and time, per job. At max effort:

JobHaiku 5.5Sonnet 5.5Opus 5.5Fable 5.1
WordPress opening hours shortcode (27 checks)27/27, $0.29, 7.5 min27/27, $1.79, 11.4 min27/27, $2.83, 11.8 min27/27, $5.09, 10.8 min
Shopify free-shipping bar (15 checks)15/15, $0.21, 5.8 min15/15, $1.25, 10.4 min15/15, $2.26, 10 min15/15, $3.15, 7.9 min
Webflow UTM script (14 checks)14/14, $0.20, 6.9 min14/14, $1.86, 18.3 min14/14, $3.07, 15.5 min14/14, $3.53, 9.8 min
Bug hunt from a client's email (20 checks)20/20, $0.16, 4.6 min20/20, $1.01, 7.2 min20/20, $1.63, 6.5 min20/20, $1.77, 3.8 min
All four jobs76/76, $0.86, 25 min76/76, $5.92, 47 min76/76, $9.79, 44 min76/76, $13.54, 32 min

At Claude Code's default effort:

JobHaiku 5.5Sonnet 5.5Opus 5.5Fable 5.1
WordPress opening hours shortcode (27 checks)27/27, $0.022, 1.6 min27/27, $0.17, 2.8 min27/27, $0.41, 1.4 min27/27, $0.94, 1.6 min
Shopify free-shipping bar (15 checks)15/15, $0.014, 1 min15/15, $0.16, 0.7 min15/15, $0.33, 0.8 min15/15, $0.84, 1.5 min
Webflow UTM script (14 checks)14/14, $0.021, 1.7 min14/14, $0.17, 0.9 min14/14, $0.37, 1.1 min14/14, $1.25, 2.7 min
Bug hunt from a client's email (20 checks)20/20, $0.019, 1.2 min19/20, $0.14, 0.5 min20/20, $0.30, 0.7 min19/20, $1.07, 1.8 min
All four jobs76/76, $0.08, 5.5 min75/76, $0.64, 4.9 min76/76, $1.41, 4 min75/76, $4.11, 7.6 min

At max effort the table is really about the last two numbers: Haiku was the cheapest on every job and the quickest on three of the four, and Fable was the most expensive on every job but quicker than Sonnet and Opus on all four. At the default effort the order changed. Opus was the quickest in total, Sonnet close behind, and Fable became the slowest as well as the most expensive.

The one check two models missed

The client's email said the early bird price ended on 31 October, but a customer still got it at 00:30 on 1 November. The shop is in Amsterdam; the server runs on UTC. The old code worked out "the end of 31 October" in the server's time zone, so the early bird lasted an hour too long.

All eight runs found that cause. They fixed it in two ways:

  • In the site's time zone. The deadline is the end of 31 October in Amsterdam, whatever time is passed in. All four models at max effort, and Haiku and Opus at the default, did this.
  • In the time zone of the moment passed in. Sonnet and Fable at the default built the deadline in whatever time zone the "now" value happened to carry. That works when the shop passes Amsterdam time, which its own tests did. Pass the same moment as UTC, as code that reads a server clock might, and 00:30 on 1 November in Amsterdam still gets the early bird: the bug the client reported, back again.

Their own tests all passed, because they tested with Amsterdam times. Nothing in their hand-over notes mentioned the case. It is the kind of slip that only shows up in production, which is why we would raise the effort, or ask for a test with the time given in UTC, on anything that touches dates and money.

Where the money went

Two things decide the bill in a session like this:

  • What the model writes, thinking included. At max effort most of it is thinking: about 85% of Haiku's tokens and 70% of Fable's. At the default, the models thought much less and wrote much less: Sonnet wrote about 18,000 tokens over the four jobs instead of 356,000.
  • What it reads back. Every step re-reads the conversation so far, mostly from the cache at a fraction of the price. Fable's cache reads cost $0.25 per million, Opus's $0.20, Sonnet's $0.10 and Haiku's $0.01.

At max effort Fable wrote the fewest tokens, about 152,000 against 347,000 for Haiku, and still cost the most, because a token from Fable costs 100 times what one from Haiku costs: $50 per million output tokens against $0.50. At the default effort Haiku still wrote the most (about 63,000), but at its price that came to about two cents a job.

If you use Claude Code on a plan rather than the API, the dollars are not on your bill, but the proportions still show which model and which effort eat your weekly limit. Our guide to Claude for small business covers what each plan includes.

How they worked

The checks only tell you the code worked. The logs and the hand-over notes tell you how each model got there.

  • They all reproduced before fixing. In the bug hunt each model first got the client's exact wrong numbers out of the old code (EUR 69.06 charged after EUR 86.33 shown), then fixed the cause. All eight runs found the same three causes: the deadline time zone above, a discount written back into the cart every time the totals were read, and a < that should have been <=.
  • They wrote their own tests. For the bug hunt at max effort they added 11 (Haiku), 35 (Sonnet), 19 (Opus) and 20 (Fable) tests to the plugin's own test file; at the default, 19, 9, 10 and 17.
  • The max-effort fixes were small. 20 changed lines of plugin code from Haiku, 23 from Opus, 28 from Fable and 31 from Sonnet.
  • The folder rule. Every prompt said to work only inside the job's folder. At max effort one run strayed: Opus ran git status, which looked in the folders above for a repository (it found none and read nothing else). At the default effort four runs wrote a scratch file outside the folder: Sonnet twice (an empty file it said it made by mistake, and a test script it left behind) and Opus twice (a test script and a copy of the plugin to compare against, both deleted afterwards). None of them read anything outside, which we checked in the logs.
  • Small slips. Fable changed the plugin's version number in the max-effort bug hunt, which nobody asked for.

The most useful part was what they raised without being asked. At max effort:

Raised in the hand-over notes without being asked (max effort)

0 of 6

Tick the ones you would have caught yourself.

At the default effort the notes were shorter, but Haiku and Fable still said that orders already charged wrongly need a look, and Opus pointed out that two orders at the same moment could still both take the last ticket.

What this test does not show

  • Other effort levels. We tried the highest setting and the default, not low, high or xhigh in between.
  • Big codebases. Each job fit in one folder. A change across a large theme, a refactor or a long session that runs out of room is a different kind of work.
  • Vague work. Our briefs were precise. The bug hunt's email was vague, but the code was small.
  • Code quality beyond behaviour. The checks test what the code does, not how easy it is to read or change next year.
  • One run each. Run it again and a model could fail a check it passed, or pass the one it missed.

Which model we would use

Pick the job:

What is the job?

Use Haiku 5.5 at the default effort

It passed every check at both effort levels; at the default the four jobs cost $0.08 together.

Setup
/model haiku in Claude Code
Claude sees
The files the change touches and a clear brief
Read how →

If your studio runs client work on our board, Proofyard, the Claude connector uses whichever model you pick in Claude Code or claude.ai, so these choices carry over. Our other tests used the same method on web design, writing website copy and agent work on a project board. For what each model costs and which plan includes it, see which Claude model for which job, and for what Claude does inside our board, our pricing and the smart actions it runs.

The prompt we used

Every model got this, with only the folder changed. Try it on a job of your own:

Fill in once
  1. The job prompt

    You are a developer at a small web studio. Do the task described in [~/clients/acme/theme]/README.md. Rules for this job: - Work only inside [~/clients/acme/theme]. Do not read, list or search anything outside that folder. - Do not use the web, and do not ask other agents or an advisor for help: work on your own. - You may run code (php, node) inside the folder to try your work. - When you are done, reply with a short summary: what you did, how you checked it, and anything you are unsure about.

Sources

FAQ

Questions people ask

What is the best Claude model for coding?

In our test of four agency coding jobs, all four current models passed every one of 76 hidden checks at max effort. At Claude Code's default effort, Haiku 5.5 and Opus 5.5 still passed all 76 and Sonnet 5.5 and Fable 5.1 missed one each. For small, well-specified jobs we would start with Haiku 5.5, which did all four for $0.08 at the default effort; for code that handles money or dates, Opus 5.5 or a higher effort.

Is Claude Haiku 5.5 good enough for coding?

For the jobs we tested, yes: a WordPress shortcode, a Shopify section, a Webflow script and a three-bug fix, each in one folder with a clear brief. It passed every check at max effort and at Claude Code's default, medium.

Does the effort setting matter in Claude Code?

It mattered more for cost and time than for scores. At the default effort the four jobs cost 3 to 11 times less and took under 8 minutes per model instead of 25 to 47. Scores dropped only for Sonnet 5.5 and Fable 5.1, by one check each, on a time zone case that all four models handled at max.

Is Opus 5.5 better than Sonnet 5.5 for coding?

On these four jobs Opus passed every check at both effort levels, and Sonnet missed one at the default. Opus cost about twice as much: $1.41 against $0.64 for all four jobs at the default effort. Anthropic keeps Opus for large refactors, hard debugging and architecture, which our test did not cover.

How much does a coding task cost in Claude Code?

At Claude Code's default effort our jobs cost $0.014 to $0.022 each on Haiku 5.5, $0.14 to $0.17 on Sonnet 5.5, $0.30 to $0.41 on Opus 5.5 and $0.84 to $1.25 on Fable 5.1, at API prices. At max effort, 3 to 11 times more. On a Pro, Max or Team plan you pay a monthly price instead, and the work counts against your usage limits.

Try it on your own work

Try it on your next brief.

Open a Proofyard workspace, give Claude a real brief and see what it prepares. Nothing reaches a client without your say.

  • 14 days free, no credit card
  • Clients and reviewers are free
  • 3,000 Claude credits a person each month