Erlang C Formula Explained for Contact Center Staffing
Learn the Erlang C formula for probability of waiting, average speed of answer, and service level, with a worked contact-center staffing example.

Key takeaways
- Offered load equals contact arrival rate multiplied by average handle time.
- Erlang C requires productive agents to exceed offered load and assumes customers do not abandon.
- Probability of waiting drives both average speed of answer and service-level estimates.
- The result is a queue requirement before shrinkage, skills, breaks, and roster constraints.
- Validate the model against actual intervals before using it as a staffing commitment.
The Erlang C formula estimates how likely a contact is to wait when a fixed number of agents serve one queue. From that probability, planners can estimate average speed of answer and the share of contacts answered within a service-level target.
You do not need to calculate factorials by hand to use Erlang C. You do need to understand the inputs, the assumptions, and what the answer leaves out. This guide explains the formula in operational language and works through one example.
What Erlang C calculates
Erlang C models an M/M/N queue: arrivals follow a Poisson process, service times are represented by an exponential distribution, N identical agents serve one queue, waiting space is unlimited, and customers do not abandon. The model reaches a stable steady state only when the number of agents is greater than the offered load.
The Wharton and Technion tutorial on telephone call centers describes Erlang C as the simplest and most widely used queueing model in call-center planning, while also documenting the practical limits of its assumptions.
The inputs you need
- Contact volume: the number of contacts expected during the planning interval.
- Average handle time: the average service time, using the same time unit as the arrival rate.
- Number of agents: the agents simultaneously available to handle this queue before shrinkage.
- Service-level threshold: the wait time used for a target such as 80 percent answered within 20 seconds.
Forecast accuracy matters more than extra decimal places in the formula. If volume or handle time is biased, Erlang C will calculate a precise answer to the wrong workload.
Step 1: calculate offered load
Offered load measures the amount of work arriving during the interval. If ฮป is contacts per time unit and h is average handle time in that same unit, then:
a = ฮป ร h
The result a is measured in erlangs. One erlang is one agent occupied continuously for the interval. For example, 100 calls per hour with a six-minute average handle time create 10 erlangs of offered load: 100 ร 0.1 hour = 10.
Step 2: check occupancy and stability
With N agents, the modelled occupancy is:
ฯ = a / N
Erlang C requires N > a, so ฯ must be below 1. If offered load equals or exceeds staffed capacity, the no-abandonment queue does not have a finite steady-state waiting time. Operationally, occupancy should usually stay comfortably below 100 percent because breaks, variability, and fatigue are not free.
Step 3: calculate the probability of waiting
The Erlang C probability that an arriving contact must wait is:
P(wait) = [a^N / (N! ร (1 - a/N))] รท [ฮฃ(k=0 to N-1) a^k/k! + a^N / (N! ร (1 - a/N))]
This expression compares the probability mass below full capacity with the probability that all agents are busy. In practice, calculators use stable recursive methods to avoid very large powers and factorials.
Step 4: calculate average speed of answer
If h is average handle time, the expected average wait before service is:
ASA = P(wait) ร h / (N - a)
ASA is an average. It does not mean every customer waits that long, and it can conceal a long tail. Pair it with service level and the probability of waiting.
Step 5: calculate service level
For a service threshold t, expressed in the same time unit as h:
Service level within t = 1 - P(wait) ร e^[-(N - a)t/h]
This estimates the proportion answered within the threshold under the Erlang C assumptions. It is the queueing result before scheduling losses, shrinkage, skill constraints, or abandonment are added.
Worked example: 100 calls per hour
Assume 100 calls per hour, a six-minute average handle time, 14 simultaneously available agents, and a 20-second service threshold.
- Offered load: 100 ร 0.1 hour = 10 erlangs.
- Modelled occupancy: 10 รท 14 = 71.4 percent.
- Probability of waiting: approximately 17.4 percent.
- Average speed of answer: approximately 15.7 seconds.
- Service level: approximately 86.1 percent answered within 20 seconds.
These results describe 14 agents continuously available for the queue. If the operation expects 25 percent shrinkage, it cannot simply schedule 14 people and expect this result. The roster needs enough paid capacity to leave roughly 14 queue-ready agents after meetings, breaks, coaching, leave, and other planned losses.
Turn queue requirements into a schedule
Erlang C produces an interval-level requirement, not a roster. The next step is to convert required queue-ready agents into scheduled headcount and then build shifts that cover the intervals.
- Add shrinkage deliberately. Use the correct relationship for your definition, often scheduled headcount = required productive agents รท (1 - shrinkage).
- Respect skills and channels. A total headcount does not guarantee that the correct skills are available in each queue.
- Avoid rounding every interval in isolation. Shift construction needs to balance adjacent intervals, breaks, contracts, and handovers.
- Review forecast error. Compare planned and actual volume, handle time, staffing, and service results after the period.
Use the free Soon staffing calculator to test Erlang C, Erlang A, and other staffing scenarios without calculating the formula by hand.
When Erlang C is the wrong model
Erlang C is a useful baseline for a relatively clean inbound queue. It becomes less reliable when customers abandon, demand changes sharply inside the interval, agents serve multiple skills, or concurrency and deferred work affect capacity.
Read the guide to Erlang C assumptions and limitations before treating the output as a staffing commitment. For queues with abandonment or more complex operating behavior, compare Erlang C, Erlang A, and simulation.
Tool
Calculate your staffing requirement
Test Erlang C, Erlang A, Erlang B, and linear staffing scenarios with the free Soon calculator.
Explore