# Codex Subscription Token Rate

Given my subscription usage, Astra is difficult to use as my main model. But GPT-6.1 Sol also felt slower than I expected, so I ran a small comparison. I gave several models the same task and calculated their token generation speeds from the session logs.

## How I measured it

I used the same prompt for every run:

> This is a controlled model-speed benchmark. Do not use any tools, do not inspect the repository, and do not modify files. Produce exactly 120 numbered items describing distinct failure-mode test cases for a distributed job queue. Each item must be exactly one English sentence of 18 to 28 words and must include: the triggering condition, the expected behavior, and one observable assertion. Do not add an introduction, conclusion, headings, or any text outside the 120 numbered items.

**TTFT** is the time to the first token. I calculated the rate of visible token generation as:

`(output tokens − reasoning output tokens) ÷ (completion time − TTFT)`

This rate describes the average speed of visible output after the first token. It is different from output tokens divided by the full completion time.

## Sol at medium effort

| Model | TTFT | Completion time | Visible tokens | Visible generation rate |
| --- | --- | --- | --- | --- |
| `gpt-6-sol` | 6.759 s | 41.635 s | 3,199 | **91.72 tok/s** |
| `gpt-5.6-sol` | **6.199 s** | 42.811 s | 3,162 | 86.37 tok/s |
| `gpt-6.1-sol` | 7.038 s | 80.531 s | 3,236 | 44.03 tok/s |

In this run, `gpt-6-sol` generated visible tokens about 2.08 times as fast as `gpt-6.1-sol`. `gpt-5.6-sol` produced the first token soonest, while `gpt-6-sol` finished the task first. The `gpt-6.1-sol` result was consistent with my impression that it felt slow, though it is only one run of one task.

## Sol at high effort

| Model | TTFT | Completion time | Visible tokens | Visible generation rate |
| --- | --- | --- | --- | --- |
| `gpt-6-sol` | 8.116 s | 42.870 s | 3,233 | **93.03 tok/s** |
| `gpt-5.6-sol` | **7.063 s** | **41.916 s** | 3,094 | 88.77 tok/s |
| `gpt-6.1-sol` | 9.675 s | 82.776 s | 3,330 | 45.55 tok/s |

The ranking by visible generation rate was the same at high effort: `gpt-6-sol` was fastest, and `gpt-6.1-sol` ran at roughly half its rate. Yet `gpt-5.6-sol` had the shortest completion time, at 41.916 seconds. Generation rate and time to finish the whole task tell slightly different stories.

For each Sol model, the visible generation rate changed little between medium and high effort in these runs. TTFT increased for all three. Input caching was not applied to the `gpt-5.6-sol` high-effort run, however, so the TTFT difference cannot be attributed solely to the effort setting.

## Luna at xhigh effort

| Model | TTFT | Completion time | Visible tokens | Reasoning tokens | Visible generation rate |
| --- | --- | --- | --- | --- | --- |
| `gpt-5.6-luna` | **4.739 s** | **37.084 s** | 2,922 | 1,396 | **90.34 tok/s** |
| `gpt-6-luna` | 8.298 s | 63.097 s | 3,258 | 4,870 | 59.45 tok/s |

In these measurements, `gpt-5.6-luna` generated visible tokens about 1.52 times as fast and finished sooner. `gpt-6-luna` used 4,870 reasoning tokens, compared with 1,396 for `gpt-5.6-luna`. That shows a difference in their recorded output, but this single measurement does not establish how much of the completion-time gap it caused.

The first `gpt-5.6-luna` run finished in 29.273 seconds, but it did not produce the JSONL log needed to calculate its token rate. The table uses a separate run that finished in 37.084 seconds and had a usable log.

## Limits of this comparison

Each reported configuration has one logged measurement. Temporary server conditions and other differences between runs could affect the results, so these numbers should not be treated as fixed speeds. The Luna table also combines `gpt-6-luna` with a separate rerun of `gpt-5.6-luna`, rather than two results from the same simultaneous pair.

The prompt asked for a long output of 120 items. These results describe response speed on that task. They do not show whether the ranking would hold for other tasks or output lengths, and they do not evaluate the quality of the generated test cases.
