Little's Law Calculator

L = λW: solve any one of concurrency, arrival rate, and time in system — plus M/M/1 utilization, queue length, and wait times.

Little's Law — L = λW

items

Enter any two of L, λ, W — the third is computed. L is the average number of items concurrently in the system (requests in flight, jobs in a queue, customers in a store).

M/M/1 queue model

/ s
/ s
s
Utilization (ρ)
Avg in system (L)
Avg waiting (Lq)
Time in system (W)
Wait before service (Wq)

A single-server queue. Wait time explodes as utilization approaches 100% — keeping ρ below ~70–80% leaves headroom for bursts.

What Little's Law says

Little's Law is one of the most useful results in all of queueing theory, and one of the simplest: the average number of items in a stable system equals the average arrival rate multiplied by the average time each item spends in the system.

L = λ × W

What makes it remarkable is how few assumptions it needs. It does not care about the arrival pattern, the service-time distribution, the number of servers, or the queueing discipline. As long as the system is stable — nothing is piling up without bound — the relationship holds exactly. That generality is why it turns up everywhere from factory floors to web-service capacity planning.

Reading it three ways

Because any one of the three quantities follows from the other two, the same formula answers three different questions:

  • How many in flight? A service handling 100 requests per second, each taking 250 ms, has L = 100 × 0.25 = 25 requests in flight at any instant — so a thread pool or connection pool smaller than 25 will bottleneck.
  • How long is the wait? If 50 jobs sit in a queue that drains at 200 per second, each new job waits W = 50 / 200 = 0.25 s before it clears.
  • What throughput? If you observe 12 orders in progress and each takes 3 seconds, the line is completing λ = 12 / 3 = 4 orders per second.

The M/M/1 hockey stick

Little's Law tells you the average, but not how bad the tail gets. For that you need a queueing model. The M/M/1 model — one server, random (Poisson) arrivals, random (exponential) service — shows the effect every capacity planner learns to fear: waiting time does not rise gently as you load a system, it explodes near full utilization.

Utilization ρAvg wait Wq (in service times)
50%1.0×
80%4.0×
90%9.0×
95%19.0×
99%99.0×

At 90% utilization a request already waits nine times its own service time just to get started. This is why running servers, disks, or pools "hot" to save money backfires: the last few percent of utilization cost enormous latency. Aim to keep steady-state utilization in the 70–80% range and leave the rest for bursts.

Related tools: the Erlang C calculator extends this to many servers (agents, threads, connections), and the data transfer time calculator covers the bandwidth side of throughput.