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?

48 per hour
60 per hour
Utilisation λ/μ
80%
Till busy (measured)
—
Customers served
—
Average wait (measured)
—
Average wait (theory)
4.0 min
Simulated time
—
Figure 1.One checkout with random arrivals and random service times. The wait is time spent in line, not counting service. The measurements start again whenever you move a slider. The simulation is seeded, so New customers gives a different but repeatable crowd.

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%
Figure 2.Average wait in line for one random till (M/M/1), in multiples of the average service time, against utilisation. Drag the brass dot, or focus the chart and press the arrow keys (Shift for steps of 10%). The “3-minute checkout” readout converts the wait to minutes for a typical supermarket service.

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.

85% busy
Waiting times in the two arrangements, same customers
Three separate linesOne 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
—
Figure 3.Three tills, the same stream of customers, two ways of queuing. By default, customers in the separate lines pick a line at random. “Your line was the fastest” counts only customers who arrived when all three tills were busy, and asks whether either of the other two lines would have got them to a till sooner. Measurements restart when you move the slider.

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.

80%
1.0 (random)
1.0 (random)
Kingman’s estimate
—
Simulated (200,000 customers)
—
Fully random, for comparison
—
Figure 4.One till, average service 3 minutes, average wait in line. Times are drawn from gamma distributions with the chosen coefficient of variation. The simulated value is recomputed for 200,000 customers a moment after you stop moving a slider.

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.