TapCub is live — analytics, insights and live chat, free on one platform

Free tool Agent occupancy and shrinkage calculator

Erlang tells you how many agents need to be on the queue. Shrinkage — breaks, training, meetings, leave — decides how many you have to roster to get them there. Occupancy tells you how hard the ones on the queue are working. Work out all three, line by line.

  • Shrinkage item by item
  • Occupancy vs. service
  • Runs locally
Calculator

Occupancy and shrinkage

All figures are sample figures. Shrinkage defaults to minutes per shift for on-shift items and percent of paid time for off-shift items.

e.g. 8 or 7:30. Unpaid lunch is not part of it.

Multiply when on-shift items are minutes per attended shift (the default); add when every item is already a share of all paid time.

One item per line, minutes per shift by default: Breaks 30. Also 1.5h or 5%.

Percent of paid time by default: Annual leave 8%. 20 days of leave out of 260 paid days ≈ 7.7%.

From the Erlang C calculator, for one interval.

For the FTE figure, e.g. 60 for 12 h × 5 days.

e.g. 40.

Total shrinkage 30.2%. To have 12 agents on the queue, roster 18 per interval (needed × (1 + shrinkage) would give 16, too few). Covering 60 hours a week takes about 25.8 FTE at 40 hours each.

Total shrinkage

30.2%

Share of paid time not on the queue.

On-shift

19.8%

Per attended shift.

Off-shift

13.0%

Per paid day.

Hours on the queue per shift

6.42

Shift × (1 − on-shift).

Agents to roster

18

Needed ÷ (1 − shrinkage), rounded up.

FTE for the week

25.8

Needed × hours open ÷ contract hours ÷ (1 − shrinkage).

Shrinkage by item

Share of all paid time. With "multiply", on-shift items are scaled by the days agents actually attend.

ItemTypeEntered asShare of paid time
Annual leaveOff-shift8%8.0%
Sick leaveOff-shift3%3.0%
Public holidaysOff-shift2%2.0%
BreaksOn-shift30 min5.4%
TrainingOn-shift20 min3.6%
Team meetingOn-shift15 min2.7%
CoachingOn-shift15 min2.7%
Admin and emailOn-shift10 min1.8%
System downtimeOn-shift5 min0.9%
Total shrinkage30.2%
Runs entirely in your browser. Nothing you type here is uploaded or stored by TapCub.

Share these inputs: the values go after the # in the link, so they never reach a server.

Version v1.0Updated Update history

Reading the result

Three ratios that are easy to mix up

Occupancy, utilisation and shrinkage all divide hours by hours, but over different denominators.

Occupancy

Of the time agents are on the queue, the share spent handling contacts. It is a result of workload and headcount, not a target you can set: Erlang C decides it once you choose a service level.

Utilisation

Handling time as a share of paid (or logged-in) time. It is always lower than occupancy, because breaks, training and meetings are in the denominator.

Shrinkage

Paid time that is not available for contacts: on-shift items such as breaks and meetings, off-shift items such as leave and sickness. It turns "agents on the queue" into "agents on the roster".

Rostered agents

Needed ÷ (1 − shrinkage). With 30% shrinkage, 12 on the queue needs 17.2 on the roster, not 15.6.

High occupancy is not free: the table shows how fast waits grow as the last few agents go. There is no universal right number; set an upper limit with your team leads and check it against service level and attrition, not against a figure from elsewhere.

How to use it

From queue agents to a roster

Use the three modes in order.

  1. 1

    Planned occupancy

    Enter contacts per hour, handle time and agents. Check that the occupancy and service level you get are ones your team can live with.

  2. 2

    List shrinkage

    In "Shrinkage", list every regular on-shift activity in minutes per shift and every absence type as a percent of paid time. Use your own records for the last few months.

  3. 3

    Roster

    Enter agents needed on the queue (from Erlang C) to get agents to roster per interval, and hours open per week to get weekly FTE.

  4. 4

    Check actuals

    Each week, enter handle, available and paid hours from your report in "Actual occupancy" and compare with the plan.

Formula

Occupancy, utilisation and shrinkage

