Erlang C Calculator for Call Center Staffing
Enter the calls you expect in an hour, how long they take to handle, and the service level you have promised. The calculator returns the agents you need on the phones, the headcount to roster once shrinkage is added back, and what the queue does at that staffing level.
Every figure above is derived from the inputs you typed, using the Erlang C queueing model. It is a model, not a measurement of any call center, and it is only as good as the arrival rate and handle time you feed it. Run it per interval rather than once for a whole day.
What the calculator is doing
First it converts your call volume into offered load, measured in Erlangs: the calls arriving in an hour multiplied by the average handle time, divided by an hour. That is how many agents would be permanently busy if calls arrived perfectly evenly. It is the floor. Staff at exactly the offered load and the queue grows without limit, because real arrivals are not even.
Then it walks upward from that floor, one agent at a time, asking the Erlang C formula for the probability that an arriving call finds everyone busy. From that probability it reads the share of calls answered inside your target, and it stops at the first agent count that meets the service level you asked for.
Finally it adds shrinkage back. Erlang C answers "how many agents on the phones"; payroll needs "how many people on the roster". Dividing by the share of paid time agents are actually available converts one into the other.
If you want the formula written out, with the Erlang B recursion it is built on and a worked example, the long-form walk-through lives in the call center staffing formula guide.
Erlang C questions people actually ask
What is the Erlang C formula?
Erlang C gives the probability that a call arriving at a queue finds every agent busy and has to wait. It is built from the offered load in Erlangs -- calls per hour multiplied by average handle time, divided by an hour -- and the number of agents on the phones. Once you know that waiting probability you can read off the service level, the average speed of answer and agent occupancy for any staffing level.
What is an Erlang?
An Erlang is one hour of call traffic in one hour of clock time. It is the number of agents who would be busy if calls arrived perfectly evenly and nobody ever queued, which is why it is the floor for staffing and never the answer on its own.
Why does the calculator ask for shrinkage?
Erlang C tells you how many agents have to be on the phones. It does not know about breaks, training, meetings, sickness or holiday. Shrinkage is the share of paid time agents are not available to take calls, and dividing the agents-on-phones figure by the available share gives the headcount you actually have to roster.
What does Erlang C assume, and when is it wrong?
It assumes calls arrive at a constant average rate as a Poisson process, that handle time is exponentially distributed around the mean you enter, that the queue is unlimited, and that nobody abandons or redials. Real callers do abandon, so Erlang C is conservative and tends to over-staff. It also breaks down where arrivals are bursty rather than random, which is why it is calculated per interval rather than once for a whole day.
Why does adding one agent change the answer so much?
Queueing is non-linear. Near the offered load, waiting time climbs steeply as agents are removed and falls steeply as they are added, and well above the offered load extra agents buy almost nothing. That is why staffing to a service level target gives a very different answer from staffing to a headcount ratio, and why the model is worth running per interval.