LocalTools
Instant · no sign-up · works offline

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

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.