Society
Why is the other line always faster?
A checkout that is busy 80% of the time is not “80% full”. On average it already has about three people waiting. Push it to 95% busy and the wait becomes nearly five times as long. This page shows why. It also shows why waiting feels so unfair.
You pick a line at the supermarket, and the one next to you moves faster. It happens so often that it feels like a law of nature. Queues really are strange, but the reasons are simple enough to watch happen. We need only three ideas: customers arrive at random, service takes a random amount of time, and nobody can be served before they arrive.
One till
Start with a single till. Customers arrive at random at an average rate we’ll call λ (lambda), say 48 an hour. At random means that an arrival in one minute tells you nothing about the next minute, like raindrops. A busy cashier serves at an average rate μ (mu), say 60 an hour, so one customer takes a minute on average but sometimes much more or much less.
The share of time the till is busy is called its utilisation, ρ (rho) = λ/μ. Here that is 48/60 = 80%. The till has 20% of its time to spare. Surely nobody waits long?
- Utilisation λ/μ
- 80%
- Till busy (measured)
- —
- Customers served
- —
- Average wait (measured)
- —
- Average wait (theory)
- 4.0 min
- Simulated time
- —
At 80% busy the average customer waits 4 minutes for a 1-minute service. The reason is randomness. Sometimes three people arrive within a minute of each other. The till can’t work ahead and bank the idle time from a quiet spell. Idle time is lost for good, while a burst of arrivals leaves a queue that takes a long time to clear.
If customers arrived exactly every 75 seconds and each took exactly 60 seconds, nobody would ever wait. Randomness alone creates the queue, even when capacity comfortably exceeds demand on average.
For this simplest case, called the M/M/1 queue (random arrivals, random service times, one server), the long-run average wait in line has a tidy formula:
average wait = ρ / (1 − ρ) × average service time
At 50% busy you wait one service time on average. At 80%, 0.8/0.2 = 4 service times. The denominator, 1 − ρ, is the spare capacity. It sits at the bottom of a fraction, and that is where the trouble starts.
The explosion near 100%
Drag along the curve below, or focus it and use the arrow keys. The green dot marks the utilisation at which the wait doubles from wherever you are. Notice how close together those doublings get as you approach the right-hand edge.
- Till busy
- 80%
- Spare time
- 20%
- Wait (service times)
- 4.00
- Wait, 3-min checkout
- 12 min
- Wait doubles at
- 88.9%
Going from 80% to 90% busy doesn’t raise the wait by an eighth. It more than doubles it, from 4 to 9 service times. Going on from 90% to 95% more than doubles it again, to 19. Near the top, every time you halve the spare capacity you roughly double the wait. At 100% there is no steady state at all: the line grows without limit.
This is why systems run “efficiently” close to capacity feel broken: hospital emergency departments, motorway traffic, a web server under load. The last 10% of utilisation costs more waiting than the first 80%. It is also why a small drop in demand, like a school holiday, can make a road feel empty. That drop moves you back down the steep part of the curve.
One line or three?
Now take three tills. Shops arrange them in two ways. Supermarkets usually give each till its own line. Banks, post offices and airport security often use one shared, snaking line that feeds whichever till comes free next.
The figure below runs both at once, with exactly the same customers: the same arrival times and the same service times. On the left, each customer picks one of the three lines at random and stays there, which is roughly what happens when you can’t see how full each trolley is. On the right, everyone joins one line. Each till takes 3 minutes per customer on average.
| Three separate lines | One shared line | |
|---|---|---|
| Average wait | — | — |
| Worst wait | — | — |
- Customers so far
- —
- Simulated time
- —
- Shared line, theory (Erlang C)
- —
- Separate lines, arrived when every till was busy: your line was the fastest
- —
The shared line wins on the average, and wins clearly on the worst case. With separate lines, one customer with a huge trolley or a price check holds up everyone behind them, while another till may sit idle. A shared line never leaves a till idle while someone is waiting. It is also fair: nobody who arrives after you is served before you.
At 85% busy the shared line (the M/M/3 queue) averages about 4.9 minutes. The textbook result for it is called the Erlang C formula, after the Danish telephone engineer A. K. Erlang. If customers instead picked a line at random, each line would behave like its own M/M/1 queue at 85%, and the average wait would be 17 minutes. Picking the shortest line recovers most of that loss, but not all of it, and it does not stop the worst waits.
And the other line? When you choose at random, each of three equally good lines is equally likely to be the fastest. So yours is the fastest only about a third of the time. Two times out of three, one of the others really did move faster. The simulation confirms it: over many hours, customers who arrive when every till is busy and pick a line at random are in the fastest line 33% of the time. Picking the shortest line helps, but only to about 48%. You notice and remember the times you lose. Your line is not cursed. The odds are simply against you.
It’s the variability, not just the average
The formula above assumed “fully random” arrivals and service. Real queues can be more regular (appointments, a machine with a fixed cycle) or more erratic (a till that sometimes gets a full weekly shop and sometimes a single banana). A useful measure is the coefficient of variation: the standard deviation of a time divided by its average. Clockwork is 0, fully random is 1, erratic is above 1.
In 1961 the mathematician John Kingman found a simple approximation for one server:
average wait ≈ ρ/(1 − ρ) × (ca² + cs²)/2 × average service time
Here ca and cs are the coefficients of variation of the gaps between arrivals and of the service times. The first factor is the utilisation explosion we have already met. The second is a variability multiplier: it equals 1 when both are fully random, and 0 when both are clockwork.
- Kingman’s estimate
- —
- Simulated (200,000 customers)
- —
- Fully random, for comparison
- —
When arrivals are fully random (ca = 1), Kingman’s formula is exact. This special case was known earlier as the Pollaczek–Khinchine formula. In other cases it is only an estimate. It is very good when the till is busy, within about 5% above 90% busy, and it gets better the busier the server. But it can be well off when the till is quiet and arrivals are more regular than random: at 50% busy with ca = 0 and cs = 1 it gives about twice the true wait, which is why the dot can sit below the curve in Figure 4. Both kinds of variability count equally, and they add.
That is the logic behind many everyday fixes. Express lanes take the small baskets out of the mix, so each lane has less variable service times. Appointments make arrivals regular. Standard procedures make service regular. None of them makes anyone work faster, and all of them shorten the wait.
So when a queue feels broken, ask two questions. How close to 100% busy is it? And how variable is it? A little spare capacity, or a little less randomness, buys far more than you’d guess.
What this model leaves out
- Balking and reneging. Real people see a long line and leave, or give up part-way. This caps real queues and hides some of the explosion, at the cost of lost customers.
- Jockeying. In Figure 3 nobody switches lines. People do, which narrows the gap between separate and shared lines. Real shoppers also judge lines by trolley size, not just by head count.
- Changing demand. Arrival rates here are constant. Real ones follow the lunch rush and the Saturday peak, so a shop can be 60% busy over a day and above 100% for an hour. Queues built in the rush take a long time to drain.
- People aren’t random. Arrivals come in groups, follow bus timetables and react to the queue. Staff speed up when the line is long, and new tills open.
- Steady state. The formulas are long-run averages. Over a single afternoon, as Figure 1 shows, the measured average can wander a long way from them, especially above 90% busy.
- A shared line takes a few seconds longer per customer, to walk to the free till. That is ignored here.
Sources
- M. Harchol-Balter, Performance Modeling and Design of Computer Systems: Queueing Theory in Action (Cambridge University Press, 2013). doi:10.1017/CBO9781139226424 M/M/1 results (average wait ρ/(1−ρ) service times), the M/M/k server farm and Erlang C, and the M/G/1 (Pollaczek–Khinchine) formula. Section 14.4, “Comparison of Three Server Organizations”, compares k separate queues (each arrival sent to one at random) with one shared queue and with one fast server.
- J. F. C. Kingman, “The single server queue in heavy traffic”, Mathematical Proceedings of the Cambridge Philosophical Society 57(4), 902–904 (1961). doi:10.1017/S0305004100036094 The heavy-traffic approximation for the wait in a single-server queue with general arrival and service times, used in Figure 4.
- L. Kleinrock, Queueing Systems, Volume 1: Theory (Wiley, 1975). Standard reference for the M/M/1 and M/M/c queues and the Erlang C formula.
- Wikipedia, “M/M/c queue” and “Kingman’s formula”. en.wikipedia.org Used to cross-check the Erlang C expression and the mean wait C/(cμ − λ), and the form of Kingman’s formula.
Colophon
- Date
- 30 September 2026
- Revised
- 1 October 2026: Figure 3 now starts with random line choice (the one-in-three case) and says exactly who is counted; Figure 1 marks an off-scale result; Figure 4’s legend no longer collides with the ρ line on phones; the Harchol-Balter note names the section.
The simulations use a seeded random number generator (mulberry32) and exact event timing: each customer’s start time is computed from the tills’ free times, not approximated frame by frame. We checked them against the formulas: M/M/1 at 50%, 80% and 90% busy (simulated 1.00, 3.99 and 9.00 service times against 1, 4 and 9), M/D/1 and M/G/1 against Pollaczek–Khinchine, and the shared line against Erlang C.