Start Building
Technical

TTFT vs Tokens Per Second: Which LLM Performance Metric Matters for Your App?

A chatbot needs fast TTFT. A batch job needs high throughput. Here is how to tell which metric actually matters for what you are building.

Author photo
packet.ai Team
August 26, 2026

Time to first token and tokens per second measure two different things, and which one actually matters for your app depends entirely on what you're building. The ttft meaning is specifically about the wait before anything appears; inference speed once the response is underway is a separate question entirely. A chatbot cares about how quickly the first token appears. A batch job cares much more about how much work the system can push through. Most real applications need some combination of both. This guide covers what each metric captures, when each one is the one to optimize for, and what to do when your app genuinely needs both.

Key takeaways

  • Time to first token (TTFT) measures how long a user waits before anything appears. "Tokens per second" is less standardized: some tools include TTFT in the calculation, others measure decode speed separately. TPOT (time per output token) and ITL (inter-token latency) are the more precisely defined measures of the streaming experience
  • Interactive, chat-style applications should generally prioritize TTFT, since users perceive the wait before the first word far more acutely than small variations in streaming speed after that
  • Batch and offline workloads should generally prioritize aggregate throughput, since nothing is being watched live and total completion time is what matters
  • A system can be excellent on one metric and mediocre on the other. Optimizing for the wrong one for your actual use case wastes engineering effort
  • Some real applications need both, and the right approach there is routing or tiering rather than picking a single optimization target

What TTFT and TPS Actually Measure

One terminology trap is worth clearing up first. TTFT is fairly straightforward: request in, first token out. Tokens per second is less so. Different benchmarking tools calculate it differently, some include the time spent waiting for the first token in the calculation, others report decode throughput separately from that. If you're comparing systems or providers, check the methodology behind a quoted TPS figure before comparing the number directly. For a more precise picture of the token-by-token streaming experience specifically, time per output token (TPOT) and inter-token latency (ITL) are the more rigorously defined measures, and most serving engines, vLLM included, report these as distinct metrics rather than folding everything into one TPS number.

Time to first token is the delay between sending a request and seeing the first token of the response appear, sometimes described as first token latency. It captures request queueing, prompt processing (prefill), and any network delay along the way, and it stops the instant the first token shows up. Tokens per second llm figures, along with the more precisely defined TPOT and ITL metrics, measure something that starts only after that: how quickly the rest of the response streams out, token by token, once generation is underway. For the full mechanics of TTFT specifically, including what drives it up and how to benchmark it properly, see the packet.ai What Is TTFT guide.

These two numbers, sometimes shorthanded as TTFT and TPS LLM metrics, move independently of each other. A system can have a fast TTFT and slow per-token generation: the first word appears almost instantly, then the rest streams out with visible pauses. Or the reverse: a noticeable pause before anything appears, followed by a response that streams out quickly once it starts, which is the typical profile of reasoning models that perform additional computation before the first visible token. Neither pattern is universally better; which one feels better depends entirely on what the user is actually waiting for, and neither one is simply "model latency" as a single undifferentiated number.

When TTFT Matters Most

TTFT dominates perceived speed in any interactive, conversational context. A chat interface, a coding assistant answering inline, a customer support bot, a voice assistant, all of these involve a person actively waiting and watching for the response to begin. Research on human perception of delay is consistent on this point: a pause before anything happens reads as the system being broken or unresponsive, even if the eventual full response arrives quickly once it starts. A 200-millisecond TTFT feels immediate. A 1.5-second TTFT feels stalled, regardless of how fast the rest streams afterward.

Short-answer use cases are especially TTFT-sensitive, since there's barely any streaming to notice at all. If a response is one sentence or a single factual answer, TTFT is essentially the entire perceived latency, and per-token generation speed barely factors in. Multi-turn conversational agents, live coding autocomplete, and voice interfaces all fall into this category, and it's exactly where the techniques that specifically target TTFT, prefix caching in particular, earn their keep. See the packet.ai guide to reducing LLM inference latency for a full breakdown of which techniques target which metric.

One exception worth keeping in mind: a low TTFT isn't always the right goal. Reasoning models deliberately spend additional time computing before producing any visible output, which shows up as a higher TTFT by design, not as poor infrastructure. Comparing a reasoning model's TTFT directly against a standard model's isn't a fair comparison, since the two are doing genuinely different amounts of work before the first token appears.

When Throughput Matters Most

For long responses, per-request generation speed matters because the user, or a downstream process, spends real time watching or waiting for the response to stream out. A long report, a large piece of generated code, or a lengthy document draft depends on sustained per-request generation speed far more than on how quickly the first token appeared, since there's enough output for small differences in streaming speed to actually accumulate.

