Free tool Erlang C calculator for call center staffing
Enter how many contacts arrive in an interval, how long each one takes and the service level you promise. Erlang C gives the number of agents you need on the phones, how long callers wait, and how many people to schedule once breaks, training and absence are taken out.
- Agents, ASA, occupancy
- Service level by headcount
- Runs locally
How many agents do you need?
The defaults are the worked example from Call Centre Helper, so you can check the result against it: 100 calls in 30 minutes, 3-minute handle time, 80% answered within 20 seconds.
Calls or tickets that arrive in one interval. Use the busiest interval you are planning for.
The period the contact count covers.
Talk + hold + after-call work. 180 or 3:00.
Share of contacts to answer within the target time, e.g. 80.
The "20" in 80/20. 0 means answered without waiting.
Upper limit on the share of time agents spend handling contacts. Leave empty for no limit.
Paid time agents are not available: breaks, meetings, training, absence.
Agents required
14
On the phones at the same time.
Agents to schedule
20
After shrinkage, rounded up.
Service level achieved
88.8%
Answered within the target time.
Probability of waiting
17.4%
Erlang C: a contact finds every agent busy.
Average speed of answer (s)
7.8
Average wait across all contacts.
Occupancy
71.4%
Traffic ÷ agents.
Traffic intensity (Erlangs)
10.00
Contacts × handle time ÷ interval.
Service level by number of agents
Green meets every target; amber meets the service level but breaks the occupancy cap.
| Agents | Scheduled | Occupancy | Probability of waiting | Service level | Average speed of answer |
|---|---|---|---|---|---|
| 11 | 16 | 90.9% | 68.2% | 39.0% | 2 min 03 s |
| 12 | 18 | 83.3% | 44.9% | 64.0% | 40.4 s |
| 13 | 19 | 76.9% | 28.5% | 79.6% | 17.1 s |
| 14 · required | 20 | 71.4% | 17.4% | 88.8% | 7.84 s |
| 15 | 22 | 66.7% | 10.2% | 94.1% | 3.67 s |
| 16 | 23 | 62.5% | 5.7% | 97.1% | 1.72 s |
| 17 | 25 | 58.8% | 3.1% | 98.6% | 794 ms |
| 18 | 26 | 55.6% | 1.6% | 99.3% | 358 ms |
Share these inputs: the values go after the # in the link, so they never reach a server.
https://tapcub.com/tools/erlang-c-calculator
Version v1.0Updated Update history
Two headcounts and three quality numbers
Erlang C answers "how many agents must be on the phones", then shrinkage turns that into "how many people to roster".
Agents required
The smallest number of agents, all logged in and ready, that meets the service level and stays under the occupancy cap. In the example, 13 agents reach 79.6% — just short of 80% — so the answer is 14.
Agents to schedule
Required agents ÷ (1 − shrinkage). With 30% shrinkage, 14 on the phones means 20 on the rota. Shrinkage is usually the largest lever in the whole plan.
Service level and ASA
Service level is the share answered within the target; ASA is the average wait across all contacts, including those answered at once. A good ASA can hide a long tail, so read both.
Occupancy
Traffic ÷ agents: how much of their ready time agents spend handling contacts. High occupancy looks efficient, but sustained high levels leave no time to recover between calls.
Erlang C assumes nobody hangs up while waiting and that contacts arrive at random. Real queues lose some callers, so Erlang C tends to slightly overstate the agents needed when abandonment is high.
From a forecast to a rota
Run the calculator once for each interval you staff.
-
1
Take the busiest interval
Use the contacts forecast for one interval — say Monday 10:00–10:30 — not a daily average. Staffing to the average leaves the peak short.
-
2
Use measured handle time
Take average handle time from your phone system or helpdesk for the same queue, including after-call work.
-
3
Set the promise
Enter the service level you commit to, such as 80% in 20 seconds, and an occupancy cap if you use one.
-
4
Add shrinkage and roster
Enter your shrinkage and use "agents to schedule" per interval to build shifts. Look at the table to see what one agent more or less would do.
Erlang C, step by step
The calculator uses the standard Erlang C model (an M/M/N queue). Erlang C is computed from Erlang B with a recurrence, which stays accurate for hundreds of agents where the textbook factorial form overflows.
- Assumes random (Poisson) arrivals, exponential handle times and no abandonment
- Agents are interchangeable and take any contact in the queue
- Needs more agents than Erlangs of traffic; otherwise the queue grows without limit
- Occupancy cap: required agents are at least traffic ÷ cap
Traffic intensity
A = contacts × AHT ÷ interval (s)
100 × 180 ÷ 1,800 = 10 Erlangs
Erlang B (recurrence)
B(0) = 1; B(n) = A·B(n−1) ÷ (n + A·B(n−1))
Probability of waiting
C = N·B ÷ (N − A·(1 − B))
N = 14, A = 10 → 0.1741
Service level
SL = 1 − C·e^(−(N − A)·t ÷ AHT)
1 − 0.1741·e^(−4·20/180) = 88.8%
ASA and occupancy
ASA = C·AHT ÷ (N − A); occupancy = A ÷ N
0.1741·180 ÷ 4 = 7.8 s; 10 ÷ 14 = 71.4%
Adding agents one at a time
The Call Centre Helper example: 100 calls per 30 minutes, 180-second handle time, target 80% in 20 seconds, 85% occupancy cap, 30% shrinkage. Traffic is 10 Erlangs.
| Agents | Probability of waiting | Service level (20 s) | ASA | Occupancy |
|---|---|---|---|---|
| 11 | 68.2% | 39.0% | 2 min 03 s | 90.9% |
| 12 | 44.9% | 64.0% | 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% |
| 15 | 10.2% | 94.1% | 3.7 s | 66.7% |
14 agents is the first count to reach 80%. The 12th agent adds 25 points of service level; the 15th adds 5. Scheduled headcount: 14 ÷ (1 − 0.30) = 20. Source: Call Centre Helper, "Erlang C Formula – Made Simple".
Where Erlang C plans go wrong
The formula is rarely the problem. The inputs are.
Using daily averages
Contacts cluster by hour. A day's volume spread evenly understaffs the peak and overstaffs the quiet hours. Plan interval by interval.
Leaving out after-call work
Handle time is talk + hold + wrap-up. Using talk time alone can understate traffic by a fifth or more.
Forgetting shrinkage
Erlang C gives agents on the phones. Rostering that number leaves the queue short every time someone is on a break or in training.
Using it for chat as-is
A chat agent handles several conversations at once, so one agent is not one server. Use the chat staffing calculator.
Staffing for website chat
TapCub is live chat on your website, not a phone system. Chat follows different rules from a call queue, and these are the parts of TapCub that help you staff it.
Concurrency limit per agent
Chats are assigned by least load or round robin, with a maximum number of concurrent chats for each agent.
Learn moreFirst response, average and median
The support report shows how long visitors wait for the first reply from a person, with a weekday × hour view of when conversations start.
Learn moreOffline messages outside hours
Outside working hours the widget collects a message and an email instead of leaving a visitor waiting.
Learn moreErlang C questions
Still have a question?
Chat with the team behind TapCub — we usually reply within a few hours on business days.
What is Erlang C?
A queueing formula from telephone engineering that gives the probability a contact has to wait when N agents handle random arrivals with a given traffic load. From it you get the service level, the average speed of answer and the number of agents needed for a target.
How do I calculate how many agents I need?
Work out traffic in Erlangs (contacts × handle time ÷ interval length), then find the smallest number of agents whose Erlang C service level meets your target. Divide by (1 − shrinkage) to get the number to schedule. The calculator does both.
What is a service level like 80/20?
A promise that 80% of contacts are answered within 20 seconds. The percentage and the seconds are both inputs; the share answered depends strongly on how many agents are available.
What is shrinkage?
The share of paid time agents cannot take contacts: breaks, meetings, coaching, training, sickness and holidays. Measure it from your own rota and attendance data rather than borrowing a figure.
Does Erlang C account for callers hanging up?
No. It assumes everyone waits until answered. When many callers abandon, the real queue is shorter than Erlang C predicts; the Erlang A model handles abandonment but needs a patience estimate.
Can I use Erlang C for live chat?
Not directly, because one chat agent handles several conversations at once. The chat staffing calculator treats each agent as several chat slots and says what that ignores.
Why does a 15-minute interval give a different answer from 60 minutes?
Erlang C assumes a steady arrival rate within the interval. Shorter intervals follow the peaks more closely, so they usually show a higher requirement at busy times.
Update history
New features, fixes and data refreshes for this tool, newest first.
-
· v1.0
LaunchedFirst release.
Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates
Plan the chat queue too
Many support teams run phones and website chat side by side. Chat has its own staffing maths, and its own response-time numbers to track.