Toolgeist › Math & Unit

Erlang C Calculator — Staffing, Wait Times & Server Sizing

Work out how many agents or servers you actually need. This computes a real M/M/c queue — Poisson arrivals, exponential service, one shared queue — giving utilisation, the Erlang C probability that an arrival has to wait at all, the average wait, the queue length, and the smallest server count that meets a service level such as ‘84% answered within 20 seconds’. Erlang B and C use the numerically stable recurrence rather than factorials, which overflow long before the server counts real capacity planning uses, and the results were checked against published trunk-sizing tables.

How to use Erlang C Queueing Calculator — Staffing & Server Sizing

  1. Pick a preset — call centre, support desk, API servers or checkout lanes.
  2. Enter your arrival rate, service rate per server, and current server count.
  3. Read utilisation, chance of waiting and average wait.
  4. Set your service-level target and let it compute the servers required.

Frequently asked questions

What is an erlang?
The offered load: arrival rate divided by service rate. If 300 calls arrive per hour and each takes 4 minutes, you are offering 300 ÷ 15 = 20 erlangs, meaning 20 agents would be busy continuously if none of them ever sat idle. You always need more servers than the erlang figure, because arrivals are random rather than evenly spaced.
Why does the wait explode near 100% utilisation?
Because randomness needs slack to absorb it. Waiting time grows hyperbolically as utilisation approaches 100%, so at 99% a small traffic increase produces an enormous queue. This is why targeting maximum utilisation is not efficiency but fragility — and why the wait-versus-servers curve on this page has a cliff rather than a gentle slope.
Why is one big team better than several small ones?
Pooling. A team of 6 handling 5 erlangs and a team of 60 handling 50 erlangs sit at exactly the same 83% utilisation, but the small team makes 59% of arrivals wait while the large team makes only 12% wait. Splitting one queue into per-skill or per-region queues destroys service levels without changing headcount or utilisation at all.
What is the difference between Erlang B and Erlang C?
Erlang B assumes there is no queue — if every server is busy the arrival is turned away, which is the right model for phone trunks or connection pools with no waiting room. Erlang C assumes arrivals wait indefinitely. C is always at least as large as B for the same load, and this page reports C because most staffing questions involve a queue.
When does this model mislead me?
It assumes Poisson arrivals, exponential service times, infinite patience, and no time-of-day variation. Real service times are usually less variable than exponential, which makes this conservative; real arrivals are often burstier, which makes it optimistic. It also ignores abandonment — customers hanging up — which the Erlang A model handles. Use it for sizing and sanity checks, not as a replacement for simulating your real arrival pattern.
Can I use it for servers rather than people?
Yes, and the API preset does exactly that. Requests per second as the arrival rate, completions per second per worker as the service rate. The same warning about high utilisation applies, which is why autoscaling on latency behaves so much better than autoscaling on CPU near saturation.

Related Math & Unit tools

Also searched for: erlang c calculator · call centre staffing calculator · m/m/c queue calculator · how many servers do i need · queueing theory wait time formula

Browse all 738 free tools on Toolgeist →