For batch workloads, aggregate throughput becomes the more useful measure, and it's a genuinely different number from per-request speed: it's about how much work the whole system can complete overall, not how fast any single request streams. Summarizing ten thousand documents overnight, generating embeddings for a large dataset, or running an evaluation suite across many prompts all share the same property: nobody is watching any individual request's first token arrive, so optimizing for that would be solving a problem nobody has. What matters there is how many requests the system can get through per hour, which is an aggregate throughput question, not a first-token question or even a per-request generation-speed question. Continuous batching, one of the techniques covered in the inference latency guide above, is specifically an aggregate throughput optimization for exactly this kind of workload.

A Quick Way to Decide Which One to Prioritize

Your app is Prioritize
A chatbot or conversational interface TTFT
A voice assistant or live coding autocomplete TTFT
Generating long documents, reports, or code files TPS
Batch processing, offline summarization, evaluation runs TPS / throughput
A mix of short interactive queries and long generation Both, likely via routing

The underlying question worth asking honestly: is anyone watching this response arrive in real time? If yes, TTFT is probably your priority. If the output gets consumed after the fact, whether by a person reading a finished document or a downstream system processing a batch of results, TPS and total throughput matter more than how quickly any individual response started.

Benchmarking Both Metrics Together

Any llm ttft benchmark worth trusting reports both numbers separately rather than collapsing them into one generic "latency" figure, since a single blended number hides exactly the tradeoff this post is about. When comparing providers or configurations, look for TTFT latency reported at a percentile, not just an average, alongside a separate TPS figure measured under realistic concurrency. A vendor quoting only one number, or only a best-case average, is making it hard to tell which of your actual priorities their system serves well.

When an App Genuinely Needs Both

Some real products don't fit neatly into either category. A coding assistant might need fast TTFT for inline autocomplete suggestions and high TPS for generating an entire file on request. A customer support product might need fast TTFT for the live chat widget and high throughput for the nightly job that summarizes every conversation from the day.

The practical answer in these cases usually isn't picking one metric to optimize globally, it's routing different request types to configurations tuned for each. A live, low-latency path prioritizing TTFT, often served with prefix caching and dedicated capacity, handles the interactive traffic. A separate, throughput-tuned path with more aggressive batching handles everything else. Trying to make one configuration excellent at both simultaneously usually means compromising on both, since some of the techniques that help one metric, like waiting to batch requests together, actively work against the other.

Optimizing for Either Metric with Token Factory

Since TTFT and TPS respond to different techniques, packet.ai's Token Factory is being built to apply the relevant optimizations, prefix caching and dedicated infrastructure for TTFT, continuous batching and efficient serving for throughput, at the serving layer rather than requiring you to configure each one yourself. Token Factory is currently in private preview, with the specific model catalog and pricing still being finalized.

Join the waitlist for early access once it opens.

Sources and Further Reading

Frequently asked questions

Neither is universally more important: TTFT matters more for interactive responsiveness, while sustained generation speed and aggregate throughput matter more for long-running or batch workloads. Interactive, conversational apps like chatbots, voice assistants, and live coding tools should generally prioritize TTFT, since users perceive the wait before the first word far more than small differences in streaming speed after that. Batch, offline, or long-form generation workloads should generally prioritize per-request speed and overall throughput, since nothing is being watched live.
Yes, and both patterns show up in practice. A system can respond almost instantly with the first token but then stream the rest slowly with visible pauses. Or it can have a noticeable pause before anything appears, then stream the remainder quickly once generation starts, which is typical of reasoning models that compute before producing visible output. The two metrics measure genuinely different phases of inference and move independently of each other.
The usual answer is routing rather than trying to optimize one configuration for both. A low-latency path tuned for TTFT, often using prefix caching and dedicated capacity, handles interactive requests. A separate throughput-tuned path with more aggressive batching handles everything else. Some of the techniques that help one metric work against the other, so a single configuration optimized for both usually ends up compromising on each.
TTFT dominates for short answers, since there's barely any streaming to notice. If the entire response is one sentence or a single fact, the time to first token is close to the entire perceived latency, and tokens per second has very little room to matter. This is why short-answer, high-frequency use cases like autocomplete and simple Q&A benefit most from TTFT-focused optimizations like prefix caching.

Last reviewed: August 26, 2026. For the full mechanics of time to first token, see the What Is TTFT guide. For which techniques target which metric, see the 7 techniques to reduce LLM inference latency guide.

Waste less compute.

Same models. Same API. Fraction of the cost. Start free — no credit card required.

Start Building →

More from the blog