Shrinkage calculator
Build your shrinkage rate out of its actual parts, then turn a productive requirement into a rostered one. Unpaid breaks handled correctly, and the divide-versus-multiply error shown explicitly so you can check your own tool against it.
How this is calculated
Shrinkage is the share of paid, rostered time that is not available to handle contacts. Two decisions in that sentence do most of the work, and most tools make at least one of them silently.
Unpaid breaks come out first
If lunch is unpaid it is not rostered time, so it cannot be shrinkage. It is simply not part of the shift. This calculator subtracts it before anything else:
Counting unpaid lunch as shrinkage inflates the rate and over-rosters you. It is the single most common reason two centers compare shrinkage figures and cannot reconcile them, because a center with a paid 30-minute lunch and one with an unpaid 60-minute lunch are not measuring the same denominator.
Planned and unplanned are built differently
Planned time is known in advance, so it is entered in minutes and expressed as a share of paid time. Unplanned time is statistical, so it is entered directly as a percentage.
Unplanned = absence + lateness + downtime
Total shrinkage = planned + unplanned
Summing the two is the common industry convention and it is what this tool does. It is worth knowing that it is a simplification: an absent agent loses their breaks too, so a strictly compounded model gives a slightly lower total. The difference is small at normal rates and the additive version is marginally conservative, which is the right direction to be wrong in.
Then it divides
Never multiply. See below for exactly what that costs.
Worked example
The values the calculator loads with: an 8-hour shift with an unpaid 60-minute lunch, 30 minutes of paid breaks, 20 minutes of training, 10 minutes of team meetings, and 8% absence, 1.5% lateness and 1% downtime. The productive requirement is 40 agents.
- Paid rostered time: 480 − 60 = 420 minutes
- Planned: (30 + 20 + 10) ÷ 420 = 14.3%
- Unplanned: 8 + 1.5 + 1 = 10.5%
- Total shrinkage: 24.8%
- Rostered: 40 ÷ (1 − 0.2479) = 53.18 FTE
- The multiply error would give 40 × 1.2479 = 49.91 FTE, 3.27 FTE short
That shortfall is 6.1% of the correct answer, and 0.248² = 0.0614. The multiply error always understates the requirement by exactly the square of your shrinkage rate. At 30% you are 9% short; at 40%, 16%. The full explanation is here.
Common questions
Should shrinkage go inside or outside the Erlang C calculation?
Outside, always. Erlang C returns the agents who must be productive and on the phones. Shrinkage converts that into a rostered number. Applying it inside the queueing maths, or applying it twice because it lives in both the forecast and the roster, silently corrupts every interval you staff.
What counts as shrinkage and what does not?
Planned: paid breaks, training, coaching, meetings, scheduled off-phone work. Unplanned: absence, sickness, lateness, unscheduled aux, system downtime. Not shrinkage: unpaid breaks (not rostered time), and vacancy, attrition gaps or agents still in nesting, which are headcount problems. Rolling vacancy into shrinkage makes the requirement come out right and hides a recruitment issue where nobody will ever look at it again.
What is a normal shrinkage rate?
Most contact centers land between 25% and 35% once planned and unplanned are counted honestly against paid time. A number below 20% usually means something has been left out, most often training or unpaid-break handling. Above 40% usually means vacancy has been folded in. The absolute figure matters far less than whether you can decompose it, because a number you cannot break apart is a number you cannot improve.
Why is my WFM tool giving a different answer?
Three usual causes, in order of likelihood. It multiplies instead of dividing, which you can test in seconds: at 30% shrinkage the ratio of rostered to productive must be 1.43, not 1.30. It applies shrinkage in more than one place. Or it counts unpaid breaks in the denominator.
Should I use one rate or several?
Several, eventually. Shrinkage is not flat across the week: Monday absence is not Wednesday absence, training is clustered, and breaks concentrate in the middle of the day by definition. The highest-value step is not a more granular rate though, it is modelling planned time as real schedule events rather than a percentage, because that is what makes break optimisation possible.
One shift here. Your operation has hundreds.
This applies one rate to one requirement. SureWFM runs shrinkage profiles per queue and per interval against your real forecast, keeps planned time as actual schedule events rather than a percentage, and attaches the trace to every result so the number is still defensible in next quarter's headcount review.