Work out how many agents a support queue needs to hit its service level. Enter the contacts you expect in an interval (15, 30 or 60 minutes), the average handle time in seconds, a service level target such as 80% answered within 20 seconds, and your shrinkage.
The calculator returns the raw Erlang C agents (the smallest whole number of agents above the traffic intensity that meets the target), the agents to roster after shrinkage, the service level achieved, the average speed of answer, occupancy and the probability that a contact waits. It shows the working: traffic intensity, the Erlang C formula and the search over agent counts.
For chat it applies a concurrency factor, dividing handle time by the number of chats an agent runs at once. Add opening hours and an intraday volume shape to see agents needed in every interval of the day.
No sign-up. Every calculation runs in your browser, and the same maths is available as a free JSON API at https://www.lorikeet.tools/api/tools/erlang-c.
The calculator opens on this example: 100 calls per 30 minute interval, 180 second average handle time, a target of 80% answered within 20 seconds, 30% shrinkage and an 85% occupancy cap. Traffic intensity is 100 x 180 / 1800 = 10 Erlangs.
| Agents | Probability of waiting | Service level (20 s) | Average speed of answer | Occupancy |
|---|---|---|---|---|
| 11 | 68.2% | 39% | 2 min 3 s | 90.9% |
| 12 | 44.9% | 64% | 40.4 s | 83.3% |
| 13 | 28.5% | 79.6% | 17.1 s | 76.9% |
| 14 | 17.4% | 88.8% | 7.8 s | 71.4% |
Result: 14 agents taking calls (13 reach only 79.6%), and 20 agents to roster after 30% shrinkage (14 / 0.7).
Erlang C is a queueing formula that estimates how many agents a queue needs to answer a given share of contacts within a target time. It assumes contacts arrive at random, every caller waits rather than hanging up, and each agent handles one contact at a time. It is the standard starting point for phone staffing and a reasonable approximation for chat.
Traffic intensity A is contacts per interval multiplied by average handle time in seconds, divided by the interval length in seconds. For example, 100 calls in 30 minutes with a 180 second handle time is 100 x 180 / 1800 = 10 Erlangs: ten agents would be busy all the time. Erlang C always needs more agents than A, or the queue grows without limit.
Fourteen. The traffic is 10 Erlangs; 13 agents answer about 79.6% of calls within 20 seconds, just short of the target, and 14 agents answer about 88.8% with an average speed of answer of 7.8 seconds and 71.4% occupancy. With 30% shrinkage you roster 14 / 0.7 = 20 agents.
Erlang C tells you how many agents must be logged in and taking contacts. Shrinkage is the paid time they are not: breaks, training, meetings, leave and sickness. Divide the Erlang C result by one minus shrinkage and round up, so 14 agents at 30% shrinkage means 20 on the roster.
Only as an approximation, because Erlang C assumes one contact per agent at a time. This calculator divides handle time by concurrency, so an agent on two chats at once spends half of the handle time per chat. Use the handle time you see when agents run at that concurrency, since concurrent chats slow each other down.
Erlang C assumes nobody abandons. In practice some customers hang up or close the chat, which removes load from the queue, so Erlang C is slightly conservative when abandonment is high. Erlang A models abandonment if you need that precision.