People cost
Headcount Cost Bridge
Separate a movement in employee cost into what you pay per head, how many heads you had, and where those heads sat — with contractors and closed teams held apart rather than distorting the rate.
Input data
One row per group — team, department or cost centre, however your payroll report is cut. FTE means average FTE for the period, not closing headcount.
| Group | Prior year FTEaverage | Prior year cost | Current year FTEaverage | Current year cost | Cost per FTEderived, not entered | |
|---|---|---|---|---|---|---|
| $100,000 → $105,000 | ||||||
| $50,000 → $52,000 | ||||||
| — → $120,000 |
Tip: paste a rectangular range from Excel or Sheets.
Employee cost movement
+$1,132,000
Employee cost rose $1,132,000 between the two periods. Average FTE across the groups present in both periods is unchanged at 100, so headcount explains none of the $532,000 those groups moved. The movement on those groups is rate $332,000 and mix $200,000. Outside them, groups new in this period $600,000, each held apart because it has no cost per FTE in both periods to compare.
- Average FTE, common groups
- 100 → 100
- Cost on those groups
- +$532,000
- Cost per FTE, common groups
- $70,000 → $75,320
Cost figures include salary, on-costs and bonus.
Cost bridge
Cost rising is red, falling is green: employee cost is an expense.
Prior year
$7,000,000
Rate
+$332,000
Mix
+$200,000
New
+$600,000
Current year
$8,132,000
Show as table
| Line | Value | Context |
|---|---|---|
| Prior year | $7,000,000 | — |
| Rate | +$332,000 | — |
| Mix | +$200,000 | — |
| New | +$600,000 | — |
| Current year | $8,132,000 | — |
| Line | Value | Context |
|---|---|---|
| Prior year | $7,000,000 | — |
| Rate | +$332,000 | — |
| Mix | +$200,000 | — |
| New | +$600,000 | — |
| Current year | $8,132,000 | — |
By group
Cost per FTE is derived, never entered. FTE is a set-level effect and belongs to no single group. Row mix uses the change in average FTE against that group’s gap to the prior average, so the rows sum to the Mix bar.
| Group | Set | Cost per FTE Prior year | Cost per FTE Current year | Rate | Mix | Held apart |
|---|---|---|---|---|---|---|
| Data platform | New | — | $120,000 | — | — | +$600,000 |
| Engineering | Both periods | $100,000 | $105,000 | +$220,000 | +$120,000 | — |
| Support | Both periods | $50,000 | $52,000 | +$112,000 | +$80,000 | — |
Reuse the analysis
Copy the summary, or export the groups and the chart.
Transparent by design
How this calculation works
Elsewhere a walk like this is called a people cost bridge or a labour cost variance. Here it is rate, FTE and mix on the groups that carried FTE in both periods, with everything else held apart; the conventions behind that choice are set out below. For payroll against plan rather than against a prior period, the Budget vs Actual Analyzer is linked at the foot of this page.
FTE means average FTE for the period, not closing headcount. A full period of cost divided by a closing headcount is not a cost per head, and every figure here runs through that division.
What goes wrong if you enter closing headcount: a team that doubled in the last month of the year shows a full year of cost against the heads it finished with, so its cost per FTE reads far too low, its rate effect reads as a pay cut, and the mix bar reports a blend change that never happened. The cost columns still tie, which is what makes it hard to spot.
Cost per FTE
Cost divided by average FTE, per group and per period. Always derived, never entered, so the cost always ties.
Rate effect
Current FTE multiplied by the change in that group’s cost per FTE. Measured at current FTE by default, so it carries the interaction between a pay change and a headcount change. Switch the basis to prior FTE and that interaction gets a bar of its own instead; rate plus interaction is the same figure either way.
FTE effect
The change in total average FTE multiplied by the prior average cost per FTE across the groups present in both periods. A set-level term, never pushed down to a group.
Mix effect
The bar is the whole set’s blend change. Each row is that group’s change in average FTE multiplied by the gap between its prior cost per FTE and the prior average, so a team that took on expensive heads reads positive and one that shed cheap heads reads positive too, and the rows sum to the bar. It answers how the blend moved, not which team is expensive.
New and closed groups
Held in their own bars at their cost movement, not their cost level. Defining them as movements is what makes the bridge hold for a group recruiting before anyone joined, or paying severance after everyone left.
Cost carrying no FTE
Contractors, agency staff and outsourced teams appear in a payroll report with cost and no headcount. They have no cost per FTE in either period, so they join none of the three effects and get their own bar. Without it the bridge would not reconcile.
Colour
Employee cost is an expense, so a rise is red and a fall is green however positive the number reads. FTE counts and cost levels carry no colour at all, because a level is not a movement.
Reconciliation
Prior cost plus rate, FTE, mix and the three held-apart bars equals current cost. Any residual is shown rather than folded into the rate.
Related tools
- Price Volume Mix Analysis — the same rate, volume and mix decomposition on revenue, with unit price in place of cost per FTE.
- Budget vs Actual Analyzer — for the question this one does not answer: which lines moved against plan, and by enough to matter.