LLM inference speed: tokens per second is the wrong metric

Tokens per second is the number every provider publishes and the wrong one to optimize for an agent. A coding agent issues many short model calls separated by tool execution, so its wall-clock time is dominated by time to first token multiplied by turn count, not by how fast a long answer streams. Here is how the three metrics differ, who leads each, and how to measure yours.

By the Continuum team. We build a workbench that runs Claude Code, Codex, and their peers, so the model rates quoted here are the ones our own cost analytics ship with.

The short version

Output speed is tokens received per second after the first one. Time to first token is the wait before streaming starts. End-to-end turn latency is what a user experiences, and for agents it is roughly turn count times TTFT plus tool execution. On the Artificial Analysis provider board in August 2026, Groq led throughput at 457 tok/s and Baseten led time to first token at 0.49 seconds. Speculative decoding and quantization both buy real speed and both have honest costs.

What you need to know
  • Three different metrics: output speed, time to first token, and end-to-end turn latency.
  • Agents are bound by TTFT times turn count. Chat UIs are bound by throughput.
  • August 2026 leaders: Groq at 457 tok/s, Baseten at 0.49s TTFT.
  • Reasoning models change the definition: TTFT measures the first reasoning token, not the first answer token.
  • Speculative decoding is free speed when it works and wasted compute when it does not.
  • Measure your own. The code to do it is twenty lines.

Three metrics, three different questions

What each metric measures and what it predicts.
MetricDefinitionWhat it predicts
Output speed (tok/s)Average tokens received per second after the first tokenHow fast a long answer finishes streaming
Time to first token (TTFT)Seconds between sending the request and receiving the first tokenHow responsive a single call feels
Time to first answer tokenTTFT plus the reasoning phase, on reasoning modelsWhen the user sees content they can read
End-to-end response timeThe whole interaction, start to finishWhat a user actually experiences

Those definitions are Artificial Analysis's, which is the closest thing this category has to a standard. Two details matter when you read anyone's numbers. They normalize to OpenAI tokens rather than each model's native tokenizer, precisely because a native-token count is not comparable across models. And they measure across a diverse 60-prompt set of varying lengths rather than a single benchmark prompt.

Why agents care about a different number than chat

A chat turn is one request producing one long answer. Its wall clock is roughly TTFT plus (output tokens / throughput), and since answers run to hundreds of tokens, throughput dominates.

A coding agent turn is nothing like that. It reads a file, thinks briefly, runs a command, reads the output, patches, runs tests. Each of those is a separate model call producing a short output, with tool execution in between. Its wall clock is roughly turn count times TTFT, plus tool time, plus a comparatively small amount of generation.

The same two providers, two workloads. Illustrative, using measured August 2026 figures.
Provider A: TTFT 0.50s, throughput 450 tok/s
Provider B: TTFT 1.20s, throughput 700 tok/s

CHAT: one call, 800 output tokens
  A: 0.50 + 800/450 = 0.50 + 1.78 = 2.28 s
  B: 1.20 + 800/700 = 1.20 + 1.14 = 2.34 s
  -> Essentially tied. B's throughput almost erases its TTFT deficit.

AGENT: 20 calls, 120 output tokens each, 0.4s tool time between
  A: 20 x (0.50 + 120/450 + 0.4) = 20 x 1.167 = 23.3 s
  B: 20 x (1.20 + 120/700 + 0.4) = 20 x 1.771 = 35.4 s
  -> A is 34% faster. The TTFT gap was multiplied twenty times.

That is why a provider leaderboard sorted by tokens per second can point you at the wrong vendor for an agentic workload. Sort by time to first token instead, and weight it by how many turns your tasks actually take. Turn count is a property of the model rather than the provider, which is why our coding-model leaderboard prints steps and output tokens per task alongside the pass rate.

Who is actually fast, August 2026

These are the independently measured figures from the Artificial Analysis provider leaderboard, read in August 2026. They move constantly, so treat them as a snapshot and check the live board before quoting them.

Output speed leaders, Artificial Analysis provider board, August 2026.
ProviderOutput tokens/secMeasured on
Groq457Qwen3.6 27B
Nebius453Nemotron 3 Ultra
Google372Gemini 3.7 Flash
Databricks347GLM-5.2
Makora312GLM-5.2 NVFP4
Lowest time-to-first-token figures on the same board, August 2026.
ProviderTTFT (seconds)Measured on
Baseten0.49Inkling Small
Google0.57DeepSeek V4 Flash
Makora0.68GLM-5.2 NVFP4
Baseten0.75DeepSeek V4 Flash
Wafer0.75GLM-5.2

Groq's own documentation publishes per-model figures rather than a single company number: 1,000 tokens per second on gpt-oss 20B and 500 on gpt-oss 120B. Publishing a number per model is more honest than publishing one for the company, and it is worth noting that Groq's speed advantage comes with the narrowest catalog in the category.

Speculative decoding and quantization, honestly

Speculative decoding

A small draft model proposes several tokens ahead, and the large model verifies them in a single forward pass. When the draft is right, you get several tokens for the price of one step. When it is wrong, the speculated tokens are discarded and you have burned compute for nothing. The net effect on throughput is real and workload dependent: highly predictable text (boilerplate, code with strong conventions, structured output) accepts a high fraction of drafts; genuinely novel reasoning accepts far less. Together's research lineage here is public, with Medusa, Sequoia, and SpecExec all published work that feeds its serving stack. The honest summary: it is free speed on predictable output and roughly neutral on unpredictable output, and it never changes the distribution of what the large model would have said.

Quantization

