Model a service system with Poisson arrivals and exponential service times. Enter the arrival rate λ, the service rate per server μ, and the number of servers c (set c = 1 for the classic single-server M/M/1 queue). Get utilization ρ, average queue length Lq, number in system L, waiting time Wq and time in system W instantly.
This calculator solves the two most widely used queueing models in operations research: M/M/1 (a single server) and M/M/c (multiple parallel servers). Both assume Poisson (random) arrivals at rate λ and exponentially distributed service times at rate μ per server, drawn from an infinite population into an unlimited queue served first-come-first-served. From just three inputs it derives utilization, queue length, number in system and the average waiting and flow times — the core numbers needed to size a call center, checkout, help desk, clinic, or any service operation.
Queues are described with Kendall notation A/B/c. The first letter is the arrival process, the second is the service-time distribution, and c is the number of servers. M stands for "Markovian" (memoryless): exponential inter-arrival or service times, equivalently a Poisson process.
M/M/1 is one server with Poisson arrivals and exponential service. M/M/c is c identical parallel servers sharing one queue (think a single bank line feeding several tellers). Pooling demand into one queue across c servers is far more efficient than c separate single-server queues — this calculator quantifies that gain.
Utilization (traffic intensity): ρ = λ ÷ (c·μ). The system is stable only when ρ < 1.
M/M/1: Lq = ρ² ÷ (1 − ρ), L = ρ ÷ (1 − ρ), Wq = Lq ÷ λ, W = 1 ÷ (μ − λ). Note L = λ·W and Lq = λ·Wq — Little's Law links them.
M/M/c: first compute the probability the system is empty, P0, from the Erlang-C sum with offered load a = λ/μ: P0 = 1 ÷ [ Σ (aⁿ/n!) for n=0..c−1 + (a^c / c!)·(1/(1−ρ)) ]. Then Lq = P0·a^c·ρ ÷ (c!·(1−ρ)²), Wq = Lq ÷ λ, W = Wq + 1/μ, and L = λ·W. M/M/1 is just the c = 1 special case of these.
The defining feature of queues is that waiting time explodes nonlinearly as ρ approaches 1. In M/M/1, Wq is proportional to ρ/(1−ρ). Going from 80% to 90% utilization does not add 10% more waiting — it roughly doubles it, and 90% to 95% doubles it again. This is why high-variability service systems (hospitals, emergency response, IT incident desks) deliberately run at moderate utilization: the "spare" capacity is what absorbs random surges and keeps waits bounded. Running a server at 99% utilization looks efficient on a spreadsheet but produces enormous, volatile queues in practice.
A help desk receives λ = 8 tickets/hour. One agent resolves μ = 10 tickets/hour. For M/M/1: ρ = 8/10 = 0.8 (80% busy). Lq = 0.8²/(1−0.8) = 0.64/0.2 = 3.2 tickets waiting. L = 0.8/0.2 = 4 in system. Wq = 3.2/8 = 0.4 hr = 24 min waiting; W = 1/(10−8) = 0.5 hr = 30 min total.
Now add a second agent (c = 2, M/M/2) keeping the same μ = 10 each: ρ drops to 8/20 = 0.4, and the average wait collapses to a fraction of a minute. Doubling servers does far more than halve the wait, because pooling crushes the ρ/(1−ρ) term.
M/M/1 has a single server; M/M/c has c identical parallel servers drawing from one shared queue. Both assume Poisson arrivals (rate λ) and exponential service (rate μ per server). M/M/1 is the special case c = 1. Pooling demand across c servers in one line is much more efficient than running c independent single-server lines, which this tool makes obvious by comparing the two.
ρ = λ ÷ (c·μ) is the fraction of total service capacity being consumed. If ρ ≥ 1, arrivals meet or exceed the system's ability to serve them, so the queue grows without bound and no steady-state average waiting time exists. The calculator flags this as unstable. Even at ρ just under 1 the queue and waits become extremely long, so practical systems target ρ well below 1.
Erlang C gives the probability that an arriving customer has to wait in an M/M/c system, and underlies the P0 (empty-system probability) used to compute Lq for multiple servers. It is the workhorse of call-center and contact-center staffing — you choose the number of agents c so that the probability of waiting (and the resulting average wait) meets a service-level target.
Because average wait scales with ρ/(1−ρ), which shoots toward infinity as ρ approaches 1. Going from 90% to 95% utilization roughly doubles the queue; 95% to 99% multiplies it several times more. Randomness in arrivals and service means a highly loaded server spends long stretches with a backlog. Holding some spare capacity is what keeps queues short and stable.
Poisson arrivals (independent, memoryless inter-arrival times), exponential service times, infinite calling population, an unlimited queue, first-come-first-served discipline, and statistically identical servers in the M/M/c case. Real systems with scheduled arrivals, finite queues, balking, or non-exponential service deviate from these results, but M/M/1 and M/M/c remain excellent first-cut planning models.