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.

Number format
Rate measured at
Rate is struck at current FTE, so the part of the movement that needed both pay and headcount to change sits inside it. Total cost, FTE and mix are the same either way.
Average FTE and employee cost by group, with the cost per FTE derived from them.
GroupPrior year FTEaveragePrior year costCurrent year FTEaverageCurrent year costCost per FTEderived, not entered
$100,000 → $105,000
$50,000 → $52,000
— → $120,000

Tip: paste a rectangular range from Excel or Sheets.

Your financial data is processed locally in your browser and is not uploaded to Consilium.

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.

Adds up

Prior year

$7,000,000

Rate

+$332,000

Mix

+$200,000

New

+$600,000

Current year

$8,132,000

Show as table
Financial bridge values
LineValueContext
Prior year$7,000,000—
Rate+$332,000—
Mix+$200,000—
New+$600,000—
Current year$8,132,000—
Exactly zero, so not drawn:FTEInteractionClosedCost, no FTEStill in the copied summary and the CSV.

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.

GroupSetCost per FTE Prior yearCost per FTE Current yearRateMixHeld apart
Data platformNew—$120,000——+$600,000
EngineeringBoth periods$100,000$105,000+$220,000+$120,000—
SupportBoth 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.

Keep this analysis for later. Saving is optional.

Feedback

Save this analysis

We will store the name and this tool’s supported calculation inputs, assumptions, labels, currency and number format, plus its identifier, save dates and your account ID. Outputs are recalculated when you open it.

Chart export styling, materiality filters, monthly review datasets and connected supporting analyses are not included in account saves.

No source workbook or chart file is uploaded. Your inputs stay in the browser until you sign in and confirm saving. A temporary draft stays in this tab for up to 30 minutes while you sign in.

Saved inputs are stored on Cloudflare in Western Europe until you delete them or your account. Deleted data may remain in restricted, encrypted backups in Asia-Pacific until their 30-day expiry. A separate encrypted recovery log keeps record IDs, protected email fingerprints and deletion or unsubscribe times for 35 days so a restore does not bring deleted data back. It contains no financial inputs. Expiry runs automatically and may not remove records at the exact deadline.