Skip to content

Free tool

How many people have to be free to answer your calls?

Put in what a busy half hour looks like and how long you are willing to make somebody wait. Get back the number who have to be free, the number to put on the rota once time off the phones is counted, and what one more person would change.

Runs in your browser, so your numbers go nowhereChecked against 3 published worked examples, every one cited belowTells you which constraint set the number

Staffing a phone line is not division. Twice the calls does not need twice the people, and a team that is busy 90% of the time keeps callers waiting many times longer than one busy 70% of the time. The arithmetic that does describe it has been around since 1917, when a Danish engineer worked out how many circuits a telephone exchange needed. It is the same problem.

Work out your own

Count a typical busy period, not an average day. The busiest stretch is what sizes the team.

Notes, updating a record, anything that stops the next call arriving. Zero if there is none.

What counts as answering in time

These are three different promises and they give three different answers. Pick the one you actually make.

Breaks, training, meetings, leave. This changes the rota, never the number who must be free.

How busy the people who are free may be. Above about 85% a team has no recovery time between calls.

Your numbers stay in your browser. Nothing is uploaded.

What the numbers say

People who must be free
14
People to put on the rota
20
Answered in time
88.8%
Callers who wait at all
17.4%
Average wait, counting everyone
7.8 s
Average wait for those who do wait
45 s
How busy each of them is
71.4%
Work arriving
10 erlangs
What set this number
the target you chose

One more person

The same half hour with one extra person free:

Answered in time
94.1%
Average wait, counting everyone
3.7 s
How busy each of them is
66.7%

One file: the numbers, and every assumption behind them.

A whole day at once

A CSV with a label, a call count, and optionally a handling time per row.

What this answers, and what it does not

The model behind this page is Erlang C. It assumes calls arrive at random at a steady average rate across the period, that anybody free can take any call, that one person handles one call at a time, that callers are answered in the order they arrived, and that nobody hangs up. Those assumptions are what make the arithmetic possible, and each one is a way the answer can be wrong.

Because nobody hangs up in the model, it overstates what you need whenever real callers give up, which they do. Because the arrival rate is steady across the period, a five-minute rush inside a half hour is invisible to it; use a shorter period if your day has spikes. And because one person handles one call at a time, it does not describe somebody also working three chats, and it does not describe the case where only two of your five people are able to take a given call.

It also will not tell you a rota. Feeding it a day of intervals gives you a requirement per interval, each calculated independently, with no shift lengths and no breaks placed anywhere. That table is an input to building a schedule. It is not a schedule.

Checked against published examples

A calculator that is wrong by one person still looks entirely plausible, so the only useful claim is one you can check. Every case below was read off the publisher's own page on the date shown, and the right-hand column is this page's own arithmetic on the same inputs. The same cases are assertions in npm run check:erlang, so the table cannot quietly stop being true.

Published worked examples, and what this page computes from the same inputs.
CaseThe inputsWhat the source publishesWhat this page computesSource
Westbay Engineers400 calls an hour, 180 seconds each, willing to tolerate a 30-second average delay.23 must be free23 must be freeErlang C calculator, Westbay Engineers
Read 2026-09-06
Call Centre Helper100 calls in 30 minutes, 180 seconds each, 80% answered within 20 seconds, 30% of paid time off the phones.14 must be free, 20 on the rota, 88.8% answered in time, 7.8 s average wait, 71.4% occupancy14 must be free, 20 on the rota, 88.8% answered in time, 7.8 s average wait, 71.4% occupancyErlang C formula worked example, Call Centre Helper
Read 2026-09-06
Call Centre Helper500 calls in 30 minutes, 360 seconds each, 80% answered within 20 seconds, and nobody worked past 90%.112 must be free, 160 on the rota, 91.4% answered in time, 5 s average wait, 89.3% occupancy112 must be free, 160 on the rota, 91.4% answered in time, 5.0 s average wait, 89.3% occupancyHow to calculate occupancy in the contact centre, Call Centre Helper
Read 2026-09-06

Note that the Westbay case sets an average wait of 30 seconds, not “80% answered in 20 seconds”. Read as an 80/20 target it gives a different answer: at 23 people the 20-second service level is about 70%. The two targets are different promises, which is why the calculator makes you pick one.

How it works underneath