Storing weights at lower precision (FP8, INT8, NVFP4 and below) shrinks memory traffic, which is what actually bounds decode speed, so a quantized model streams faster and fits on smaller GPUs. The cost is quality, and the size of that cost is model and task specific rather than a fixed percentage. It shows up first on the tasks with the least slack: long-chain reasoning, precise arithmetic, and exact-format output. Note that providers do not always label it prominently; the Artificial Analysis board carries "GLM-5.2 NVFP4" as a distinct entry from GLM-5.2 for exactly this reason. If two providers quote very different speeds for what looks like the same model, check the precision before concluding one has better engineering.

Measure it yourself

Any published board is measured on someone else's prompts from someone else's network. Twenty lines gets you your own numbers on your own prompts.

Measure TTFT and output speed against any OpenAI-compatible endpoint.
import os, time, json, urllib.request

BASE = os.environ.get("BASE_URL", "https://api.openai.com/v1")
KEY  = os.environ["API_KEY"]
MODEL = os.environ.get("MODEL", "gpt-5.6-luna")

req = urllib.request.Request(
    f"{BASE}/chat/completions",
    headers={"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"},
    data=json.dumps({
        "model": MODEL,
        "stream": True,
        "messages": [{"role": "user", "content": "Write a Python LRU cache. Code only."}],
    }).encode(),
)

sent = time.perf_counter()
first = None
tokens = 0

with urllib.request.urlopen(req) as resp:
    for raw in resp:
        line = raw.decode().strip()
        if not line.startswith("data: ") or line == "data: [DONE]":
            continue
        chunk = json.loads(line[6:])
        delta = chunk["choices"][0]["delta"].get("content")
        if not delta:
            continue
        if first is None:
            first = time.perf_counter()
        tokens += 1

done = time.perf_counter()
print(f"TTFT          {first - sent:.3f} s")
print(f"Output speed  {tokens / (done - first):.1f} chunks/s")
print(f"Total         {done - sent:.3f} s")
  • Run it 20 times, report p50 and p95. A single sample tells you nothing; tail latency is what users notice.
  • Run it from where your code runs. Measuring from a laptop in Dubai against a US-East endpoint measures the Atlantic, not the provider.
  • Use your real prompt lengths. TTFT scales with input size, and an agent sending 25,000 tokens of repo context has a very different TTFT from a 20-token benchmark prompt.
  • Count chunks, not tokens, unless you tokenize. Streaming deltas are not one token each. The script above is honest about measuring chunks; for true tok/s, read the usage field the provider returns at the end of the stream.
  • Measure at the hour you actually work. Shared capacity is contended, and a 3am number is not your number.

Questions people ask

What is a good tokens per second for an LLM?

For reading comfort, anything above about 30 tokens per second outpaces a fast human reader, so a chat UI stops feeling slow there. The fastest providers measured in August 2026 ran far above that: Groq at 457 tokens per second and Nebius at 453 on the Artificial Analysis board, with Groq publishing 1,000 tok/s on gpt-oss 20B. Beyond roughly 100 tok/s the improvement is invisible in a chat UI and only matters for batch throughput.

What is the difference between TTFT and tokens per second?

Time to first token is the wait before anything appears, measured in seconds from request to first token. Tokens per second is how fast the response streams after that first token arrives. A provider can be excellent at one and mediocre at the other. Which you should optimize depends on whether your workload makes one long call (throughput) or many short ones (TTFT).

Which inference provider has the fastest LLM inference?

It depends on the metric. On output throughput in August 2026, Groq led the Artificial Analysis provider board at 457 tokens per second on Qwen3.6 27B, with Nebius close behind at 453. On time to first token, Baseten posted the lowest figure at 0.49 seconds on Inkling Small. Groq also has the narrowest catalog in the category, which is the trade it has made.

Why does my coding agent feel slow when the model is fast?

Because an agent turn is many short model calls, not one long one, so its wall clock is dominated by time to first token multiplied by the number of calls plus tool execution time, not by streaming throughput. Twenty calls at 1.2 seconds of TTFT is 24 seconds of pure waiting before any generation or tool work is counted. Pick a provider on TTFT, and reduce the number of turns.

Does speculative decoding reduce quality?

No. A draft model proposes tokens and the full model verifies them, so the output distribution is unchanged; rejected drafts are simply discarded. What varies is the speedup, which is large on predictable text such as boilerplate and structured output and small on genuinely novel reasoning. The cost of a bad draft is wasted compute on the provider side, not a worse answer on yours.

Does quantization make models worse?

It can, and how much is model and task specific rather than a fixed percentage. Lower precision reduces memory traffic, which is what bounds decode speed, so quantized models are meaningfully faster and fit smaller GPUs. Degradation appears first on long-chain reasoning, exact arithmetic, and strict output formats. Providers do not always label precision clearly, so if two of them quote very different speeds for the same model name, check the precision first.

How do I measure LLM latency myself?

Stream a completion and timestamp the request, the first content chunk, and the last one. TTFT is the gap between the first two; output speed is tokens divided by the gap between the second and third. Run it at least 20 times and report p50 and p95, from the network where your code actually runs, using your real prompt lengths, at the hour you actually work.

Sources

Every figure above was read from these pages on August 2026. Vendors reprice without notice; if you find a stale number, tell us.

  1. Artificial Analysis methodology definitions of output speed, TTFT, and response time; the 60-prompt set
  2. Artificial Analysis provider leaderboard August 2026 throughput and TTFT figures
  3. Groq models and pricing published per-model tokens per second
  4. Together AI speculative decoding research: Medusa, Sequoia, SpecExec
  5. Modal cold start guide container boot latency and snapshotting
Try it

Run every agent
from one place.

Continuum drives Claude Code, Codex, and peers under your own subscriptions, with live quota gauges and spend by repo. The app is free. Mac is stable; Windows and Linux desktop are beta.

free app · your subscriptions · local-first