All posts

Milliseconds and the Human Year

You cannot perceive a millisecond, yet every threshold deciding whether software feels alive sits in that band. On the 100ms, 400ms and 200ms limits.

You cannot perceive a millisecond. Nobody can. It is a thousandth of a second, well under any threshold at which a human being consciously notices anything at all.

And yet every boundary that decides whether a piece of software feels alive or dead sits inside a band a few hundred milliseconds wide. We do not experience the units. We experience the thresholds, and the thresholds are brutally sharp.

Three numbers that have not moved since 1968

Robert Miller published the response time thresholds in 1968. Jakob Nielsen restated them in 1993. They have survived every hardware generation since, because they describe the person rather than the machine.

0.1 seconds. The limit for feeling that a system reacted instantly. Under 100ms, the response feels caused by you. There is no sense of waiting because there is no gap to notice.

1 second. The limit for uninterrupted thought. Between 100ms and a second you know the machine did something, but your train of thought survives. You are still holding the thing you were holding.

10 seconds. The limit of attention. Past this you are gone. Not annoyed, gone: another tab, your phone, a thought about lunch.

The IBM researchers who studied the Doherty threshold in 1982 found something sharper. Below about 400ms, productivity does not merely improve, it goes superlinear. People stop batching their work into careful requests and start conversing with the machine. They try things. The cost of a wrong guess drops below the cost of thinking hard about the right one.

Four hundred milliseconds is where a tool stops being a tool you operate and becomes an extension of what you were doing anyway.

Conversation has a budget you did not set

Text can hide inside these numbers. A chat interface has a typing indicator, and a typing indicator is a licence to take two seconds. Nobody minds.

Voice has no such licence, and the number is not ours to negotiate.

Studies of turn-taking across languages, cultures, and continents find the gap between one speaker finishing and the next beginning clusters around 200 milliseconds. It varies a little by language and barely at all by anything else. Two hundred milliseconds is roughly the shortest gap a human conversation contains.

That number is not a preference. Producing a word takes something like 600ms of planning, which means listeners begin composing their reply before the speaker has finished, predicting the end of the sentence and launching into the gap. Human conversation is not a sequence of exchanges. It is two overlapping processes that have agreed on a handoff.

Now put a machine in one of those seats. Speech has to end, silence has to be detected, audio has to reach a transcriber, text has to reach a model, the model has to think, the reply has to be spoken, and the audio has to travel back. Each stage is defensible. Added up they routinely land between 500ms and 2 seconds.

Against a 200ms conversational budget, that is not slightly slow. It is a different species of thing.

What people report instead of latency

Here is what makes voice latency an unusually expensive problem: nobody complains about it accurately.

A user who waits 900ms for a reply does not say the agent was slow. They say it seemed confused. They say it was not really listening. They say it felt robotic, or fake, or that it was not paying attention.

Because in a human conversation, that is what a pause of that length means. A 900ms gap before an answer is not a neutral delay; it is a signal, and the signals it carries are hesitation, evasion, or not having heard. Listeners have been reading that signal their entire lives and they do not stop reading it because the other party is a computer.

So latency does not arrive as a performance complaint. It arrives dressed as a personality complaint, which sends teams off to rewrite prompts and change voices when the actual defect is in the pipeline. The agent was not confused. It was late, and late reads as confused.

The asymmetry that saves you

There is one genuine break, and it is that the budget applies to starting, not to finishing.

Humans do not compose a reply and then deliver it. They begin talking while still deciding, and hold the floor with filler and hedging while the rest assembles. The 200ms rule governs when the other person starts making sound. It says nothing about when they arrive at the point.

That is the whole reason streaming works. An agent that begins speaking within the budget and continues composing has satisfied the constraint that actually matters. An agent that thinks in silence for 900ms and then delivers a perfect paragraph has violated it, and will be described as worse despite being identical in content.

Which reorders the optimisation list in a way that is not obvious. Time to first audio is worth more than total time. A faster model that starts later loses to a slower one that starts sooner. A holding phrase spoken at 200ms buys a full second of real work behind it, and buys it honestly, because that is exactly what the person on the other end is doing too.

The year

Take a support line handling two thousand calls a month, six turns per call, and suppose each turn is 800 milliseconds slower than it needs to be.

That is around 160 minutes a month. Under two days a year of accumulated silence, spread so thin that no single person ever waits long enough to remark on it.

Nobody in that year experienced a delay. Every one of them experienced an agent that seemed slightly not present, and a good number of them decided something about your company on that basis, and none of them could have told you why.

The unit is imperceptible. The threshold is not. Everything sits in the gap between those two facts.