Everything starts with offered load, measured in erlangs: the calls arriving multiplied by how long each takes, divided by the length of the period. A hundred calls of three minutes in half an hour is ten erlangs, which means ten people would be busy every second of it with nothing to spare. Ten people is therefore the floor nobody can staff below, and the whole question is how many more than ten you need so that callers are not waiting forever.

From the load and a headcount, Erlang B gives the chance every person is busy, and Erlang C turns that into the chance a caller has to wait at all. Both are computed here by the iterative recurrence B(n) = A·B(n−1) / (n + A·B(n−1)) rather than by the textbook expression with factorials in it. The two are the same mathematics; only one of them survives contact with a computer. Powers and factorials overflow a double-precision number somewhere around 170 people and start losing accuracy well before that, while every value in the recurrence stays between 0 and 1.

The wait figures follow from there. The average wait across every caller is the chance of waiting multiplied by the handling time over the spare capacity. The average wait of the callers who actually wait leaves out everybody answered instantly, and is several times larger, which is why this page prints both. A tool that shows you eight seconds when the people who wait are waiting forty-five has told you something true and useless.

Then two corrections that do different jobs at different points. Occupancy is a property of the people who are free, and capping it can force the headcount up on its own. Shrinkage is applied last and only converts “must be free” into “on the rota”. Mixing them up is the most common way a staffing figure goes wrong, so the calculator reports which of the two, or neither, actually set your number.

All of it runs in your browser, in a few dozen floating-point operations. There is no endpoint behind this page: your call volumes, handling times and shrinkage describe how your business runs, and they are none of ours.

Bringing a day of your own

The file the tool reads is a CSV with a label, a call count, and optionally a handling time, one row per period, up to 96 of them, which is a full day at quarter-hour resolution. The first row may be a header and is skipped. A semicolon-separated file is read correctly too, because that is what a spreadsheet in a French locale writes.

The result you download carries the numbers and every assumption behind them in the same file: the volumes, the target, the shrinkage, the occupancy ceiling and the model's own limitations. A staffing figure pasted into a plan without those is a number nobody can check afterwards, including whoever produced it.

If you would rather read the reasoning first, the worked example behind all of this is in how many people do you need to answer calls.

Questions

How many people do I need to answer my calls?

It depends on three things and not on your total call volume: how many calls arrive in your busiest stretch, how long each one takes including the work afterwards, and how long you are willing to make somebody wait. Ten calls an hour of three minutes each needs one person free if you accept a long wait, and two if you do not. The calculator above works it out, and the number it gives you is people free and on the phones, not people employed.

What is the difference between the people who must be free and the people I schedule?

Nobody is on the phones for every minute they are paid for. Breaks, training, meetings, holidays and leave are all real, and the share of paid time they take up is called shrinkage. If fourteen people have to be free and three in every ten paid minutes go elsewhere, you need twenty on the rota to keep fourteen free. Shrinkage never changes how many must be free; it changes how many you employ to get there.

What is occupancy, and why is 100% a bad target?

Occupancy is the share of a free person's time actually spent on calls. It sounds like a number you would want at 100%, and at 100% the queue never empties and the wait grows without limit. Above roughly 85% a team has no recovery time between calls, and the people doing the work leave. The calculator holds occupancy below a ceiling you set, and tells you when that ceiling, rather than your answer-time target, is what set the headcount.

Why does one more person change the wait so much?

Because the wait does not fall in a straight line. Near the point where work arrives about as fast as it can be finished, each extra person absorbs a share of the queue that the people already there could not, so the wait drops steeply. Further out the same extra person changes very little. That is why a team of four feels transformed by a fifth and a team of forty barely notices a forty-first, and it is the single most useful thing this model tells a small business.

Does this account for callers who hang up?

No, and that is the model's main limitation. Erlang C assumes every caller waits as long as it takes. Real callers give up, which shortens the queue for everybody still on it, so a real team usually needs slightly fewer people than this says. The answer here is therefore cautious rather than optimistic. Treat it as a starting point to compare against what actually happens.

Can I use this for a team that also answers chats and email?

Not directly. This model assumes one person handles one call at a time, start to finish, in the order the callers arrived. Somebody handling three chats at once, or picking work off a shared inbox between calls, is doing something the arithmetic does not describe. It also does not describe skills-based routing, where only some of the people can take a given call. Use it for the phone line.

Once you know the number

This tells you how many people have to be free. It does not tell you which of them gets the next call, what a caller hears while they wait, or where a call goes when the answer is that nobody is free right now. Those are the parts a phone system decides, and no software reduces the number above.