40 measured metrics · 16 calculated · 7 studies
Claude Haiku 4.5vsGPT-6.1 Sol (Codex CLI)
Claude Haiku 4.5 ahead on 2, GPT-6.1 Sol (Codex CLI) ahead on 6; 13 ties, 35 unclear. A side is ahead only where the intervals or ranges do not overlap.
The verdict
Claude Haiku 4.5 and GPT-6.1 Sol (Codex CLI) share 40 measured metrics and 16 list-price calculations from 7 studies. Claude Haiku 4.5 leads on 2 rows: Same prompt, 10 times: time per call (Exact number), 5.06 s vs 13.4 s; Same prompt, 10 times: time per call (Code fix), 5.95 s vs 11.3 s. GPT-6.1 Sol (Codex CLI) leads on 6 rows: Pass rate on eight hard tasks (Strict pass), 100% (16/16) vs 46% (11/24); Same prompt, 10 times: strict pass rate (Exact number), 100% (10/10) vs 0% (0/10); Same prompt, 10 times: strict pass rate (JSON object), 100% (10/10) vs 10% (1/10); and 3 more. On those rows the 95% intervals and run ranges do not overlap; only a 95% interval is a confidence interval. The other rows are 13 ties and 35 unclear; each row says why. Calculation rows are derived from list prices and recorded counts; they are not bills or runs. Every row ran the two sides through different routes (for example Claude Code vs Codex CLI), so they compare route + model pairs, not models alone; the contexts name the route. Some rows rest on small samples (n = 3 at the smallest).
Headline metrics
How far apart the two sides are on the headline metrics. Length is the ratio of the two values; it is not a winner.
Bar length is the ratio of the two values on a log scale, pointing to the larger one. Larger is not better for time, tokens or cost. A bar has a side’s color only when that side is ahead in the data; gray means the data does not separate them.
| Metric | Claude Haiku 4.5 | GPT-6.1 Sol (Codex CLI) | n | Interval or range | Outcome | Basis | Study |
|---|---|---|---|---|---|---|---|
| Pass rate on five validated tasks | 100% (15/15)Claude Code · five short validated tasks | 100% (15/15)Codex CLI · effort medium · five short validated tasks | 15 | 95% CI: 80%–100% vs 80%–100% | Tie | The 95% intervals overlap (Claude Haiku 4.5 80% to 100%; GPT-6.1 Sol (Codex CLI) 80% to 100%), so this sample cannot separate them. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| Total time per call | 4.43 sClaude Code · five short validated tasks | 5.65 sCodex CLI · effort medium · five short validated tasks | 15 | range: 3.2 s–23.6 s vs 4.1 s–25.5 s | Unclear | The run ranges (fastest to slowest) overlap (Claude Haiku 4.5 3.16 s to 23.6 s; GPT-6.1 Sol (Codex CLI) 4.10 s to 25.5 s); the medians alone do not show a reliable difference. A range is not a confidence interval. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| Time to first useful output | 3.63 sClaude Code · five short validated tasks | 5.05 sCodex CLI · effort medium · five short validated tasks | 15 | range: 2.8 s–22.3 s vs 3.4 s–17.8 s | Unclear | The run ranges (fastest to slowest) overlap (Claude Haiku 4.5 2.78 s to 22.3 s; GPT-6.1 Sol (Codex CLI) 3.36 s to 17.8 s); the medians alone do not show a reliable difference. A range is not a confidence interval. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| Input tokens per call: what the CLI sends (Other input) | 3,790Claude Code · five short validated tasks | 6,943Codex CLI · effort medium · five short validated tasks | 15 | none recorded | Unclear | More or fewer tokens is not better or worse by itself; this row describes behaviour, not a winner. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| Output tokens per call (Output tokens) | 367Claude Code · five short validated tasks | 42Codex CLI · effort medium · five short validated tasks | 15 | none recorded | Unclear | More or fewer tokens is not better or worse by itself; this row describes behaviour, not a winner. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| List-price cost per passing answer (calculation)Calculation | $0.0084Claude Code · five short validated tasks | $0.016Codex CLI · effort medium · five short validated tasks | 15 | none recorded | Unclear | No interval or range was recorded for either side, so the gap ($0.0084 vs $0.016) is not tested against run-to-run variation. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
Marks: 95% intervals (Wilson for rates); fastest–slowest run ranges (not intervals)n is shown per side on every rowHollow marks: list-price calculations, not runs
6 headline metrics as the ratio of the two values. None of them separates the sides in the data. Widest ratio: Output tokens per call (Output tokens), 8.7x (Claude Haiku 4.5 larger).
Metric by metric
Both values of a row come from the same chart in the same study. Each row has its own axis. The shaded band is where the two intervals or ranges overlap: a side is ahead only when they do not.
- Claude Haiku 4.5
- GPT-6.1 Sol (Codex CLI)
- 95% interval
- fastest–slowest run (not an interval)
- where the two overlap
- hollow: list-price calculation
These calculations hold each rate fixed and assume independent samples. They are not a power calculation or a paired test. Open the sample-size planner.
Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head
- Pass rate on five validated tasks100% (15/15)n 15100% (15/15)n 15TiePass rate on five validated tasks: Claude Haiku 4.5 100% (15/15) (n 15, 95% interval 80%–100%); GPT-6.1 Sol (Codex CLI) 100% (15/15) (n 15, 95% interval 80%–100%). Tie.
- Total time per call4.43 sn 155.65 sn 15UnclearTotal time per call: Claude Haiku 4.5 4.43 s (n 15, run range 3.2 s–23.6 s); GPT-6.1 Sol (Codex CLI) 5.65 s (n 15, run range 4.1 s–25.5 s). Unclear.
- Time to first useful output3.63 sn 155.05 sn 15UnclearTime to first useful output: Claude Haiku 4.5 3.63 s (n 15, run range 2.8 s–22.3 s); GPT-6.1 Sol (Codex CLI) 5.05 s (n 15, run range 3.4 s–17.8 s). Unclear.
- Input tokens per call: what the CLI sends (Cache read)0n 155,180n 15UnclearInput tokens per call: what the CLI sends (Cache read): Claude Haiku 4.5 0 (n 15); GPT-6.1 Sol (Codex CLI) 5,180 (n 15). Unclear.
- Input tokens per call: what the CLI sends (Other input)3,790n 156,943n 15UnclearInput tokens per call: what the CLI sends (Other input): Claude Haiku 4.5 3,790 (n 15); GPT-6.1 Sol (Codex CLI) 6,943 (n 15). Unclear.
- Output tokens per call (Output tokens)367n 1542n 15UnclearOutput tokens per call (Output tokens): Claude Haiku 4.5 367 (n 15); GPT-6.1 Sol (Codex CLI) 42 (n 15). Unclear.
- List-price cost per call (calculation)Calculation$0.0057n 15$0.010n 15UnclearList-price cost per call (calculation), calculation: Claude Haiku 4.5 $0.0057 (n 15, run range $0.0051–$0.018); GPT-6.1 Sol (Codex CLI) $0.010 (n 15, run range $0.0054–$0.027). Unclear.
- List-price cost per passing answer (calculation)Calculation$0.0084n 15$0.016n 15UnclearList-price cost per passing answer (calculation), calculation: Claude Haiku 4.5 $0.0084 (n 15); GPT-6.1 Sol (Codex CLI) $0.016 (n 15). Unclear.
Haiku vs Sonnet vs Opus vs Fable vs GPT-6.1 Sol on 8 hard tasks
- Pass rate on eight hard tasks (Strict pass)46% (11/24)n 24100% (16/16)n 16GPT-6.1 Sol (Codex CLI) aheadPass rate on eight hard tasks (Strict pass): Claude Haiku 4.5 46% (11/24) (n 24, 95% interval 28%–65%); GPT-6.1 Sol (Codex CLI) 100% (16/16) (n 16, 95% interval 81%–100%). GPT-6.1 Sol (Codex CLI) ahead.
- Pass rate on eight hard tasks (Lenient (format misses counted))67% (16/24)n 24100% (16/16)n 16TiePass rate on eight hard tasks (Lenient (format misses counted)): Claude Haiku 4.5 67% (16/24) (n 24, 95% interval 47%–82%); GPT-6.1 Sol (Codex CLI) 100% (16/16) (n 16, 95% interval 81%–100%). Tie.
Calculation: at these rates, about 20 runs per side would separate them.
- Total time per call on hard tasks (separate batches)39.0 sn 2413.1 sn 16UnclearTotal time per call on hard tasks (separate batches): Claude Haiku 4.5 39.0 s (n 24, run range 15.3 s–75.1 s); GPT-6.1 Sol (Codex CLI) 13.1 s (n 16, run range 8.5 s–61.6 s). Unclear.
- Time to first useful output on hard tasks35.5 sn 2410.2 sn 16UnclearTime to first useful output on hard tasks: Claude Haiku 4.5 35.5 s (n 24, run range 12.9 s–70.3 s); GPT-6.1 Sol (Codex CLI) 10.2 s (n 16, run range 6.1 s–40.4 s). Unclear.
- Output tokens per call on hard tasks (Output tokens)5,064n 24335n 16UnclearOutput tokens per call on hard tasks (Output tokens): Claude Haiku 4.5 5,064 (n 24); GPT-6.1 Sol (Codex CLI) 335 (n 16). Unclear.
- List-price cost per strict pass on hard tasks (calculation)Calculation$0.067n 24$0.026n 16UnclearList-price cost per strict pass on hard tasks (calculation), calculation: Claude Haiku 4.5 $0.067 (n 24); GPT-6.1 Sol (Codex CLI) $0.026 (n 16). Unclear.
Prompt caching and run-to-run consistency in Claude Code and Codex CLI
- Same prompt, 10 times: strict pass rate (Exact number)0% (0/10)n 10100% (10/10)n 10GPT-6.1 Sol (Codex CLI) aheadSame prompt, 10 times: strict pass rate (Exact number): Claude Haiku 4.5 0% (0/10) (n 10, 95% interval 0%–28%); GPT-6.1 Sol (Codex CLI) 100% (10/10) (n 10, 95% interval 72%–100%). GPT-6.1 Sol (Codex CLI) ahead.
- Same prompt, 10 times: strict pass rate (JSON object)10% (1/10)n 10100% (10/10)n 10GPT-6.1 Sol (Codex CLI) aheadSame prompt, 10 times: strict pass rate (JSON object): Claude Haiku 4.5 10% (1/10) (n 10, 95% interval 1.8%–40%); GPT-6.1 Sol (Codex CLI) 100% (10/10) (n 10, 95% interval 72%–100%). GPT-6.1 Sol (Codex CLI) ahead.
- Same prompt, 10 times: strict pass rate (Code fix)100% (10/10)n 10100% (10/10)n 10TieSame prompt, 10 times: strict pass rate (Code fix): Claude Haiku 4.5 100% (10/10) (n 10, 95% interval 72%–100%); GPT-6.1 Sol (Codex CLI) 100% (10/10) (n 10, 95% interval 72%–100%). Tie.
- Same prompt, 10 times: how many different answers (Exact number)1n 101n 10TieSame prompt, 10 times: how many different answers (Exact number): Claude Haiku 4.5 1 (n 10); GPT-6.1 Sol (Codex CLI) 1 (n 10). Tie.
- Same prompt, 10 times: how many different answers (JSON object)1n 101n 10TieSame prompt, 10 times: how many different answers (JSON object): Claude Haiku 4.5 1 (n 10); GPT-6.1 Sol (Codex CLI) 1 (n 10). Tie.
- Same prompt, 10 times: how many different answers (Code fix)6n 106n 10TieSame prompt, 10 times: how many different answers (Code fix): Claude Haiku 4.5 6 (n 10); GPT-6.1 Sol (Codex CLI) 6 (n 10). Tie.
- Same prompt, 10 times: time per call (Exact number)5.06 sn 1013.4 sn 10Claude Haiku 4.5 aheadSame prompt, 10 times: time per call (Exact number): Claude Haiku 4.5 5.06 s (n 10, run range 4.4 s–6.2 s); GPT-6.1 Sol (Codex CLI) 13.4 s (n 10, run range 12.3 s–18 s). Claude Haiku 4.5 ahead.
- Same prompt, 10 times: time per call (JSON object)7.03 sn 106.42 sn 10UnclearSame prompt, 10 times: time per call (JSON object): Claude Haiku 4.5 7.03 s (n 10, run range 5.3 s–12.3 s); GPT-6.1 Sol (Codex CLI) 6.42 s (n 10, run range 5.3 s–8.3 s). Unclear.
- Same prompt, 10 times: time per call (Code fix)5.95 sn 1011.3 sn 10Claude Haiku 4.5 aheadSame prompt, 10 times: time per call (Code fix): Claude Haiku 4.5 5.95 s (n 10, run range 4.9 s–7.3 s); GPT-6.1 Sol (Codex CLI) 11.3 s (n 10, run range 9.1 s–14.9 s). Claude Haiku 4.5 ahead.
Does a JSON schema stop format misses? Instructions vs schema mode in Claude Code and Codex CLI
- Does a JSON schema raise the pass rate? Instructions vs schema mode (Strict pass: the whole reply is the right JSON)Calculation0% (0/24)n 24100% (12/12)n 12GPT-6.1 Sol (Codex CLI) aheadDoes a JSON schema raise the pass rate? Instructions vs schema mode (Strict pass: the whole reply is the right JSON), calculation: Claude Haiku 4.5 0% (0/24) (n 24, 95% interval 0%–14%); GPT-6.1 Sol (Codex CLI) 100% (12/12) (n 12, 95% interval 76%–100%). GPT-6.1 Sol (Codex CLI) ahead.
- Does a JSON schema raise the pass rate? Instructions vs schema mode (Right answer in any format (strict pass or format miss))Calculation71% (17/24)n 24100% (12/12)n 12TieDoes a JSON schema raise the pass rate? Instructions vs schema mode (Right answer in any format (strict pass or format miss)), calculation: Claude Haiku 4.5 71% (17/24) (n 24, 95% interval 51%–85%); GPT-6.1 Sol (Codex CLI) 100% (12/12) (n 12, 95% interval 76%–100%). Tie.
- What each call produced: strict pass, format miss, wrong values or error (Strict pass)0n 2412n 12UnclearWhat each call produced: strict pass, format miss, wrong values or error (Strict pass): Claude Haiku 4.5 0 (n 24); GPT-6.1 Sol (Codex CLI) 12 (n 12). Unclear.
- What each call produced: strict pass, format miss, wrong values or error (Format miss)17n 240n 12UnclearWhat each call produced: strict pass, format miss, wrong values or error (Format miss): Claude Haiku 4.5 17 (n 24); GPT-6.1 Sol (Codex CLI) 0 (n 12). Unclear.
- What each call produced: strict pass, format miss, wrong values or error (Wrong values)7n 240n 12UnclearWhat each call produced: strict pass, format miss, wrong values or error (Wrong values): Claude Haiku 4.5 7 (n 24); GPT-6.1 Sol (Codex CLI) 0 (n 12). Unclear.
- What each call produced: strict pass, format miss, wrong values or error (Error)0n 240n 12TieWhat each call produced: strict pass, format miss, wrong values or error (Error): Claude Haiku 4.5 0 (n 24); GPT-6.1 Sol (Codex CLI) 0 (n 12). Tie.
- Time per call, instructions vs schema mode9.52 sn 246.21 sn 12UnclearTime per call, instructions vs schema mode: Claude Haiku 4.5 9.52 s (n 24, run range 5.7 s–17 s); GPT-6.1 Sol (Codex CLI) 6.21 s (n 12, run range 4.2 s–12.3 s). Unclear.
- Output and reasoning tokens per call, instructions vs schema mode (Median output tokens per call)1,128n 24117n 12UnclearOutput and reasoning tokens per call, instructions vs schema mode (Median output tokens per call): Claude Haiku 4.5 1,128 (n 24); GPT-6.1 Sol (Codex CLI) 117 (n 12). Unclear.
How much of an AI bill is thinking? Reasoning tokens by model and effort
- Reasoning share of output tokens per call on hard tasks (calculation)Calculation91.7%n 2446.3%n 16UnclearReasoning share of output tokens per call on hard tasks (calculation), calculation: Claude Haiku 4.5 91.7% (n 24, run range 76%–99%); GPT-6.1 Sol (Codex CLI) 46.3% (n 16, run range 11%–87%). Unclear.
- List-price cost per call: reasoning, remaining output and input (calculation) (Reasoning (output tokens))Calculation$0.024n 24$0.0023n 16UnclearList-price cost per call: reasoning, remaining output and input (calculation) (Reasoning (output tokens)), calculation: Claude Haiku 4.5 $0.024 (n 24); GPT-6.1 Sol (Codex CLI) $0.0023 (n 16). Unclear.
- List-price cost per call: reasoning, remaining output and input (calculation) (Remaining output (visible-answer estimate))Calculation$0.0018n 24$0.0030n 16UnclearList-price cost per call: reasoning, remaining output and input (calculation) (Remaining output (visible-answer estimate)), calculation: Claude Haiku 4.5 $0.0018 (n 24); GPT-6.1 Sol (Codex CLI) $0.0030 (n 16). Unclear.
- List-price cost per call: reasoning, remaining output and input (calculation) (Input (prompt, cache priced))Calculation$0.0045n 24$0.020n 16UnclearList-price cost per call: reasoning, remaining output and input (calculation) (Input (prompt, cache priced)), calculation: Claude Haiku 4.5 $0.0045 (n 24); GPT-6.1 Sol (Codex CLI) $0.020 (n 16). Unclear.
- Reasoning share on short tasks vs hard tasks (calculation) (Eight hard tasks)Calculation91.7%n 2446.3%n 16UnclearReasoning share on short tasks vs hard tasks (calculation) (Eight hard tasks), calculation: Claude Haiku 4.5 91.7% (n 24, run range 76%–99%); GPT-6.1 Sol (Codex CLI) 46.3% (n 16, run range 11%–87%). Unclear.
- Reasoning share on short tasks vs hard tasks (calculation) (Five short tasks)Calculation90.2%n 1541%n 15UnclearReasoning share on short tasks vs hard tasks (calculation) (Five short tasks), calculation: Claude Haiku 4.5 90.2% (n 15, run range 73%–98%); GPT-6.1 Sol (Codex CLI) 41% (n 15, run range 0%–71%). Unclear.
Where the seconds go: first text, output speed and prompt size for 6 LLMs
- Time to first text: a 250-line answer, six models4.00 sn 43.52 sn 4UnclearTime to first text: a 250-line answer, six models: Claude Haiku 4.5 4.00 s (n 4, run range 2.8 s–6.4 s); GPT-6.1 Sol (Codex CLI) 3.52 s (n 4, run range 2.8 s–4.4 s). Unclear.
- Output speed after the first text: visible tokens per second (calculation)Calculation153n 480n 4UnclearOutput speed after the first text: visible tokens per second (calculation), calculation: Claude Haiku 4.5 153 (n 4, run range 153–216); GPT-6.1 Sol (Codex CLI) 80 (n 4, run range 72–81). Unclear.
- Output speed in characters per second after the first text (calculation)Calculation547n 3323n 4UnclearOutput speed in characters per second after the first text (calculation), calculation: Claude Haiku 4.5 547 (n 3, run range 546–548); GPT-6.1 Sol (Codex CLI) 323 (n 4, run range 291–327). Unclear.
- Time to first text as the prompt grows: 1kCalculation1.93 sn 33.36 sn 3UnclearTime to first text as the prompt grows: 1k, calculation: Claude Haiku 4.5 1.93 s (n 3, run range 1.9 s–2 s); GPT-6.1 Sol (Codex CLI) 3.36 s (n 3, run range 3.4 s–4.8 s). Unclear.
- Time to first text as the prompt grows: 16kCalculation2.27 sn 34.02 sn 3UnclearTime to first text as the prompt grows: 16k, calculation: Claude Haiku 4.5 2.27 s (n 3, run range 2.2 s–2.5 s); GPT-6.1 Sol (Codex CLI) 4.02 s (n 3, run range 3.3 s–4.3 s). Unclear.
- Time to first text as the prompt grows: 64kCalculation2.78 sn 33.93 sn 3UnclearTime to first text as the prompt grows: 64k, calculation: Claude Haiku 4.5 2.78 s (n 3, run range 2.5 s–2.9 s); GPT-6.1 Sol (Codex CLI) 3.93 s (n 3, run range 3.4 s–4.4 s). Unclear.
- Total time per call by prompt size (1k prompt)2.34 sn 33.43 sn 3UnclearTotal time per call by prompt size (1k prompt): Claude Haiku 4.5 2.34 s (n 3, run range 2.2 s–2.5 s); GPT-6.1 Sol (Codex CLI) 3.43 s (n 3, run range 3.4 s–4.9 s). Unclear.
- Total time per call by prompt size (16k prompt)2.79 sn 34.14 sn 3UnclearTotal time per call by prompt size (16k prompt): Claude Haiku 4.5 2.79 s (n 3, run range 2.6 s–2.8 s); GPT-6.1 Sol (Codex CLI) 4.14 s (n 3, run range 4 s–4.7 s). Unclear.
- Total time per call by prompt size (64k prompt)3.13 sn 33.96 sn 3UnclearTotal time per call by prompt size (64k prompt): Claude Haiku 4.5 3.13 s (n 3, run range 2.8 s–3.3 s); GPT-6.1 Sol (Codex CLI) 3.96 s (n 3, run range 3.5 s–4.4 s). Unclear.
- Exact lookup answers at the 1k, 16k and 64k prompt-size targets100% (9/9)n 9100% (9/9)n 9TieExact lookup answers at the 1k, 16k and 64k prompt-size targets: Claude Haiku 4.5 100% (9/9) (n 9, 95% interval 70%–100%); GPT-6.1 Sol (Codex CLI) 100% (9/9) (n 9, 95% interval 70%–100%). Tie.
GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks
- Pass rate on 4 harder tasks (Strict pass)0% (0/12)n 1269% (11/16)n 16GPT-6.1 Sol (Codex CLI) aheadPass rate on 4 harder tasks (Strict pass): Claude Haiku 4.5 0% (0/12) (n 12, 95% interval 0%–24%); GPT-6.1 Sol (Codex CLI) 69% (11/16) (n 16, 95% interval 44%–86%). GPT-6.1 Sol (Codex CLI) ahead.
- Pass rate on 4 harder tasks (Lenient (format misses counted))0% (0/12)n 1269% (11/16)n 16GPT-6.1 Sol (Codex CLI) aheadPass rate on 4 harder tasks (Lenient (format misses counted)): Claude Haiku 4.5 0% (0/12) (n 12, 95% interval 0%–24%); GPT-6.1 Sol (Codex CLI) 69% (11/16) (n 16, 95% interval 44%–86%). GPT-6.1 Sol (Codex CLI) ahead.
- Calls that tried a tool although tools were off8% (1/12)n 120% (0/16)n 16UnclearCalls that tried a tool although tools were off: Claude Haiku 4.5 8% (1/12) (n 12, 95% interval 1.5%–35%); GPT-6.1 Sol (Codex CLI) 0% (0/16) (n 16, 95% interval 0%–19%). Unclear.
- Strict pass rate by task: 10x10 nonogram0% (0/3)n 375% (3/4)n 4TieStrict pass rate by task: 10x10 nonogram: Claude Haiku 4.5 0% (0/3) (n 3, 95% interval 0%–56%); GPT-6.1 Sol (Codex CLI) 75% (3/4) (n 4, 95% interval 30%–95%). Tie.
Calculation: at these rates, about 6 runs per side would separate them.
- Strict pass rate by task: Sudoku, 22 givens0% (0/3)n 325% (1/4)n 4TieStrict pass rate by task: Sudoku, 22 givens: Claude Haiku 4.5 0% (0/3) (n 3, 95% interval 0%–56%); GPT-6.1 Sol (Codex CLI) 25% (1/4) (n 4, 95% interval 4.6%–70%). Tie.
Calculation: at these rates, about 26 runs per side would separate them.
- Strict pass rate by task: 6x6 Skyscrapers0% (0/3)n 3100% (4/4)n 4TieStrict pass rate by task: 6x6 Skyscrapers: Claude Haiku 4.5 0% (0/3) (n 3, 95% interval 0%–56%); GPT-6.1 Sol (Codex CLI) 100% (4/4) (n 4, 95% interval 51%–100%). Tie.
Calculation: at these rates, about 4 runs per side would separate them.
- Strict pass rate by task: Seeded shuffle output0% (0/3)n 375% (3/4)n 4TieStrict pass rate by task: Seeded shuffle output: Claude Haiku 4.5 0% (0/3) (n 3, 95% interval 0%–56%); GPT-6.1 Sol (Codex CLI) 75% (3/4) (n 4, 95% interval 30%–95%). Tie.
Calculation: at these rates, about 6 runs per side would separate them.
- Total time per call on harder tasks109.0 sn 10120.2 sn 13UnclearTotal time per call on harder tasks: Claude Haiku 4.5 109.0 s (n 10, run range 25.7 s–224 s); GPT-6.1 Sol (Codex CLI) 120.2 s (n 13, run range 46.2 s–273 s). Unclear.
- Output tokens per call on harder tasks (Output tokens)12,508n 104,994n 13UnclearOutput tokens per call on harder tasks (Output tokens): Claude Haiku 4.5 12,508 (n 10, run range 2,965–26,532); GPT-6.1 Sol (Codex CLI) 4,994 (n 13, run range 2,099–13,413). Unclear.
| Metric | Claude Haiku 4.5 | GPT-6.1 Sol (Codex CLI) | n | Interval or range | Outcome | Basis | Study |
|---|---|---|---|---|---|---|---|
| Pass rate on five validated tasks | 100% (15/15)Claude Code · five short validated tasks | 100% (15/15)Codex CLI · effort medium · five short validated tasks | 15 | 95% CI: 80%–100% vs 80%–100% | Tie | The 95% intervals overlap (Claude Haiku 4.5 80% to 100%; GPT-6.1 Sol (Codex CLI) 80% to 100%), so this sample cannot separate them. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| Total time per call | 4.43 sClaude Code · five short validated tasks | 5.65 sCodex CLI · effort medium · five short validated tasks | 15 | range: 3.2 s–23.6 s vs 4.1 s–25.5 s | Unclear | The run ranges (fastest to slowest) overlap (Claude Haiku 4.5 3.16 s to 23.6 s; GPT-6.1 Sol (Codex CLI) 4.10 s to 25.5 s); the medians alone do not show a reliable difference. A range is not a confidence interval. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| Time to first useful output | 3.63 sClaude Code · five short validated tasks | 5.05 sCodex CLI · effort medium · five short validated tasks | 15 | range: 2.8 s–22.3 s vs 3.4 s–17.8 s | Unclear | The run ranges (fastest to slowest) overlap (Claude Haiku 4.5 2.78 s to 22.3 s; GPT-6.1 Sol (Codex CLI) 3.36 s to 17.8 s); the medians alone do not show a reliable difference. A range is not a confidence interval. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| Input tokens per call: what the CLI sends (Cache read) | 0Claude Code · five short validated tasks | 5,180Codex CLI · effort medium · five short validated tasks | 15 | none recorded | Unclear | More or fewer tokens is not better or worse by itself; this row describes behaviour, not a winner. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| Input tokens per call: what the CLI sends (Other input) | 3,790Claude Code · five short validated tasks | 6,943Codex CLI · effort medium · five short validated tasks | 15 | none recorded | Unclear | More or fewer tokens is not better or worse by itself; this row describes behaviour, not a winner. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| Output tokens per call (Output tokens) | 367Claude Code · five short validated tasks | 42Codex CLI · effort medium · five short validated tasks | 15 | none recorded | Unclear | More or fewer tokens is not better or worse by itself; this row describes behaviour, not a winner. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| List-price cost per call (calculation)Calculation | $0.0057Claude Code · five short validated tasks | $0.010Codex CLI · effort medium · five short validated tasks | 15 | range: $0.0051–$0.018 vs $0.0054–$0.027 | Unclear | The run ranges (fastest to slowest) overlap (Claude Haiku 4.5 $0.0051 to $0.018; GPT-6.1 Sol (Codex CLI) $0.0054 to $0.027); the medians alone do not show a reliable difference. A range is not a confidence interval. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| List-price cost per passing answer (calculation)Calculation | $0.0084Claude Code · five short validated tasks | $0.016Codex CLI · effort medium · five short validated tasks | 15 | none recorded | Unclear | No interval or range was recorded for either side, so the gap ($0.0084 vs $0.016) is not tested against run-to-run variation. | Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head |
| Pass rate on eight hard tasks (Strict pass) | 46% (11/24)Claude Code · eight hard validated tasks | 100% (16/16)Codex CLI · effort medium · eight hard validated tasks | 24 / 16 | 95% CI: 28%–65% vs 81%–100% | GPT-6.1 Sol (Codex CLI) ahead | The 95% intervals do not overlap (Claude Haiku 4.5 28% to 65%; GPT-6.1 Sol (Codex CLI) 81% to 100%). | Haiku vs Sonnet vs Opus vs Fable vs GPT-6.1 Sol on 8 hard tasks |
| Pass rate on eight hard tasks (Lenient (format misses counted)) | 67% (16/24)Claude Code · eight hard validated tasks | 100% (16/16)Codex CLI · effort medium · eight hard validated tasks | 24 / 16 | 95% CI: 47%–82% vs 81%–100% | Tie | The 95% intervals overlap (Claude Haiku 4.5 47% to 82%; GPT-6.1 Sol (Codex CLI) 81% to 100%), so this sample cannot separate them. | Haiku vs Sonnet vs Opus vs Fable vs GPT-6.1 Sol on 8 hard tasks |
| Total time per call on hard tasks (separate batches) | 39.0 sClaude Code · eight hard validated tasks | 13.1 sCodex CLI · effort medium · eight hard validated tasks | 24 / 16 | range: 15.3 s–75.1 s vs 8.5 s–61.6 s | Unclear | The run ranges (fastest to slowest) overlap (Claude Haiku 4.5 15.3 s to 75.1 s; GPT-6.1 Sol (Codex CLI) 8.54 s to 61.6 s); the medians alone do not show a reliable difference. A range is not a confidence interval. | Haiku vs Sonnet vs Opus vs Fable vs GPT-6.1 Sol on 8 hard tasks |
| Time to first useful output on hard tasks | 35.5 sClaude Code · eight hard validated tasks | 10.2 sCodex CLI · effort medium · eight hard validated tasks | 24 / 16 | range: 12.9 s–70.3 s vs 6.1 s–40.4 s | Unclear | The run ranges (fastest to slowest) overlap (Claude Haiku 4.5 12.9 s to 70.3 s; GPT-6.1 Sol (Codex CLI) 6.09 s to 40.4 s); the medians alone do not show a reliable difference. A range is not a confidence interval. | Haiku vs Sonnet vs Opus vs Fable vs GPT-6.1 Sol on 8 hard tasks |
| Output tokens per call on hard tasks (Output tokens) | 5,064Claude Code · eight hard validated tasks | 335Codex CLI · effort medium · eight hard validated tasks | 24 / 16 | none recorded | Unclear | More or fewer tokens is not better or worse by itself; this row describes behaviour, not a winner. | Haiku vs Sonnet vs Opus vs Fable vs GPT-6.1 Sol on 8 hard tasks |
| List-price cost per strict pass on hard tasks (calculation)Calculation | $0.067Claude Code · eight hard validated tasks | $0.026Codex CLI · effort medium · eight hard validated tasks | 24 / 16 | none recorded | Unclear | No interval or range was recorded for either side, so the gap ($0.067 vs $0.026, 2.6x) is not tested against run-to-run variation. | Haiku vs Sonnet vs Opus vs Fable vs GPT-6.1 Sol on 8 hard tasks |
| Same prompt, 10 times: strict pass rate (Exact number) | 0% (0/10)Claude Code · same prompt repeated 10 times | 100% (10/10)Codex CLI · effort medium · same prompt repeated 10 times | 10 | 95% CI: 0%–28% vs 72%–100% | GPT-6.1 Sol (Codex CLI) ahead | The 95% intervals do not overlap (Claude Haiku 4.5 0% to 28%; GPT-6.1 Sol (Codex CLI) 72% to 100%). | Prompt caching and run-to-run consistency in Claude Code and Codex CLI |
| Same prompt, 10 times: strict pass rate (JSON object) | 10% (1/10)Claude Code · same prompt repeated 10 times | 100% (10/10)Codex CLI · effort medium · same prompt repeated 10 times | 10 | 95% CI: 1.8%–40% vs 72%–100% | GPT-6.1 Sol (Codex CLI) ahead | The 95% intervals do not overlap (Claude Haiku 4.5 2% to 40%; GPT-6.1 Sol (Codex CLI) 72% to 100%). | Prompt caching and run-to-run consistency in Claude Code and Codex CLI |
| Same prompt, 10 times: strict pass rate (Code fix) | 100% (10/10)Claude Code · same prompt repeated 10 times | 100% (10/10)Codex CLI · effort medium · same prompt repeated 10 times | 10 | 95% CI: 72%–100% vs 72%–100% | Tie | The 95% intervals overlap (Claude Haiku 4.5 72% to 100%; GPT-6.1 Sol (Codex CLI) 72% to 100%), so this sample cannot separate them. | Prompt caching and run-to-run consistency in Claude Code and Codex CLI |
| Same prompt, 10 times: how many different answers (Exact number) | 1Claude Code · same prompt repeated 10 times | 1Codex CLI · effort medium · same prompt repeated 10 times | 10 | none recorded | Tie | Same value. More or fewer is not better by itself for this metric. | Prompt caching and run-to-run consistency in Claude Code and Codex CLI |
| Same prompt, 10 times: how many different answers (JSON object) | 1Claude Code · same prompt repeated 10 times | 1Codex CLI · effort medium · same prompt repeated 10 times | 10 | none recorded | Tie | Same value. More or fewer is not better by itself for this metric. | Prompt caching and run-to-run consistency in Claude Code and Codex CLI |
| Same prompt, 10 times: how many different answers (Code fix) | 6Claude Code · same prompt repeated 10 times | 6Codex CLI · effort medium · same prompt repeated 10 times | 10 | none recorded | Tie | Same value. More or fewer is not better by itself for this metric. | Prompt caching and run-to-run consistency in Claude Code and Codex CLI |
| Same prompt, 10 times: time per call (Exact number) | 5.06 sClaude Code · same prompt repeated 10 times | 13.4 sCodex CLI · effort medium · same prompt repeated 10 times | 10 | range: 4.4 s–6.2 s vs 12.3 s–18 s | Claude Haiku 4.5 ahead | The run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 4.42 s to 6.20 s; GPT-6.1 Sol (Codex CLI) 12.3 s to 18.0 s). A range is not a confidence interval. | Prompt caching and run-to-run consistency in Claude Code and Codex CLI |
| Same prompt, 10 times: time per call (JSON object) | 7.03 sClaude Code · same prompt repeated 10 times | 6.42 sCodex CLI · effort medium · same prompt repeated 10 times | 10 | range: 5.3 s–12.3 s vs 5.3 s–8.3 s | Unclear | The run ranges (fastest to slowest) overlap (Claude Haiku 4.5 5.28 s to 12.3 s; GPT-6.1 Sol (Codex CLI) 5.25 s to 8.26 s); the medians alone do not show a reliable difference. A range is not a confidence interval. | Prompt caching and run-to-run consistency in Claude Code and Codex CLI |
| Same prompt, 10 times: time per call (Code fix) | 5.95 sClaude Code · same prompt repeated 10 times | 11.3 sCodex CLI · effort medium · same prompt repeated 10 times | 10 | range: 4.9 s–7.3 s vs 9.1 s–14.9 s | Claude Haiku 4.5 ahead | The run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 4.89 s to 7.33 s; GPT-6.1 Sol (Codex CLI) 9.08 s to 14.8 s). A range is not a confidence interval. | Prompt caching and run-to-run consistency in Claude Code and Codex CLI |
| Does a JSON schema raise the pass rate? Instructions vs schema mode (Strict pass: the whole reply is the right JSON)Calculation | 0% (0/24)Claude Code · instructions | 100% (12/12)Codex CLI · effort low · instructions | 24 / 12 | 95% CI: 0%–14% vs 76%–100% | GPT-6.1 Sol (Codex CLI) ahead | The 95% intervals do not overlap (Claude Haiku 4.5 0% to 14%; GPT-6.1 Sol (Codex CLI) 76% to 100%). | Does a JSON schema stop format misses? Instructions vs schema mode in Claude Code and Codex CLI |
| Does a JSON schema raise the pass rate? Instructions vs schema mode (Right answer in any format (strict pass or format miss))Calculation | 71% (17/24)Claude Code · instructions | 100% (12/12)Codex CLI · effort low · instructions | 24 / 12 | 95% CI: 51%–85% vs 76%–100% | Tie | The 95% intervals overlap (Claude Haiku 4.5 51% to 85%; GPT-6.1 Sol (Codex CLI) 76% to 100%), so this sample cannot separate them. | Does a JSON schema stop format misses? Instructions vs schema mode in Claude Code and Codex CLI |
| What each call produced: strict pass, format miss, wrong values or error (Strict pass) | 0Claude Code · instructions | 12Codex CLI · effort low · instructions | 24 / 12 | none recorded | Unclear | More or fewer count is not better or worse by itself; this row describes behaviour, not a winner. | Does a JSON schema stop format misses? Instructions vs schema mode in Claude Code and Codex CLI |
| What each call produced: strict pass, format miss, wrong values or error (Format miss) | 17Claude Code · instructions | 0Codex CLI · effort low · instructions | 24 / 12 | none recorded | Unclear | More or fewer count is not better or worse by itself; this row describes behaviour, not a winner. | Does a JSON schema stop format misses? Instructions vs schema mode in Claude Code and Codex CLI |
| What each call produced: strict pass, format miss, wrong values or error (Wrong values) | 7Claude Code · instructions | 0Codex CLI · effort low · instructions | 24 / 12 | none recorded | Unclear | More or fewer count is not better or worse by itself; this row describes behaviour, not a winner. | Does a JSON schema stop format misses? Instructions vs schema mode in Claude Code and Codex CLI |
| What each call produced: strict pass, format miss, wrong values or error (Error) | 0Claude Code · instructions | 0Codex CLI · effort low · instructions | 24 / 12 | none recorded | Tie | Same value. More or fewer is not better by itself for this metric. | Does a JSON schema stop format misses? Instructions vs schema mode in Claude Code and Codex CLI |
| Time per call, instructions vs schema mode | 9.52 sClaude Code · instructions | 6.21 sCodex CLI · effort low · instructions | 24 / 12 | range: 5.7 s–17 s vs 4.2 s–12.3 s | Unclear | The run ranges (fastest to slowest) overlap (Claude Haiku 4.5 5.67 s to 17.0 s; GPT-6.1 Sol (Codex CLI) 4.20 s to 12.3 s); the medians alone do not show a reliable difference. A range is not a confidence interval. | Does a JSON schema stop format misses? Instructions vs schema mode in Claude Code and Codex CLI |
| Output and reasoning tokens per call, instructions vs schema mode (Median output tokens per call) | 1,128Claude Code · instructions | 117Codex CLI · effort low · instructions | 24 / 12 | none recorded | Unclear | More or fewer tokens is not better or worse by itself; this row describes behaviour, not a winner. | Does a JSON schema stop format misses? Instructions vs schema mode in Claude Code and Codex CLI |
| Reasoning share of output tokens per call on hard tasks (calculation)Calculation | 91.7%Claude Code | 46.3%Codex CLI · effort medium | 24 / 16 | range: 76%–99% vs 11%–87% | Unclear | More or fewer percent is not better or worse by itself; this row describes behaviour, not a winner. | How much of an AI bill is thinking? Reasoning tokens by model and effort |
| List-price cost per call: reasoning, remaining output and input (calculation) (Reasoning (output tokens))Calculation | $0.024Claude Code | $0.0023Codex CLI · effort medium | 24 / 16 | none recorded | Unclear | More or fewer usd is not better or worse by itself; this row describes behaviour, not a winner. | How much of an AI bill is thinking? Reasoning tokens by model and effort |
| List-price cost per call: reasoning, remaining output and input (calculation) (Remaining output (visible-answer estimate))Calculation | $0.0018Claude Code | $0.0030Codex CLI · effort medium | 24 / 16 | none recorded | Unclear | More or fewer usd is not better or worse by itself; this row describes behaviour, not a winner. | How much of an AI bill is thinking? Reasoning tokens by model and effort |
| List-price cost per call: reasoning, remaining output and input (calculation) (Input (prompt, cache priced))Calculation | $0.0045Claude Code | $0.020Codex CLI · effort medium | 24 / 16 | none recorded | Unclear | More or fewer usd is not better or worse by itself; this row describes behaviour, not a winner. | How much of an AI bill is thinking? Reasoning tokens by model and effort |
| Reasoning share on short tasks vs hard tasks (calculation) (Eight hard tasks)Calculation | 91.7%Claude Code | 46.3%Codex CLI · effort medium | 24 / 16 | range: 76%–99% vs 11%–87% | Unclear | More or fewer percent is not better or worse by itself; this row describes behaviour, not a winner. | How much of an AI bill is thinking? Reasoning tokens by model and effort |
| Reasoning share on short tasks vs hard tasks (calculation) (Five short tasks)Calculation | 90.2%Claude Code | 41%Codex CLI · effort medium | 15 | range: 73%–98% vs 0%–71% | Unclear | More or fewer percent is not better or worse by itself; this row describes behaviour, not a winner. | How much of an AI bill is thinking? Reasoning tokens by model and effort |
| Time to first text: a 250-line answer, six models | 4.00 sClaude Code | 3.52 sCodex CLI · effort low | 4 | range: 2.8 s–6.4 s vs 2.8 s–4.4 s | Unclear | The run ranges (fastest to slowest) overlap (Claude Haiku 4.5 2.84 s to 6.38 s; GPT-6.1 Sol (Codex CLI) 2.75 s to 4.42 s); the medians alone do not show a reliable difference. A range is not a confidence interval. | Where the seconds go: first text, output speed and prompt size for 6 LLMs |
| Output speed after the first text: visible tokens per second (calculation)Calculation | 153Claude Code | 80Codex CLI · effort low | 4 | range: 153–216 vs 72–81 | Unclear | More or fewer tokens is not better or worse by itself; this row describes behaviour, not a winner. | Where the seconds go: first text, output speed and prompt size for 6 LLMs |
| Output speed in characters per second after the first text (calculation)Calculation | 547Claude Code | 323Codex CLI · effort low | 3 / 4 | range: 546–548 vs 291–327 | Unclear | More or fewer count is not better or worse by itself; this row describes behaviour, not a winner. | Where the seconds go: first text, output speed and prompt size for 6 LLMs |
| Time to first text as the prompt grows: 1kCalculation | 1.93 sClaude Code | 3.36 sCodex CLI · effort low | 3 | range: 1.9 s–2 s vs 3.4 s–4.8 s | Unclear | Only 3 runs per side; the run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 1.85 s to 2.04 s; GPT-6.1 Sol (Codex CLI) 3.36 s to 4.75 s), but 3 runs cannot show a reliable difference. A range is not a confidence interval. | Where the seconds go: first text, output speed and prompt size for 6 LLMs |
| Time to first text as the prompt grows: 16kCalculation | 2.27 sClaude Code | 4.02 sCodex CLI · effort low | 3 | range: 2.2 s–2.5 s vs 3.3 s–4.3 s | Unclear | Only 3 runs per side; the run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 2.22 s to 2.47 s; GPT-6.1 Sol (Codex CLI) 3.30 s to 4.28 s), but 3 runs cannot show a reliable difference. A range is not a confidence interval. | Where the seconds go: first text, output speed and prompt size for 6 LLMs |
| Time to first text as the prompt grows: 64kCalculation | 2.78 sClaude Code | 3.93 sCodex CLI · effort low | 3 | range: 2.5 s–2.9 s vs 3.4 s–4.4 s | Unclear | Only 3 runs per side; the run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 2.45 s to 2.89 s; GPT-6.1 Sol (Codex CLI) 3.42 s to 4.38 s), but 3 runs cannot show a reliable difference. A range is not a confidence interval. | Where the seconds go: first text, output speed and prompt size for 6 LLMs |
| Total time per call by prompt size (1k prompt) | 2.34 sClaude Code | 3.43 sCodex CLI · effort low | 3 | range: 2.2 s–2.5 s vs 3.4 s–4.9 s | Unclear | Only 3 runs per side; the run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 2.22 s to 2.46 s; GPT-6.1 Sol (Codex CLI) 3.43 s to 4.92 s), but 3 runs cannot show a reliable difference. A range is not a confidence interval. | Where the seconds go: first text, output speed and prompt size for 6 LLMs |
| Total time per call by prompt size (16k prompt) | 2.79 sClaude Code | 4.14 sCodex CLI · effort low | 3 | range: 2.6 s–2.8 s vs 4 s–4.7 s | Unclear | Only 3 runs per side; the run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 2.58 s to 2.84 s; GPT-6.1 Sol (Codex CLI) 3.96 s to 4.68 s), but 3 runs cannot show a reliable difference. A range is not a confidence interval. | Where the seconds go: first text, output speed and prompt size for 6 LLMs |
| Total time per call by prompt size (64k prompt) | 3.13 sClaude Code | 3.96 sCodex CLI · effort low | 3 | range: 2.8 s–3.3 s vs 3.5 s–4.4 s | Unclear | Only 3 runs per side; the run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 2.84 s to 3.28 s; GPT-6.1 Sol (Codex CLI) 3.47 s to 4.44 s), but 3 runs cannot show a reliable difference. A range is not a confidence interval. | Where the seconds go: first text, output speed and prompt size for 6 LLMs |
| Exact lookup answers at the 1k, 16k and 64k prompt-size targets | 100% (9/9)Claude Code | 100% (9/9)Codex CLI · effort low | 9 | 95% CI: 70%–100% vs 70%–100% | Tie | The 95% intervals overlap (Claude Haiku 4.5 70% to 100%; GPT-6.1 Sol (Codex CLI) 70% to 100%), so this sample cannot separate them. | Where the seconds go: first text, output speed and prompt size for 6 LLMs |
| Pass rate on 4 harder tasks (Strict pass) | 0% (0/12)Claude Code | 69% (11/16)Codex CLI · effort medium | 12 / 16 | 95% CI: 0%–24% vs 44%–86% | GPT-6.1 Sol (Codex CLI) ahead | The 95% intervals do not overlap (Claude Haiku 4.5 0% to 24%; GPT-6.1 Sol (Codex CLI) 44% to 86%). | GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks |
| Pass rate on 4 harder tasks (Lenient (format misses counted)) | 0% (0/12)Claude Code | 69% (11/16)Codex CLI · effort medium | 12 / 16 | 95% CI: 0%–24% vs 44%–86% | GPT-6.1 Sol (Codex CLI) ahead | The 95% intervals do not overlap (Claude Haiku 4.5 0% to 24%; GPT-6.1 Sol (Codex CLI) 44% to 86%). | GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks |
| Calls that tried a tool although tools were off | 8% (1/12)Claude Code | 0% (0/16)Codex CLI · effort medium | 12 / 16 | 95% CI: 1.5%–35% vs 0%–19% | Unclear | More or fewer rate is not better or worse by itself; this row describes behaviour, not a winner. | GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks |
| Strict pass rate by task: 10x10 nonogram | 0% (0/3)Claude Code | 75% (3/4)Codex CLI · effort medium | 3 / 4 | 95% CI: 0%–56% vs 30%–95% | Tie | The 95% intervals overlap (Claude Haiku 4.5 0% to 56%; GPT-6.1 Sol (Codex CLI) 30% to 95%), so this sample cannot separate them. | GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks |
| Strict pass rate by task: Sudoku, 22 givens | 0% (0/3)Claude Code | 25% (1/4)Codex CLI · effort medium | 3 / 4 | 95% CI: 0%–56% vs 4.6%–70% | Tie | The 95% intervals overlap (Claude Haiku 4.5 0% to 56%; GPT-6.1 Sol (Codex CLI) 5% to 70%), so this sample cannot separate them. | GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks |
| Strict pass rate by task: 6x6 Skyscrapers | 0% (0/3)Claude Code | 100% (4/4)Codex CLI · effort medium | 3 / 4 | 95% CI: 0%–56% vs 51%–100% | Tie | The 95% intervals overlap (Claude Haiku 4.5 0% to 56%; GPT-6.1 Sol (Codex CLI) 51% to 100%), so this sample cannot separate them. | GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks |
| Strict pass rate by task: Seeded shuffle output | 0% (0/3)Claude Code | 75% (3/4)Codex CLI · effort medium | 3 / 4 | 95% CI: 0%–56% vs 30%–95% | Tie | The 95% intervals overlap (Claude Haiku 4.5 0% to 56%; GPT-6.1 Sol (Codex CLI) 30% to 95%), so this sample cannot separate them. | GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks |
| Total time per call on harder tasks | 109.0 sClaude Code | 120.2 sCodex CLI · effort medium | 10 / 13 | range: 25.7 s–224 s vs 46.2 s–273 s | Unclear | The run ranges (fastest to slowest) overlap (Claude Haiku 4.5 25.7 s to 223.9 s; GPT-6.1 Sol (Codex CLI) 46.2 s to 273.5 s); the medians alone do not show a reliable difference. A range is not a confidence interval. | GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks |
| Output tokens per call on harder tasks (Output tokens) | 12,508Claude Code | 4,994Codex CLI · effort medium | 10 / 13 | range: 2,965–26,532 vs 2,099–13,413 | Unclear | More or fewer tokens is not better or worse by itself; this row describes behaviour, not a winner. | GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks |
Marks: 95% intervals (Wilson for rates); fastest–slowest run ranges (not intervals)n is shown per side on every rowHollow marks: list-price calculations, not runs
56 rows from 7 studies. Claude Haiku 4.5 ahead on 2, GPT-6.1 Sol (Codex CLI) ahead on 6; 13 ties, 35 unclear. A side is ahead only where the intervals or ranges do not overlap.
When to pick which
Only from the rows above. A tie is not a reason to pick either side.
When to pick Claude Haiku 4.5
- List-price cost per call (calculation): $0.0057 vs $0.010. A list-price calculation, not a measured difference. Calculation
- List-price cost per passing answer (calculation): $0.0084 vs $0.016. A list-price calculation, not a measured difference. Calculation
- Same prompt, 10 times: time per call (Exact number): 5.06 s vs 13.4 s. The run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 4.42 s to 6.20 s; GPT-6.1 Sol (Codex CLI) 12.3 s to 18.0 s). A range is not a confidence interval.
- Same prompt, 10 times: time per call (Code fix): 5.95 s vs 11.3 s. The run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 4.89 s to 7.33 s; GPT-6.1 Sol (Codex CLI) 9.08 s to 14.8 s). A range is not a confidence interval.
- List-price cost per call: reasoning, remaining output and input (calculation) (Remaining output (visible-answer estimate)): $0.0018 vs $0.0030. A list-price calculation, not a measured difference. Calculation
- List-price cost per call: reasoning, remaining output and input (calculation) (Input (prompt, cache priced)): $0.0045 vs $0.020. A list-price calculation, not a measured difference. Calculation
- Time to first text as the prompt grows: 1k: 1.93 s vs 3.36 s. A list-price calculation, not a measured difference. Calculation
- Time to first text as the prompt grows: 16k: 2.27 s vs 4.02 s. A list-price calculation, not a measured difference. Calculation
When to pick GPT-6.1 Sol (Codex CLI)
- Pass rate on eight hard tasks (Strict pass): 100% (16/16) vs 46% (11/24). The 95% intervals do not overlap (Claude Haiku 4.5 28% to 65%; GPT-6.1 Sol (Codex CLI) 81% to 100%).
- List-price cost per strict pass on hard tasks (calculation): $0.026 vs $0.067. A list-price calculation, not a measured difference. Calculation
- Same prompt, 10 times: strict pass rate (Exact number): 100% (10/10) vs 0% (0/10). The 95% intervals do not overlap (Claude Haiku 4.5 0% to 28%; GPT-6.1 Sol (Codex CLI) 72% to 100%).
- Same prompt, 10 times: strict pass rate (JSON object): 100% (10/10) vs 10% (1/10). The 95% intervals do not overlap (Claude Haiku 4.5 2% to 40%; GPT-6.1 Sol (Codex CLI) 72% to 100%).
- Does a JSON schema raise the pass rate? Instructions vs schema mode (Strict pass: the whole reply is the right JSON): 100% (12/12) vs 0% (0/24). The 95% intervals do not overlap (Claude Haiku 4.5 0% to 14%; GPT-6.1 Sol (Codex CLI) 76% to 100%).
- List-price cost per call: reasoning, remaining output and input (calculation) (Reasoning (output tokens)): $0.0023 vs $0.024. A list-price calculation, not a measured difference. Calculation
- Pass rate on 4 harder tasks (Strict pass): 69% (11/16) vs 0% (0/12). The 95% intervals do not overlap (Claude Haiku 4.5 0% to 24%; GPT-6.1 Sol (Codex CLI) 44% to 86%).
- Pass rate on 4 harder tasks (Lenient (format misses counted)): 69% (11/16) vs 0% (0/12). The 95% intervals do not overlap (Claude Haiku 4.5 0% to 24%; GPT-6.1 Sol (Codex CLI) 44% to 86%).
Side by side
The study charts, showing only these two. Open a study for every configuration.
| Item | Pass rate | 95% interval | n |
|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 100% | 80%–100% | 15 |
| GPT-6.1 Sol (high) · Codex CLI | 100% | 80%–100% | 15 |
2 rows. All at 100%.
NotesWhiskers: 95% Wilson intervaln = 15 per row
Every call counts; failures and timeouts are non-passes
Whiskers are 95% Wilson intervals. The tasks are short and most configurations pass nearly all of them, so pass rate does not separate the models here.
Source: Provider head-to-head: Claude Code models vs Codex efforts
Every lane’s run range overlaps another lane’s, so the chart shows no finish order.
| Item | Total time per call | Range (lowest–highest run) | n |
|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 4.4 s | 3.2 s–23.6 s | 15 |
| GPT-6.1 Sol (medium) · Codex CLI | 5.7 s | 4.1 s–25.5 s | 15 |
2 rows. Slowest GPT-6.1 Sol (medium) · Codex CLI 5.7 s (range 4.1 s–25.5 s, n 15). Fastest Claude Haiku 4.5 · Claude Code 4.4 s (range 3.2 s–23.6 s, n 15). All run ranges overlap.
NotesLines: fastest–slowest run (not an interval)n = 15 per row
Median per configuration; whiskers = fastest and slowest call
One host, one network, one day. Whiskers are a range, not a confidence interval.
Source: Provider head-to-head: Claude Code models vs Codex efforts
Every lane’s run range overlaps another lane’s, so the chart shows no finish order.
| Item | Time to first useful output | Range (lowest–highest run) | n |
|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 3.6 s | 2.8 s–22.3 s | 15 |
| GPT-6.1 Sol (medium) · Codex CLI | 5.1 s | 3.4 s–17.8 s | 15 |
2 rows. Slowest GPT-6.1 Sol (medium) · Codex CLI 5.1 s (range 3.4 s–17.8 s, n 15). Fastest Claude Haiku 4.5 · Claude Code 3.6 s (range 2.8 s–22.3 s, n 15). All run ranges overlap.
NotesLines: fastest–slowest run (not an interval)n = 15 per row
Median per configuration; whiskers = fastest and slowest call
One host, one network, one day. Whiskers are a range, not a confidence interval.
Source: Provider head-to-head: Claude Code models vs Codex efforts
- Cache read
- Other input
Totals are the sum of the parts shown. Shares are calculated from the same values.
| Item | Cache read | Other input | n |
|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 0 | 3,790 | 15 |
| GPT-6.1 Sol (medium) · Codex CLI | 5,180 | 6,943 | 15 |
2 rows, 2 series: Cache read, Other input. Cache read: highest GPT-6.1 Sol (medium) · Codex CLI 5,180 (n 15). Lowest Claude Haiku 4.5 · Claude Code 0 (n 15). Other input: highest GPT-6.1 Sol (medium) · Codex CLI 6,943 (n 15). Lowest Claude Haiku 4.5 · Claude Code 3,790 (n 15).
Notesn = 15 per row
Mean per call, split into prompt-cache reads and other input
The prompts are a few hundred tokens; most input is the CLI’s own system prompt and tool context. Input counts include cache reads, as the vendors report them.
Source: Provider head-to-head: Claude Code models vs Codex efforts
- Output tokens
- of which reasoning tokens (inner bar)
| Item | Output tokens | Reasoning tokens | n |
|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 367 | 297 | 15 |
| GPT-6.1 Sol (high) · Codex CLI | 42 | 21 | 15 |
2 rows, 2 series: Output tokens, Reasoning tokens. Output tokens: highest Claude Haiku 4.5 · Claude Code 367 (n 15). Lowest GPT-6.1 Sol (high) · Codex CLI 42 (n 15). Reasoning tokens: highest Claude Haiku 4.5 · Claude Code 297 (n 15). Lowest GPT-6.1 Sol (high) · Codex CLI 21 (n 15).
Notesn = 15 per row
Median per configuration; reasoning tokens where the CLI reports them
Vendors count reasoning differently; compare within a vendor first. A median of 0 can mean the CLI did not report reasoning for most calls.
Source: Provider head-to-head: Claude Code models vs Codex efforts
| Item | Cost per call | Range (lowest–highest run) | n |
|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | $0.0057 | $0.0051–$0.018 | 15 |
| GPT-6.1 Sol (medium) · Codex CLI | $0.01 | $0.0054–$0.027 | 15 |
List-price calculation, not a run. 2 rows. Highest GPT-6.1 Sol (medium) · Codex CLI $0.01 (range $0.0054–$0.027, n 15). Lowest Claude Haiku 4.5 · Claude Code $0.0057 (range $0.0051–$0.018, n 15). All run ranges overlap.
NotesLines: lowest–highest run (not an interval)n = 15 per row
Reported tokens × list price; the calls ran on subscriptions
Calculation, not a bill: the calls ran on flat subscriptions. Whiskers = cheapest and most expensive call.
Sources: Provider head-to-head: Claude Code models vs Codex efforts, Repricing calculation, Anthropic list prices (Claude models), OpenAI list prices
| Item | Cost per pass | n |
|---|---|---|
| Claude Haiku 4.5 · Claude Code | $0.0084 | 15 |
| GPT-6.1 Sol (medium) · Codex CLI | $0.016 | 15 |
List-price calculation, not a run. 2 rows. Highest GPT-6.1 Sol (medium) · Codex CLI $0.016 (n 15). Lowest Claude Haiku 4.5 · Claude Code $0.0084 (n 15).
Notesn = 15 per row
All calls in a configuration, failures included, divided by its passes
Calculation, not a bill: reported tokens × list price; the calls ran on flat subscriptions. A failed call still costs, so a lower pass rate raises the cost per pass. Highlighted bars are on the speed/cost/quality frontier.
Sources: Provider head-to-head: Claude Code models vs Codex efforts, Repricing calculation, Anthropic list prices (Claude models), OpenAI list prices
- Strict pass
- Lenient (format misses counted)
| Item | Strict pass | Lenient (format misses counted) | 95% interval | n |
|---|---|---|---|---|
| GPT-6.1 Sol (medium) · Codex CLI | 100% | 100% | Strict pass: 81%–100%; Lenient (format misses counted): 81%–100% | 16 |
| Claude Haiku 4.5 · Claude Code | 46% | 67% | Strict pass: 28%–65%; Lenient (format misses counted): 47%–82% | 24 |
2 rows, 2 series: Strict pass, Lenient (format misses counted). Strict pass: highest GPT-6.1 Sol (medium) · Codex CLI 100% (95% interval 81%–100%, n 16). Lowest Claude Haiku 4.5 · Claude Code 46% (95% interval 28%–65%, n 24). Not all intervals overlap. Lenient (format misses counted): highest GPT-6.1 Sol (medium) · Codex CLI 100% (95% interval 81%–100%, n 16). Lowest Claude Haiku 4.5 · Claude Code 67% (95% interval 47%–82%, n 24). All intervals overlap.
NotesWhiskers: 95% Wilson intervaln 16–24 per row
Strict: the reply passes as given. Lenient: a correct answer in the wrong format also counts
Whiskers are 95% Wilson intervals. The strict pass is the result; the lenient reading is shown so a reader can see how much is format and how much is a wrong answer. A format miss never counts as a pass.
Source: Provider head-to-head, hard set: eight hard tasks with strict validators
Every lane’s run range overlaps another lane’s, so the chart shows no finish order.
| Item | Total time per call on hard tasks (separate batches) | Range (lowest–highest run) | n |
|---|---|---|---|
| GPT-6.1 Sol (medium) · Codex CLI | 13.1 s | 8.5 s–61.6 s | 16 |
| Claude Haiku 4.5 · Claude Code | 39 s | 15.3 s–75.1 s | 24 |
2 rows. Slowest Claude Haiku 4.5 · Claude Code 39 s (range 15.3 s–75.1 s, n 24). Fastest GPT-6.1 Sol (medium) · Codex CLI 13.1 s (range 8.5 s–61.6 s, n 16). All run ranges overlap.
NotesLines: fastest–slowest run (not an interval)n 16–24 per row
Median per configuration; whiskers = fastest and slowest call
One host and network; the counted Claude and Codex batches ran hours apart. Host load was not controlled. Whiskers are a range, not a confidence interval. Highlighted: configurations that passed every call.
Source: Provider head-to-head, hard set: eight hard tasks with strict validators
Every lane’s run range overlaps another lane’s, so the chart shows no finish order.
| Item | Time to first useful output on hard tasks | Range (lowest–highest run) | n |
|---|---|---|---|
| GPT-6.1 Sol (medium) · Codex CLI | 10.2 s | 6.1 s–40.4 s | 16 |
| Claude Haiku 4.5 · Claude Code | 35.5 s | 12.9 s–70.3 s | 24 |
2 rows. Slowest Claude Haiku 4.5 · Claude Code 35.5 s (range 12.9 s–70.3 s, n 24). Fastest GPT-6.1 Sol (medium) · Codex CLI 10.2 s (range 6.1 s–40.4 s, n 16). All run ranges overlap.
NotesLines: fastest–slowest run (not an interval)n 16–24 per row
Median per configuration; whiskers = fastest and slowest call
One host and network; the counted Claude and Codex batches ran hours apart. Host load was not controlled. Whiskers are a range, not a confidence interval. Highlighted: configurations that passed every call.
Source: Provider head-to-head, hard set: eight hard tasks with strict validators
- Output tokens
- of which reasoning tokens (inner bar)
| Item | Output tokens | Reasoning tokens | n |
|---|---|---|---|
| GPT-6.1 Sol (medium) · Codex CLI | 335 | 150 | 16 |
| Claude Haiku 4.5 · Claude Code | 5,064 | 4,556 | 24 |
2 rows, 2 series: Output tokens, Reasoning tokens. Output tokens: highest Claude Haiku 4.5 · Claude Code 5,064 (n 24). Lowest GPT-6.1 Sol (medium) · Codex CLI 335 (n 16). Reasoning tokens: highest Claude Haiku 4.5 · Claude Code 4,556 (n 24). Lowest GPT-6.1 Sol (medium) · Codex CLI 150 (n 16).
Notesn 16–24 per row
Median per configuration; reasoning tokens as the CLI reports them
Reasoning tokens are part of the output tokens where the CLI reports them. Their content is never captured. More tokens is not better or worse by itself.
Source: Provider head-to-head, hard set: eight hard tasks with strict validators
| Item | Cost per strict pass | n |
|---|---|---|
| GPT-6.1 Sol (medium) · Codex CLI | $0.026 | 16 |
| Claude Haiku 4.5 · Claude Code | $0.067 | 24 |
List-price calculation, not a run. 2 rows. Highest Claude Haiku 4.5 · Claude Code $0.067 (n 24). Lowest GPT-6.1 Sol (medium) · Codex CLI $0.026 (n 16).
Notesn 16–24 per row
All calls in a configuration, failures and format misses included, divided by its strict passes
Calculation, not a bill: reported tokens × list price; the calls ran on a flat subscription. A failed call still costs, so a lower pass rate raises the cost per pass. Highlighted bars are on the quality-vs-cost frontier.
Sources: Provider head-to-head, hard set: eight hard tasks with strict validators, Repricing calculation, Anthropic list prices (Claude models), OpenAI list prices
- Exact number
- JSON object
- Code fix
| Item | Exact number | JSON object | Code fix | 95% interval | n |
|---|---|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 0% | 10% | 100% | Exact number: 0%–28%; JSON object: 1.8%–40%; Code fix: 72%–100% | 10 |
| GPT-6.1 Sol (medium) · Codex CLI | 100% | 100% | 100% | Exact number: 72%–100%; JSON object: 72%–100%; Code fix: 72%–100% | 10 |
2 rows, 3 series: Exact number, JSON object, Code fix. Exact number: highest GPT-6.1 Sol (medium) · Codex CLI 100% (95% interval 72%–100%, n 10). Lowest Claude Haiku 4.5 · Claude Code 0% (95% interval 0%–28%, n 10). Not all intervals overlap. JSON object: highest GPT-6.1 Sol (medium) · Codex CLI 100% (95% interval 72%–100%, n 10). Lowest Claude Haiku 4.5 · Claude Code 10% (95% interval 1.8%–40%, n 10). Not all intervals overlap.
NotesWhiskers: 95% Wilson intervaln = 10 per row
One series per prompt; whiskers are 95% Wilson intervals
Whiskers are 95% Wilson intervals over 10 repetitions. Strict: the whole reply passes the validator. A correct answer in the wrong format (for example in a code fence) is a format miss and never a pass; the table lists format misses apart from wrong answers.
Source: Caching sessions and repeated prompts (Claude Code and Codex CLI)
Exact number
JSON object
Code fix
One panel per series, all on the same axis.
| Item | Exact number | JSON object | Code fix | n |
|---|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 1 | 1 | 6 | 10 |
| GPT-6.1 Sol (medium) · Codex CLI | 1 | 1 | 6 | 10 |
2 rows, 3 series: Exact number, JSON object, Code fix. Exact number: all at 1. JSON object: all at 1.
Notesn = 10 per row
Distinct normalized answers over 10 repetitions (1 = the same answer every time)
Normalized: the last number for the exact-number prompt; key-sorted JSON for the JSON prompt; for the code fix, the code without fences, comments, whitespace, quote style and line-end semicolons. One distinct answer is not the same as a correct answer: an answer can be the same and wrong every time. Different code can be equally correct.
Source: Caching sessions and repeated prompts (Claude Code and Codex CLI)
- Exact number
- JSON object
- Code fix
| Item | Exact number | JSON object | Code fix | Range (lowest–highest run) | n |
|---|---|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 5.1 s | 7 s | 6 s | Exact number: 4.4 s–6.2 s; JSON object: 5.3 s–12.3 s; Code fix: 4.9 s–7.3 s | 10 |
| GPT-6.1 Sol (medium) · Codex CLI | 13.4 s | 6.4 s | 11.3 s | Exact number: 12.3 s–18 s; JSON object: 5.3 s–8.3 s; Code fix: 9.1 s–14.9 s | 10 |
2 rows, 3 series: Exact number, JSON object, Code fix. Exact number: slowest GPT-6.1 Sol (medium) · Codex CLI 13.4 s (range 12.3 s–18 s, n 10). Fastest Claude Haiku 4.5 · Claude Code 5.1 s (range 4.4 s–6.2 s, n 10). Not all run ranges overlap. JSON object: slowest Claude Haiku 4.5 · Claude Code 7 s (range 5.3 s–12.3 s, n 10). Fastest GPT-6.1 Sol (medium) · Codex CLI 6.4 s (range 5.3 s–8.3 s, n 10). All run ranges overlap.
NotesLines: fastest–slowest run (not an interval)n = 10 per row
Median; whiskers = fastest and slowest of 10 calls
Whiskers are a range (fastest and slowest call), not a confidence interval. The interquartile range and the coefficient of variation are in the table. Codex CLI timings include its start-up and its larger system prompt.
Source: Caching sessions and repeated prompts (Claude Code and Codex CLI)
- Strict pass: the whole reply is the right JSON
- Right answer in any format (strict pass or format miss)
| Item | Strict pass: the whole reply is the right JSON | Right answer in any format (strict pass or format miss) | 95% interval | n |
|---|---|---|---|---|
| Claude Haiku 4.5 (instructions) · Claude Code | 0% | 71% | Strict pass: the whole reply is the right JSON: 0%–14%; Right answer in any format (strict pass or format miss): 51%–85% | 24 |
| GPT-6.1 Sol (low, instructions) · Codex CLI | 100% | 100% | Strict pass: the whole reply is the right JSON: 76%–100%; Right answer in any format (strict pass or format miss): 76%–100% | 12 |
List-price calculation, not a run. 2 rows, 2 series: Strict pass: the whole reply is the right JSON, Right answer in any format (strict pass or format miss). Strict pass: the whole reply is the right JSON: highest GPT-6.1 Sol (low, instructions) · Codex CLI 100% (95% interval 76%–100%, n 12). Lowest Claude Haiku 4.5 (instructions) · Claude Code 0% (95% interval 0%–14%, n 24). Not all intervals overlap. Right answer in any format (strict pass or format miss): highest GPT-6.1 Sol (low, instructions) · Codex CLI 100% (95% interval 76%–100%, n 12). Lowest Claude Haiku 4.5 (instructions) · Claude Code 71% (95% interval 51%–85%, n 24). All intervals overlap.
NotesWhiskers: 95% Wilson intervaln 12–24 per row
Three extraction prompts pooled; whiskers are 95% Wilson intervals
Whiskers are 95% Wilson intervals (a calculation) over 24 calls and 12 calls per configuration; every error counts as a fail. Strict: the whole reply parses as JSON and matches the expected answer exactly. A format miss is a right answer inside a code fence or prose, so it is never a strict pass.
Source: JSON schema vs instructions
- Strict pass
- Format miss
- Wrong values
- Error
One square per call; counts at the right are exact and in legend order.
| Item | Strict pass | Format miss | Wrong values | Error | n |
|---|---|---|---|---|---|
| Claude Haiku 4.5 (instructions) · Claude Code | 0 | 17 | 7 | 0 | 24 |
| GPT-6.1 Sol (low, instructions) · Codex CLI | 12 | 0 | 0 | 0 | 12 |
2 rows, 4 series: Strict pass, Format miss, Wrong values, Error. Strict pass: highest GPT-6.1 Sol (low, instructions) · Codex CLI 12 (n 12). Lowest Claude Haiku 4.5 (instructions) · Claude Code 0 (n 24). Format miss: highest Claude Haiku 4.5 (instructions) · Claude Code 17 (n 24). Lowest GPT-6.1 Sol (low, instructions) · Codex CLI 0 (n 12).
Notesn 12–24 per row
Counts of calls per configuration; the three prompts pooled
Counts of calls, not rates; the pass-rate chart carries the same results with 95% intervals. Format miss: the right answer inside a code fence or prose. Wrong values: any other completed reply, with a wrong value, key or type (a reply that sits in a code fence and also has a wrong value is counted here). Error: the call did not complete.
Source: JSON schema vs instructions
Every lane’s run range overlaps another lane’s, so the chart shows no finish order.
| Item | Median time per call (the three prompts pooled) | Range (lowest–highest run) | n |
|---|---|---|---|
| Claude Haiku 4.5 (instructions) · Claude Code | 9.5 s | 5.7 s–17 s | 24 |
| GPT-6.1 Sol (low, instructions) · Codex CLI | 6.2 s | 4.2 s–12.3 s | 12 |
2 rows. Slowest Claude Haiku 4.5 (instructions) · Claude Code 9.5 s (range 5.7 s–17 s, n 24). Fastest GPT-6.1 Sol (low, instructions) · Codex CLI 6.2 s (range 4.2 s–12.3 s, n 12). All run ranges overlap.
NotesLines: fastest–slowest run (not an interval)n 12–24 per row
Median; whiskers = fastest and slowest completed call
Whiskers are a range (fastest and slowest call), not a confidence interval. Wall time from process start to exit, so it includes CLI start-up; Codex CLI timings include its larger system prompt. The three prompts differ in length, which widens every range.
Source: JSON schema vs instructions
- Median output tokens per call
- of which median reasoning tokens per call (thinking) (inner bar)
| Item | Median output tokens per call | Median reasoning tokens per call (thinking) | n |
|---|---|---|---|
| Claude Haiku 4.5 (instructions) · Claude Code | 1,128 | 934 | 24 |
| GPT-6.1 Sol (low, instructions) · Codex CLI | 117 | 21 | 12 |
2 rows, 2 series: Median output tokens per call, Median reasoning tokens per call (thinking). Median output tokens per call: highest Claude Haiku 4.5 (instructions) · Claude Code 1,128 (n 24). Lowest GPT-6.1 Sol (low, instructions) · Codex CLI 117 (n 12). Median reasoning tokens per call (thinking): highest Claude Haiku 4.5 (instructions) · Claude Code 934 (n 24). Lowest GPT-6.1 Sol (low, instructions) · Codex CLI 21 (n 12).
Notesn 12–24 per row
Median per call; ranges and sample sizes are in the note
Output tokens include reasoning tokens. Claude schema-mode output includes the CLI’s structured-output tool call. Input counts include CLI context and are not compared. Ranges (not intervals): Claude Haiku 4.5 (instructions) · Claude Code: output 698 to 2059 (n = 24); reasoning 559 to 1830 (n = 24); Claude Haiku 4.5 (JSON schema) · Claude Code: output 716 to 1462 (n = 24); reasoning 522 to 1187 (n = 24); Claude Sonnet 5.5 (instructions) · Claude Code: output 154 to 456 (n = 12); reasoning 54 to 278 (n = 12); Claude Sonnet 5.5 (JSON schema) · Claude Code: output 273 to 541 (n = 12); reasoning 0 to 260 (n = 12); GPT-6.1 Sol (low, instructions) · Codex CLI: output 69 to 259 (n = 12); reasoning 0 to 60 (n = 12); GPT-6.1 Sol (low, JSON schema) · Codex CLI: output 98 to 181 (n = 12); reasoning 0 to 49 (n = 12).
Source: JSON schema vs instructions
- Reasoning (output tokens)
- Remaining output (visible-answer estimate)
- Input (prompt, cache priced)
Totals are the sum of the parts shown. Shares are calculated from the same values.
| Item | Reasoning (output tokens) | Remaining output (visible-answer estimate) | Input (prompt, cache priced) | n |
|---|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | $0.024 | $0.0018 | $0.0045 | 24 |
| GPT-6.1 Sol (medium) · Codex CLI | $0.0023 | $0.003 | $0.02 | 16 |
List-price calculation, not a run. 2 rows, 3 series: Reasoning (output tokens), Remaining output (visible-answer estimate), Input (prompt, cache priced). Reasoning (output tokens): highest Claude Haiku 4.5 · Claude Code $0.024 (n 24). Lowest GPT-6.1 Sol (medium) · Codex CLI $0.0023 (n 16). Remaining output (visible-answer estimate): highest GPT-6.1 Sol (medium) · Codex CLI $0.003 (n 16). Lowest Claude Haiku 4.5 · Claude Code $0.0018 (n 24).
Notesn 16–24 per row
Mean per call on the hard tasks; the three parts add up to the call
Calculation, not a bill: reported tokens × list price (per million output tokens: Haiku 4.5 $5, Sonnet 5.5 $10, Opus 5.5 $20, Fable 5.1 $50 and GPT-6.1 Sol $10); the calls ran on flat subscriptions. Reasoning and remaining output both use the output price. The remainder estimates visible-answer tokens; its exact meaning depends on the CLI counters. Input is the whole prompt, with cache reads and writes priced as in the hard head-to-head. It includes CLI context; these receipts do not separate task tokens from CLI context. It changes with cache counters. Batch timing and cache behavior were not controlled. Means, not medians, so the parts add up.
Sources: Reasoning token bill (calculation), Provider head-to-head, hard set: eight hard tasks with strict validators, Effort ladder: the hard task set at each effort level, Provider head-to-head: Claude Code models vs Codex efforts, Anthropic list prices (Claude models), OpenAI list prices
- Eight hard tasks
- Five short tasks (square)
Gap labels, Five short tasks vs Eight hard tasks: Five short tasks is x percentage points higher (+) or lower (−) than Eight hard tasks, calculated from the two values shown; lines are the lowest–highest run (not an interval).
| Item | Eight hard tasks | Five short tasks | Range (lowest–highest run) | n |
|---|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 92% | 90% | Eight hard tasks: 76%–99%; Five short tasks: 73%–98% | 24 |
| GPT-6.1 Sol (medium) · Codex CLI | 46% | 41% | Eight hard tasks: 11%–87%; Five short tasks: 0%–71% | 16 |
List-price calculation, not a run. 2 rows, 2 series: Eight hard tasks, Five short tasks. Eight hard tasks: highest Claude Haiku 4.5 · Claude Code 92% (range 76%–99%, n 24). Lowest GPT-6.1 Sol (medium) · Codex CLI 46% (range 11%–87%, n 16). All run ranges overlap. Five short tasks: highest Claude Haiku 4.5 · Claude Code 90% (range 73%–98%, n 15). Lowest GPT-6.1 Sol (medium) · Codex CLI 41% (range 0%–71%, n 15). Not all run ranges overlap.
NotesLines: lowest–highest run (not an interval)n 15–24 per row
Median call per configuration; five short tasks and eight hard tasks
Calculation from reported tokens, not a run: the median of per-call reasoning ÷ output. A median of 0% means at least half of the calls reported 0 reasoning tokens in the receipt. On a route that reports reasoning, we retain a numeric 0 as the recorded counter. It does not prove the model did no internal reasoning. The table says how many calls reported 0. The short tasks are five small validated tasks (a bug fix, a JSON extraction, an arithmetic problem, a refactor and a ticket classification). Per-call ranges are in the tables.
Sources: Reasoning token bill (calculation), Provider head-to-head, hard set: eight hard tasks with strict validators, Effort ladder: the hard task set at each effort level, Provider head-to-head: Claude Code models vs Codex efforts, Anthropic list prices (Claude models), OpenAI list prices
Every lane’s run range overlaps another lane’s, so the chart shows no finish order.
| Item | Time to first text | Range (lowest–highest run) | n |
|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 4 s | 2.8 s–6.4 s | 4 |
| GPT-6.1 Sol (low) · Codex CLI | 3.5 s | 2.8 s–4.4 s | 4 |
2 rows. Slowest Claude Haiku 4.5 · Claude Code 4 s (range 2.8 s–6.4 s, n 4). Fastest GPT-6.1 Sol (low) · Codex CLI 3.5 s (range 2.8 s–4.4 s, n 4). All run ranges overlap.
NotesLines: fastest–slowest run (not an interval)n = 4 per row
Median of 4 calls per model; whiskers = fastest and slowest call
Dot = median; whiskers = fastest and slowest call (a range, not a confidence interval). The clock starts when the CLI starts, so first text includes CLI start-up (see chart cli-startup-tax) and any reasoning before the first word. One Mac, one network, two sessions on one night.
Source: LLM speed anatomy
| Item | Visible tokens per second | Range (lowest–highest run) | n |
|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 153 | 153–216 | 4 |
| GPT-6.1 Sol (low) · Codex CLI | 80 | 72–81 | 4 |
List-price calculation, not a run. 2 rows. Highest Claude Haiku 4.5 · Claude Code 153 (range 153–216, n 4). Lowest GPT-6.1 Sol (low) · Codex CLI 80 (range 72–81, n 4). Not all run ranges overlap.
NotesLines: lowest–highest run (not an interval)n = 4 per row
Median of 4 calls per model; whiskers = slowest and fastest call
Calculation, not a measurement: visible output tokens (the CLI’s output token count minus its reported reasoning tokens) divided by the time from the first text to the end of the call. The denominator includes the CLI’s exit overhead; its size is not measured here. Whiskers are a range of calls, not a confidence interval. The calculation removes reported reasoning tokens. These receipts do not locate all reasoning in time.
Source: LLM speed anatomy
| Item | Characters per second | Range (lowest–highest run) | n |
|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 547 | 546–548 | 3 |
| GPT-6.1 Sol (low) · Codex CLI | 323 | 291–327 | 4 |
List-price calculation, not a run. 2 rows. Highest Claude Haiku 4.5 · Claude Code 547 (range 546–548, n 3). Lowest GPT-6.1 Sol (low) · Codex CLI 323 (range 291–327, n 4). Not all run ranges overlap.
NotesLines: lowest–highest run (not an interval)n 3–4 per row
Only replies that matched all 250 lines; median per model, whiskers = slowest and fastest call
Calculation, not a measurement: the characters of a correct reply (the same text for every model) divided by the time from the first text to the end of the call. Each vendor counts the same text as a different number of tokens, so characters compare across models where tokens do not. The CLI’s exit time is inside that time. Whiskers are a range of calls, not a confidence interval.
Source: LLM speed anatomy
- Claude Haiku 4.5 · Claude Code
- Claude Sonnet 5.5 · Claude Code
- Claude Opus 5.5 · Claude Code
- GPT-6.1 Sol (low) · Codex CLI
| Prompt-size target (approximate Haiku tokens; calibration calculation) | Claude Haiku 4.5 · Claude Code | Claude Sonnet 5.5 · Claude Code | Claude Opus 5.5 · Claude Code | GPT-6.1 Sol (low) · Codex CLI | Range (lowest–highest run) | n |
|---|---|---|---|---|---|---|
| 1k | 1.9 s | 1.5 s | 1.5 s | 3.4 s | Claude Haiku 4.5 · Claude Code: 1.9 s–2 s; Claude Sonnet 5.5 · Claude Code: 1.2 s–1.7 s; Claude Opus 5.5 · Claude Code: 1.5 s–2 s; GPT-6.1 Sol (low) · Codex CLI: 3.4 s–4.8 s | 3 |
| 16k | 2.3 s | 1.8 s | 1.7 s | 4 s | Claude Haiku 4.5 · Claude Code: 2.2 s–2.5 s; Claude Sonnet 5.5 · Claude Code: 1.6 s–2.1 s; Claude Opus 5.5 · Claude Code: 1.7 s–3 s; GPT-6.1 Sol (low) · Codex CLI: 3.3 s–4.3 s | 3 |
| 64k | 2.8 s | 3.1 s | 1.8 s | 3.9 s | Claude Haiku 4.5 · Claude Code: 2.5 s–2.9 s; Claude Sonnet 5.5 · Claude Code: 1.4 s–3.6 s; Claude Opus 5.5 · Claude Code: 1.7 s–3.7 s; GPT-6.1 Sol (low) · Codex CLI: 3.4 s–4.4 s | 3 |
List-price calculation, not a run. 3 rows, 4 series: Claude Haiku 4.5 · Claude Code, Claude Sonnet 5.5 · Claude Code, Claude Opus 5.5 · Claude Code, GPT-6.1 Sol (low) · Codex CLI. Claude Haiku 4.5 · Claude Code: slowest 64k 2.8 s (range 2.5 s–2.9 s, n 3). Fastest 1k 1.9 s (range 1.9 s–2 s, n 3). Not all run ranges overlap. Claude Sonnet 5.5 · Claude Code: slowest 64k 3.1 s (range 1.4 s–3.6 s, n 3). Fastest 1k 1.5 s (range 1.2 s–1.7 s, n 3). All run ranges overlap.
NotesLines: fastest–slowest run (not an interval)n = 3 per row
Median of 3 calls per size; whiskers = fastest and slowest call
Each call used a new ledger seed. Cache-read counts stayed within the short-prompt baseline (see the cache table). This does not identify which tokens were cached. Sizes name the text we send; each model’s reported input tokens are in the table and include the CLI’s own prefix. The size calibration subtracts estimated prefixes from probe input counts; these are calculations, not measured prefix counts for each call. Whiskers are a range of calls, not a confidence interval.
Source: LLM speed anatomy
1k prompt
16k prompt
64k prompt
One panel per series, all on the same axis; whiskers are the fastest–slowest run (not an interval).
| Item | 1k prompt | 16k prompt | 64k prompt | Range (lowest–highest run) | n |
|---|---|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 2.3 s | 2.8 s | 3.1 s | 1k prompt: 2.2 s–2.5 s; 16k prompt: 2.6 s–2.8 s; 64k prompt: 2.8 s–3.3 s | 3 |
| GPT-6.1 Sol (low) · Codex CLI | 3.4 s | 4.1 s | 4 s | 1k prompt: 3.4 s–4.9 s; 16k prompt: 4 s–4.7 s; 64k prompt: 3.5 s–4.4 s | 3 |
2 rows, 3 series: 1k prompt, 16k prompt, 64k prompt. 1k prompt: slowest GPT-6.1 Sol (low) · Codex CLI 3.4 s (range 3.4 s–4.9 s, n 3). Fastest Claude Haiku 4.5 · Claude Code 2.3 s (range 2.2 s–2.5 s, n 3). Not all run ranges overlap. 16k prompt: slowest GPT-6.1 Sol (low) · Codex CLI 4.1 s (range 4 s–4.7 s, n 3). Fastest Claude Haiku 4.5 · Claude Code 2.8 s (range 2.6 s–2.8 s, n 3). Not all run ranges overlap.
NotesLines: fastest–slowest run (not an interval)n = 3 per row
Median of 3 calls per bar; whiskers = fastest and slowest call
Whole call: CLI start-up, first text and the one-line answer. Whiskers are a range of calls, not a confidence interval. Each call used a new ledger.
Source: LLM speed anatomy
| Item | Exact answer | 95% interval | n |
|---|---|---|---|
| Claude Haiku 4.5 · Claude Code | 100% | 70%–100% | 9 |
| GPT-6.1 Sol (low) · Codex CLI | 100% | 70%–100% | 9 |
2 rows. All at 100%.
NotesWhiskers: 95% Wilson intervaln = 9 per row
All sizes together per model; whiskers = 95% Wilson intervals
Whiskers are 95% Wilson intervals. One lookup question per call; a reply with extra words is a format miss, not a pass. With 9 calls per model, a perfect score still has a wide interval.
Source: LLM speed anatomy
- Strict pass
- Lenient (format misses counted)
| Item | Strict pass | Lenient (format misses counted) | 95% interval | n |
|---|---|---|---|---|
| GPT-6.1 Sol (medium) · Codex CLI | 69% | 69% | Strict pass: 44%–86%; Lenient (format misses counted): 44%–86% | 16 |
| Claude Haiku 4.5 · Claude Code | 0% | 0% | Strict pass: 0%–24%; Lenient (format misses counted): 0%–24% | 12 |
2 rows, 2 series: Strict pass, Lenient (format misses counted). Strict pass: highest GPT-6.1 Sol (medium) · Codex CLI 69% (95% interval 44%–86%, n 16). Lowest Claude Haiku 4.5 · Claude Code 0% (95% interval 0%–24%, n 12). Not all intervals overlap. Lenient (format misses counted): highest GPT-6.1 Sol (medium) · Codex CLI 69% (95% interval 44%–86%, n 16). Lowest Claude Haiku 4.5 · Claude Code 0% (95% interval 0%–24%, n 12). Not all intervals overlap.
NotesWhiskers: 95% Wilson intervaln 12–16 per row
Strict: the reply passes as given. Lenient: a correct answer in the wrong format also counts
Whiskers are 95% Wilson intervals. Strict passes decide the result. The lenient reading shows which failures contain a correct answer in the wrong format. A format miss never counts as a pass. The study picked tasks that Sonnet did not pass twice in a pilot. This selection can lower a Sonnet row. Counted calls are new calls.
Source: Harder tasks head-to-head
| Item | Tool attempt | 95% interval | n |
|---|---|---|---|
| GPT-6.1 Sol (medium) · Codex CLI | 0% | 0%–19% | 16 |
| Claude Haiku 4.5 · Claude Code | 8.3% | 1.5%–35% | 12 |
2 rows. Highest Claude Haiku 4.5 · Claude Code 8.3% (95% interval 1.5%–35%, n 12). Lowest GPT-6.1 Sol (medium) · Codex CLI 0% (95% interval 0%–19%, n 16). All intervals overlap.
NotesWhiskers: 95% Wilson intervaln 12–16 per row
Share of calls whose reply held tool-call markup or whose tool call the CLI could not parse
Every prompt asked for the answer only. Both CLIs disabled tools. The Codex runner adds a developer instruction not to call tools. The Claude Code runner adds no such instruction. The validator decides the score. Tool-call markup is a separate flag; a flagged call can still pass if its whole reply meets the validator. It is a behaviour, not a quality score: more is not better. No call with a tool attempt passed. Whiskers are 95% Wilson intervals. The flag comes from the reply text, which is not published.
Source: Harder tasks head-to-head
GPT-6.1 Sol (medium) · Codex CLI
Claude Opus 5.5 · Claude Code
Claude Sonnet 5.5 · Claude Code
Claude Haiku 4.5 · Claude Code
One panel per series, all on the same axis; whiskers are the 95% Wilson interval.
| Item | GPT-6.1 Sol (medium) · Codex CLI | Claude Opus 5.5 · Claude Code | Claude Sonnet 5.5 · Claude Code | Claude Haiku 4.5 · Claude Code | 95% interval | n |
|---|---|---|---|---|---|---|
| 10x10 nonogram | 75% | 100% | 100% | 0% | GPT-6.1 Sol (medium) · Codex CLI: 30%–95%; Claude Opus 5.5 · Claude Code: 44%–100%; Claude Sonnet 5.5 · Claude Code: 51%–100%; Claude Haiku 4.5 · Claude Code: 0%–56% | 4 |
| Sudoku, 22 givens | 25% | 0% | 0% | 0% | GPT-6.1 Sol (medium) · Codex CLI: 4.6%–70%; Claude Opus 5.5 · Claude Code: 0%–56%; Claude Sonnet 5.5 · Claude Code: 0%–49%; Claude Haiku 4.5 · Claude Code: 0%–56% | 4 |
| 6x6 Skyscrapers | 100% | 33% | 0% | 0% | GPT-6.1 Sol (medium) · Codex CLI: 51%–100%; Claude Opus 5.5 · Claude Code: 6.2%–79%; Claude Sonnet 5.5 · Claude Code: 0%–49%; Claude Haiku 4.5 · Claude Code: 0%–56% | 4 |
3 rows, 4 series: GPT-6.1 Sol (medium) · Codex CLI, Claude Opus 5.5 · Claude Code, Claude Sonnet 5.5 · Claude Code, Claude Haiku 4.5 · Claude Code. GPT-6.1 Sol (medium) · Codex CLI: highest 6x6 Skyscrapers 100% (95% interval 51%–100%, n 4). Lowest Sudoku, 22 givens 25% (95% interval 4.6%–70%, n 4). All intervals overlap. Claude Opus 5.5 · Claude Code: highest 10x10 nonogram 100% (95% interval 44%–100%, n 3). Lowest Sudoku, 22 givens 0% (95% interval 0%–56%, n 3). All intervals overlap.
NotesWhiskers: 95% Wilson intervaln 3–4 per row
One bar per configuration and task; each bar rests on only a few calls, so the 95% intervals are wide
Each bar is 3 to 4 calls, so one call moves a bar by a quarter or a third. Whiskers are 95% Wilson intervals; with this few calls they overlap almost everywhere.
Source: Harder tasks head-to-head
Every lane’s run range overlaps another lane’s, so the chart shows no finish order.
| Item | Total time per call | Range (lowest–highest run) | n |
|---|---|---|---|
| GPT-6.1 Sol (medium) · Codex CLI | 120 s | 46.2 s–273 s | 13 |
| Claude Haiku 4.5 · Claude Code | 109 s | 25.7 s–224 s | 10 |
2 rows. Slowest GPT-6.1 Sol (medium) · Codex CLI 120 s (range 46.2 s–273 s, n 13). Fastest Claude Haiku 4.5 · Claude Code 109 s (range 25.7 s–224 s, n 10). All run ranges overlap.
NotesLines: fastest–slowest run (not an interval)n 10–13 per row
Median per configuration; whiskers = fastest and slowest call
Median and range over the calls that completed. Completed calls include wrong answers and format misses. Only timeouts and tool-call parse errors are excluded from this run’s timings. Both count as non-passes in the outcomes chart. One Mac, one network, one session. Arena servers shared the Mac during part of the run. Host load was not controlled, so these times cannot isolate model speed. Whiskers are a range, not a confidence interval. Times include the CLI start-up and the CLI’s own system prompt. Highlighted: configurations that passed every call.
Source: Harder tasks head-to-head
- Output tokens
- of which reasoning tokens (inner bar)
| Item | Output tokens | Reasoning tokens | Range (lowest–highest run) | n |
|---|---|---|---|---|
| GPT-6.1 Sol (medium) · Codex CLI | 4,994 | 4,971 | Output tokens: 2,099–13,413; Reasoning tokens: 2,070–13,372 | 13 |
| Claude Haiku 4.5 · Claude Code | 12,508 | 12,483 | Output tokens: 2,965–26,532; Reasoning tokens: 2,924–26,510 | 10 |
2 rows, 2 series: Output tokens, Reasoning tokens. Output tokens: highest Claude Haiku 4.5 · Claude Code 12,508 (range 2,965–26,532, n 10). Lowest GPT-6.1 Sol (medium) · Codex CLI 4,994 (range 2,099–13,413, n 13). All run ranges overlap. Reasoning tokens: highest Claude Haiku 4.5 · Claude Code 12,483 (range 2,924–26,510, n 10). Lowest GPT-6.1 Sol (medium) · Codex CLI 4,971 (range 2,070–13,372, n 13). All run ranges overlap.
NotesLines: lowest–highest run (not an interval)n 10–13 per row
Median per configuration; reasoning tokens as the CLI reports them
Medians and minimum-to-maximum token ranges cover completed calls only. Ranges are not confidence intervals. The chart omits unknown reasoning counts. Reasoning tokens are part of the output tokens where the CLI reports them. Their content is never captured. Claude Code used an output-token cap setting of 16,000. Some reported totals exceeded it. Codex CLI had no cap. More tokens is not better or worse by itself.
Source: Harder tasks head-to-head
How a row is called
- AheadThe 95% intervals do not overlap, or the run ranges or p50–p95 bands do not overlap with at least 5 runs per side.
- TieThe values match, or both sit at the same ceiling.
- UnclearThe intervals or ranges overlap, too few runs were recorded, no interval was recorded, or more is not better (token counts are never a win).
- CalculationDerived from list prices and recorded counts. Not a bill and not a run.
The dataset compiler makes every call; this page only draws it. No composite score, no rank.
Questions
- Which is better, Claude Haiku 4.5 or GPT-6.1 Sol (Codex CLI)?
- Claude Haiku 4.5 and GPT-6.1 Sol (Codex CLI) share 40 measured metrics and 16 list-price calculations from 7 studies. Claude Haiku 4.5 leads on 2 rows: Same prompt, 10 times: time per call (Exact number), 5.06 s vs 13.4 s; Same prompt, 10 times: time per call (Code fix), 5.95 s vs 11.3 s. GPT-6.1 Sol (Codex CLI) leads on 6 rows: Pass rate on eight hard tasks (Strict pass), 100% (16/16) vs 46% (11/24); Same prompt, 10 times: strict pass rate (Exact number), 100% (10/10) vs 0% (0/10); Same prompt, 10 times: strict pass rate (JSON object), 100% (10/10) vs 10% (1/10); and 3 more. On those rows the 95% intervals and run ranges do not overlap; only a 95% interval is a confidence interval. The other rows are 13 ties and 35 unclear; each row says why. Calculation rows are derived from list prices and recorded counts; they are not bills or runs. Every row ran the two sides through different routes (for example Claude Code vs Codex CLI), so they compare route + model pairs, not models alone; the contexts name the route. Some rows rest on small samples (n = 3 at the smallest).
- How were Claude Haiku 4.5 and GPT-6.1 Sol (Codex CLI) measured?
- They share 40 measured metrics and 16 list-price calculations from 7 public studies: Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head; Haiku vs Sonnet vs Opus vs Fable vs GPT-6.1 Sol on 8 hard tasks; Prompt caching and run-to-run consistency in Claude Code and Codex CLI; Does a JSON schema stop format misses? Instructions vs schema mode in Claude Code and Codex CLI; How much of an AI bill is thinking? Reasoning tokens by model and effort; Where the seconds go: first text, output speed and prompt size for 6 LLMs; GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks. Every row names its configuration, its sample size and its interval or range.
- How do Claude Haiku 4.5 and GPT-6.1 Sol (Codex CLI) compare on pass rate on eight hard tasks (Strict pass)?
- Claude Haiku 4.5: 46% (11/24) (Claude Code · eight hard validated tasks; n = 24; 95% interval 28% to 65%). GPT-6.1 Sol (Codex CLI): 100% (16/16) (Codex CLI · effort medium · eight hard validated tasks; n = 16; 95% interval 81% to 100%). The 95% intervals do not overlap (Claude Haiku 4.5 28% to 65%; GPT-6.1 Sol (Codex CLI) 81% to 100%).
- How do Claude Haiku 4.5 and GPT-6.1 Sol (Codex CLI) compare on same prompt, 10 times: strict pass rate (Exact number)?
- Claude Haiku 4.5: 0% (0/10) (Claude Code · same prompt repeated 10 times; n = 10; 95% interval 0% to 28%). GPT-6.1 Sol (Codex CLI): 100% (10/10) (Codex CLI · effort medium · same prompt repeated 10 times; n = 10; 95% interval 72% to 100%). The 95% intervals do not overlap (Claude Haiku 4.5 0% to 28%; GPT-6.1 Sol (Codex CLI) 72% to 100%).
- How do Claude Haiku 4.5 and GPT-6.1 Sol (Codex CLI) compare on same prompt, 10 times: strict pass rate (JSON object)?
- Claude Haiku 4.5: 10% (1/10) (Claude Code · same prompt repeated 10 times; n = 10; 95% interval 1.8% to 40%). GPT-6.1 Sol (Codex CLI): 100% (10/10) (Codex CLI · effort medium · same prompt repeated 10 times; n = 10; 95% interval 72% to 100%). The 95% intervals do not overlap (Claude Haiku 4.5 2% to 40%; GPT-6.1 Sol (Codex CLI) 72% to 100%).
- How do Claude Haiku 4.5 and GPT-6.1 Sol (Codex CLI) compare on same prompt, 10 times: time per call (Exact number)?
- Claude Haiku 4.5: 5.06 s (Claude Code · same prompt repeated 10 times; n = 10; run range 4.4 s to 6.2 s). GPT-6.1 Sol (Codex CLI): 13.4 s (Codex CLI · effort medium · same prompt repeated 10 times; n = 10; run range 12.3 s to 18 s). The run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 4.42 s to 6.20 s; GPT-6.1 Sol (Codex CLI) 12.3 s to 18.0 s). A range is not a confidence interval.
- How do Claude Haiku 4.5 and GPT-6.1 Sol (Codex CLI) compare on same prompt, 10 times: time per call (Code fix)?
- Claude Haiku 4.5: 5.95 s (Claude Code · same prompt repeated 10 times; n = 10; run range 4.9 s to 7.3 s). GPT-6.1 Sol (Codex CLI): 11.3 s (Codex CLI · effort medium · same prompt repeated 10 times; n = 10; run range 9.1 s to 14.9 s). The run ranges (fastest to slowest) do not overlap (Claude Haiku 4.5 4.89 s to 7.33 s; GPT-6.1 Sol (Codex CLI) 9.08 s to 14.8 s). A range is not a confidence interval.
The studies behind this page
Haiku vs Sonnet vs Opus vs Fable vs Codex: a timed head-to-head
130 timed calls on five validated tasks: Claude Haiku, Sonnet, Opus and Fable against Codex GPT-6.1 Sol. Pass rate, speed, tokens, cost per pass.
Haiku vs Sonnet vs Opus vs Fable vs GPT-6.1 Sol on 8 hard tasks
152 calls on 8 hard tasks with strict validators. Pass rate with 95% intervals, format misses, speed, tokens and cost per pass.
Prompt caching and run-to-run consistency in Claude Code and Codex CLI
135 calls: cache hit share and list-price savings in multi-turn sessions, and pass rate and answer diversity over 10 repeats of the same prompt.
Does a JSON schema stop format misses? Instructions vs schema mode in Claude Code and Codex CLI
96 calls. Strict passes, schema vs instructions: Haiku 18/24 vs 0/24, Sonnet 12/12 vs 12/12, GPT-6.1 Sol 12/12 vs 12/12. With intervals.
How much of an AI bill is thinking? Reasoning tokens by model and effort
Reasoning tokens in 378 recorded calls by model and effort: share of output, list-price cost per call and per pass, and time. Calculations.
Where the seconds go: first text, output speed and prompt size for 6 LLMs
60 calls on 6 models: time to first text, tokens per second, and what a 1k, 16k or 64k prompt adds. Claude Code and Codex CLI.
GPT-6.1 Sol vs Claude Opus 5.5, Sonnet 5.5 and Haiku 4.5 on 4 harder tasks
56 counted calls on 4 harder tasks with strict validators: GPT-6.1 Sol, Claude Opus 5.5, Sonnet 5.5, Haiku 4.5. Pass rate, intervals, speed, cost.