$ capsul benchmark

Measured, including what the saving cost.

Every number here comes from a run we can reproduce. Intervals sit next to medians, and the rows where an answer check was lost say so on the row rather than in a footnote.

/benchmark · September 2026

Measured with Claude and Codex.

58%less context sent to the modelSame question, same model. The short stack is the measured ratio, not an illustration: it is the median saving across the nine models below.

What actually goes over the wire, model by model.

The same five short questions, to the same model, with and without capsul. Bars show the reduction in cache-weighted input. These are separate campaigns; savings vary with the task and cache.

share of the input capsul does not send

saved by capsulstill sent= claude -p

  • Haiku 4.5

    −73 %

    claude -p
    396 725
    capsul
    106 491
  • Sonnet 5

    −50 %

    claude -p
    244 486
    capsul
    123 370
  • Sonnet 4.6

    −51 %

    claude -p
    147 746
    capsul
    72 692
  • Opus 4.6

    −59 %

    claude -p
    171 370
    capsul
    70 482
  • Opus 4.7

    −32 %

    claude -p
    185 278
    capsul
    126 413
  • Opus 4.8

    −80 %

    claude -p
    358 993
    capsul
    70 478
  • Opus 5

    −58 %

    claude -p
    189 342
    capsul
    79 166
  • Fable 5

    −45 %

    claude -p
    160 682
    capsul
    88 530
  • Fable 5.1

    −58 %

    claude -p
    224 278
    capsul
    95 064

Method

Two arms, with the same model imposed on both. The bare arm runs the agent CLI the way anyone runs it; the capsul arm sends the same question through capsul on the same model. Comparing two different models would compare price lists, not tools.

The unit is cache-weighted input: fresh tokens at full weight, cache reads at a tenth. On a subscription the raw token is not what gets metered, and a raw count flatters whichever arm happens to cache better.

Every cell is kept. Nothing is dropped for being inconvenient, and each campaign states how many cells were run and how many were discarded. That second number is zero.

Intervals are bootstrapped at 90 percent and drawn on the same axis as the gain, with the line at one visible underneath. An interval that crosses that line means the measurement establishes nothing, and it is meant to be seen.

What these numbers do not say

  • A median is not a promise. The nine per-model medians run from x1.47 to x5.09, and within a model one question can gain a factor of three while the next loses.
  • Three of the nine Claude models lose one answer check out of five with capsul, and one gains one. A saving bought with a wrong answer is not a saving, so the count is stated here rather than left out.
  • The protocol is short, one-line questions, which is where the gain is widest. A run earlier the same day on ten-line prompts, 126 cells, gave x1.09 to x3.34 with two rows establishing nothing. If you write long prompts, that run describes you and this table does not. At least one published task also uses more weighted input with capsul than without.
  • Campaigns are separate. Figures from different dates were measured on different versions of the code, so a row is comparable with its own campaign and not necessarily with another.
  • These figures measure input sent to a model. They do not measure how much of a subscription quota that turns into, which depends on weighting we do not control.

The raw data

The most recent campaign is published as JSON, with its protocol and its per-task figures. Anyone who does not take our word for the table can read the file.

Download the dataset (JSON)

Read the guides