Erlang C calculator
How many agents do you need to answer 80% of calls in 20 seconds? Enter your forecast and targets — the calculator finds the smallest team that meets them and adds shrinkage for the schedule.
Erlang B: phone lines / trunks
How the Erlang C formula works
First the forecast becomes traffic intensity in Erlangs: A = contacts × AHT ÷ interval length. 100 calls in 30 minutes with a 180-second AHT is 100 × 180 ÷ 1800 = 10 Erlangs — ten agents would be busy all the time just to keep up.
With N agents, Erlang C gives the probability that a caller has to wait:
P(wait) = [ A^N / N! × N/(N−A) ] ÷ [ Σk=0..N−1 A^k / k! + A^N / N! × N/(N−A) ]
From that probability:
Service level = 1 − P(wait) × e^(−(N−A) × T / AHT)
ASA = P(wait) × AHT ÷ (N − A)
Occupancy = A ÷ N
The calculator increases N from just above A until every target you set is met. That is the number of agents who must be logged in and available. Because people also take breaks, attend training and are sometimes absent, the number you schedule is N ÷ (1 − shrinkage), rounded up.
This page uses the numerically stable recurrence through Erlang B, so large contact volumes (thousands per interval) do not overflow.
Reading the result
- Agents required — logged-in, available agents for that interval.
- Agents to schedule — required agents grossed up for shrinkage.
- Occupancy — the share of time agents are busy. Above roughly 85–90% sustained, burnout and AHT tend to rise, which is why a max occupancy cap is offered.
- ASA — average speed of answer across all contacts, including those answered immediately.
Limits of Erlang C
Erlang C assumes nobody hangs up while waiting, contacts arrive at random (Poisson), and every agent can take every contact. Real queues have abandonment, so Erlang C usually overstates the agents needed a little when service levels are low. It is still the standard starting point for workforce planning, and it is what most WFM tools and Excel templates use.
Questions
What shrinkage should I use?
Many contact centers plan between 25% and 35%. Measure yours as (paid hours − hours available to handle contacts) ÷ paid hours over a few weeks.
Can I use this for chat or email?
For chat with one conversation per agent, yes. For concurrent chats, a common approximation is to divide AHT by the effective concurrency (for example 2.5 chats at once). Email and back-office work are not queued in real time; use a workload calculation instead.
Why does adding one agent change the service level so much?
Queues are non-linear. Near full utilization, each extra agent removes a large share of the waiting; the table under the result shows this step by step.