Definitions as used in workforce management. The service level column uses Erlang C, the same function as the Erlang C calculator on this site.

  • Planned occupancy = workload (Erlang) ÷ agents on the queue; for chat, ÷ (agents × concurrent chats)
  • Actual occupancy = handle time ÷ (handle time + available time)
  • Utilisation = handle time ÷ paid time
  • Shrinkage (multiply) = 1 − (1 − off-shift) × (1 − on-shift); (add) = off-shift + on-shift, when both are shares of the same paid hours
  • Agents to roster = ⌈needed ÷ (1 − shrinkage)⌉; FTE = needed × hours open ÷ contract hours ÷ (1 − shrinkage)

On-shift shrinkage

minutes per shift ÷ shift minutes

95 ÷ 480 = 19.8%

Total shrinkage (multiply)

1 − (1 − off-shift) × (1 − on-shift)

1 − 0.87 × 0.802 = 30.2%

Agents to roster

⌈needed ÷ (1 − shrinkage)⌉

⌈12 ÷ 0.698⌉ = 18

FTE for the week

needed × hours open ÷ contract hours ÷ (1 − shrinkage)

12 × 60 ÷ 40 ÷ 0.698 = 25.8

Planned occupancy

workload ÷ agents

10 Erlang ÷ 14 = 71.4%

Worked example

Squeezing occupancy on the same queue

200 calls an hour at a 3-minute handle time is 10 Erlang of work. Service level threshold 20 seconds. Sample figures.

Occupancy, service level and average speed of answer for 11–15 agents (Erlang C)
AgentsOccupancyAnswered within 20 sAverage speed of answer
1190.9%39.0%2 min 03 s
1283.3%64.0%40.4 s
1376.9%79.6%17.1 s
1471.4%88.8%7.8 s
1566.7%94.1%3.7 s

Going from 14 to 11 agents raises occupancy by under 20 points but makes the average caller wait 16 times longer. The 11- to 14-agent rows match the Call Centre Helper Erlang C worked example (100 calls per 30 minutes).

Common mistakes

Where rosters come out short

The arithmetic is simple. Most errors are about what goes into it.

Multiplying by (1 + shrinkage)

12 × 1.30 = 15.6 leaves you short. 30% of the rostered agents are away, so divide: 12 ÷ 0.70 = 17.2.

Only counting breaks

Training, coaching, meetings, system problems, sickness and leave are all shrinkage. Keep a list and update it from real records.

Setting occupancy as a target

Occupancy follows from workload and headcount. Pushing it up means fewer agents and longer waits, as the table shows.

Treating chat like phone

A chat agent with three chats open has three slots. Occupancy is measured on slots, and handle time must be measured at that concurrency.

FAQ

Occupancy and shrinkage FAQ

Still have a question?

Chat with the team behind TapCub — we usually reply within a few hours on business days.

How do you calculate agent occupancy?

Occupancy = time handling contacts ÷ (time handling + time available and waiting). For planning: workload in Erlang ÷ agents on the queue. 10 Erlang on 14 agents is 71.4%.

What is the difference between occupancy and utilisation?

Occupancy only looks at time on the queue. Utilisation divides handling time by all paid (or logged-in) time, so breaks, training and meetings lower it. An agent can be 85% occupied and 60% utilised on the same day.

What goes into shrinkage?

Everything paid that is not available for contacts. On-shift: breaks, training, team meetings, coaching, quality reviews, admin, system downtime. Off-shift: annual leave, sickness, other absence, paid public holidays when you are open. Unpaid lunch is not shrinkage.

How do I apply shrinkage to staffing?

Divide, do not multiply: rostered = needed ÷ (1 − shrinkage). 12 needed with 30% shrinkage is 17.2 rostered, so round up to 18.

Should on-shift and off-shift shrinkage be added or multiplied?

If on-shift items are measured per attended shift (minutes per day at work), multiply: 1 − (1 − off) × (1 − on), because nobody takes a break on a day off. If both are already percentages of all paid hours, add them.

What is a good occupancy rate?

There is no single right number. The higher it goes, the longer customers wait and the less recovery time agents get. Look at the agents table for your own volumes and pick the point where service level and workload are both acceptable.

How does occupancy work for live chat?

Count chat slots: agents × concurrent chats. Workload = chats per hour × average chat length ÷ 3,600. The share of time an agent has at least one chat open is higher than slot occupancy, so talk about which one you mean.

Changelog

Update history

New features, fixes and data refreshes for this tool, newest first.

  1. · 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

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics