Streaming

Sending each piece of an answer the moment it's ready

Key points
  • Streaming sends whatever piece is finished the moment it's ready, instead of waiting for the whole answer to be done.
  • The finishing time barely changes. What actually changes is how long it takes to see the first character.
  • A language model already builds an answer one piece at a time, so streaming is just letting that process out as it happens.
  • Notice partway through that something's off and it can be stopped right there, saving both time and money.
  • It's a poor fit for anything that can only be judged once the whole thing has arrived.
Contents

1The analogy

Picture a serving line next to a big pot of soup, ladling out one bowl at a time. Make everyone wait for the whole pot to empty before it goes on the table, and the line stands there a long while. Ladle it out bowl by bowl instead, and each person can start eating before their own bowl is even full.

Streaming is that ladle. The moment a model finishes a piece of the answer, that piece gets pushed straight onto the screen. That's why the text looks like it's flowing out.

Emptying the whole pot takes about the same time either way. What changes is the wait for that first spoonful. And soup already poured into a bowl can't be scooped back — the same way an early piece, once sent, can't be taken back.

2In detail

An answer is already built piece by piece

A language model never conjures a whole answer in one go. It looks at everything built so far, picks the single next piece, attaches it, and picks again. A long answer repeats this hundreds or thousands of times.

So the earlier part of an answer sits fully finished well before the whole thing wraps up. Streaming just refuses to hold onto that finished part — it sends it out the moment it's ready. It isn't manufacturing new speed from nothing; it's simply not holding onto what's already made.

It may look like one character at a time on screen, but the real unit is a piece, so two or three characters sometimes pop out together. A short word landing all at once is exactly that.

The wait for the first character shrinks

Response speed is really two separate numbers: the time until the first piece arrives, and the gap between pieces after that. Turning on streaming shrinks the first number a lot. The second stays the same.

Most of the frustration a person feels comes from that first number. Staring at an empty screen for a few seconds and watching text start flowing right away feel completely different, even when the total wait is similar. When text arrives faster than a person can actually read it, reading it feels almost the same as having waited for the whole thing.

The difference grows with a longer answer. A longer answer takes longer to finish, so holding the whole thing back means a longer empty screen too.

It can be cut off mid-flow

Notice the answer heading the wrong direction while it's streaming in, and it can be stopped right there. Rephrasing the question and asking again is usually faster anyway. Whatever part hadn't been generated yet never gets computed at all, so neither time nor cost gets spent on it.

Programs do the same thing. Take only as much as needed and close the connection, or cut it off the moment a forbidden phrase shows up mid-stream. That reacts faster than waiting for the whole answer and checking it afterward.

Some places it doesn't fit

Streaming barely helps anywhere the whole answer has to be there before a judgment can be made. Checking whether something matches a required format before passing it along, pulling a value out of the answer to feed another program, choosing one out of several candidate answers — cases like these. The wait for the full thing is unavoidable either way, so there's little point letting it trickle onto the screen early.

It adds complexity on the receiving end too. Every arriving piece has to be stitched on, a broken connection has to be recovered, and a final signal has to be caught to know it's done. Unless characters are actually being shown on a screen, receiving the whole thing at once is often simpler.

3More precisely

Streaming is a way of communicating where the server never closes the response as one finished block — it keeps the connection open and sends finished pieces out in order as they're produced. A separate signal arrives at the very end to mark that it's done. The unit being sent isn't a character — it's the token a model actually works with.

The analogy breaks down somewhere. Someone ladling soup can see how much is left in the pot; a model has no way to know in advance how much further an answer will run. It isn't dividing up a length decided ahead of time — every single piece, it decides on the spot whether another one follows or this is the end. That's why a progress bar can't be drawn accurately for it. And an earlier piece, once sent, can't be revised later either, so a wrong turn taken early just keeps getting carried forward. That's also why the flow isn't perfectly steady — when many people are using it at once, the gaps between pieces stretch out, and the flow can pause for a moment before picking back up.

4Try it yourself

5Common misconceptions

  • It's easy to think turning on streaming makes the answer finish faster, but actually the moment the last character lands is about the same — only the first character shows up sooner.

  • It's easy to think characters appearing one by one means they're generated one letter at a time, but actually the real unit is bigger than a character, so several show up together.

  • It's easy to think stopping partway still gets billed in full, but actually whatever never got generated is never computed, so less gets charged.

7One-line summary

In shortStreaming ladles out each piece of an answer the moment it's ready instead of making everyone wait for the whole thing, shortening how long the wait feels.

Spotted an error or have a better analogy? Suggest an edit · Last updated2026-09-02