HomeGuides › S-Curves and Earned Value: Reading Whether You Are Actually Behind

S-Curves and Earned Value: Reading Whether You Are Actually Behind

A percentage complete tells you almost nothing on its own. Sixty per cent done is excellent in week two and a catastrophe in week nine. An S-curve fixes that by plotting cumulative planned work against time, so "how far along are we" becomes "how far along were we supposed to be by now" — and the gap between the two lines is the answer.

· gantts.app

Planned against actual, and what the gap between them means:
100% 50% 0% time → Planned (PV) Actual / earned (EV) today the gap = schedule variance below the line = behind plan

Why the curve is S-shaped

Projects do not burn work at a constant rate. The opening weeks go slowly — mobilising, agreeing scope, waiting for approvals — the middle accelerates as everything runs in parallel, and the tail slows again as the last items wait on sign-off and snagging.

Plot cumulative work against time and that shape comes out as a flattened S: shallow, steep, shallow. It is not a target anyone drew — it falls out of how work arrives, which is what makes it a fair yardstick. A straight line would imply twenty per cent done in twenty per cent of the time, and every project in history would look "behind" in its first month.

Reading planned against actual

Two curves. The planned curve comes from your baseline: spread each task's weight across its planned dates and accumulate. The actual curve comes from reported progress.

Read them vertically, at today:

Read them horizontally instead and you get the version a status meeting understands: slide left from today's actual point to where it meets the planned curve, and you have the date the plan expected this much progress. The distance is how many weeks behind you are — the unit people actually argue in.

Earned value, without the jargon

Earned value gives the gap a number. Three quantities, and the acronyms are worse than the ideas:

From those three:

The separation is the point. A project can be on budget and badly late, or on time and haemorrhaging money, and one blended "percentage complete" hides both. As two axes, there are four places to be:

ahead · under budgetbehind plan · under budgetahead · over budgetbehind plan · over budgetTimeCost
Schedule and cost performance are independent. A single percentage complete collapses both axes into one number.

A worked example, with the arithmetic

A ten-week office fit-out, budget at completion (BAC) £200,000, spread the way fit-outs spend: slowly, then heavily through the middle trades, tapering into commissioning and snagging.

Planned spend per week, cumulated into PV:

WeekPlanned this weekCumulative PV
1£8,000£8,000
2£12,000£20,000
3£20,000£40,000
4£28,000£68,000
5£32,000£100,000
6£32,000£132,000
7£26,000£158,000
8£18,000£176,000
9£14,000£190,000
10£10,000£200,000

Five weeks of actuals. EV is the budget value of what is finished; AC is what it cost.

WeekCumulative PVCumulative EVCumulative AC
1£8,000£6,000£7,000
2£20,000£17,000£20,000
3£40,000£33,000£38,000
4£68,000£55,000£62,000
5£100,000£82,000£94,000

Read at the end of week 5: PV = £100,000, EV = £82,000, AC = £94,000.

  • SV = EV − PV = 82,000 − 100,000 = −£18,000 of budgeted work that should be finished and is not.
  • SPI = EV ÷ PV = 82,000 ÷ 100,000 = 0.82. Plan is converting into progress at 82% of the assumed rate.
  • CV = EV − AC = 82,000 − 94,000 = −£12,000. The work cost twelve thousand more than it was worth.
  • CPI = EV ÷ AC = 82,000 ÷ 94,000 = 0.87. Every pound spent buys 87p of budgeted value.
  • Per cent complete = EV ÷ BAC = 82,000 ÷ 200,000 = 41%, against 50% planned. 41% sounds fine until you know 50% was due.
  • EAC = BAC ÷ CPI = 200,000 ÷ 0.8723 = £229,300. If cost performance holds, the £200,000 job lands about £29,300 over (VAC), with £135,300 still to spend (ETC = EAC − AC).

Take the horizontal read to the meeting. Where did the plan reach £82,000? Between week 4 (£68,000) and week 5 (£100,000): £14,000 into a week-5 increment of £32,000, so 14 ÷ 32 = 0.44 of that week. The plan passed £82,000 at week 4.4 — you are 0.56 of a week, under three working days, behind.

Three days behind and an SPI of 0.82 are the same fact. The ratio looks alarming because this is the steepest part of the curve, where a few days cost a lot of value. Quote both.

The seven numbers, and the specific way each gets misread

Each has a standard misinterpretation, and the misreadings do more damage than not measuring.

MetricFormulaWhat it answersHow it is misread
PVbudgeted cost of work scheduledHow much should be done by now?Taken from current dates rather than a baseline. Those absorb every slip, so PV follows you and variance reads zero.
EVBAC × % completeHow much is done, valued at budget?Only as honest as the progress reporting behind it — the "90% done for three weeks" problem.
ACactual cost incurredWhat has it cost so far?Read before invoices land. AC lags, flattering CPI early, punishing it later.
SVEV − PVHow much work are we short?Heard as a cost overrun. Measured in money, but a schedule statement.
CVEV − ACAre we paying more than the work is worth?Compared against budget spent rather than earned value; "we have used 47% of the budget" says nothing without EV.
SPIEV ÷ PVRate of turning plan into progressDrifts to 1.0 near the end whatever happens — every project eventually earns its full BAC.
CPIEV ÷ ACValue bought per pound spentReported as exactly 1.00 by tools that infer AC from progress. A CPI from a calculator that never asked what you spent is arithmetic, not data.

One more, because it costs projects their finish dates: earned value weights everything by budget, the critical path ignores budget entirely. A cheap two-day approval on the driving chain barely moves SPI. You can read 1.05 and still be late.

Why our tool refuses to show you a CPI sometimes

Worth stating plainly, because most free EVM calculators do the opposite. Actual cost cannot be derived from a schedule; it comes from your accounts. The shortcut is to assume a task 40% done has consumed 40% of its budget — and if you do that, AC equals EV by construction, so CPI comes out as exactly 1.00 for every project that has ever existed. It looks authoritative, responds to nothing, and tells a runaway budget it is on track.

So gantts.app takes actual cost from one place: the Spent figure you enter on a task. If no task carries one, the cost metrics — AC, CV, CPI, EAC, ETC, VAC — come back empty and the panel omits them rather than guessing. SV and SPI still work, needing only dates and progress. A missing number is honest; a confident wrong one is not.

The CPI of 0.87 above exists only because someone typed £94,000 of real spend. No Gantt chart knows that figure.

For the same reason the earned curve behind today is reconstructed, not recorded. The tool stores one progress reading per task, not a history, so a truthful earned curve for past dates is not recoverable. Rather than refuse to draw it, we reconstruct it under a stated assumption — progress accrued evenly across each task's elapsed working days. That is exact at the status date, where the metrics are read, and approximate behind it. The panel says as much.

You do not need a budget to get a curve

Most plans carry no cost data, and an S-curve that needs one is a curve nobody draws.

With no costs, gantts.app weights each task by working-day duration. Same shape, axis in working days rather than currency; SV and SPI mean what they meant above, in days instead of pounds. Add costs later and the panel switches to a value curve.

Two details change the numbers. Only leaf tasks count: summary bars roll up their children's cost, so counting both inflates BAC by the depth of your outline. Milestones, being zero-duration, contribute nothing.

One thing matters more than any of this: set a baseline. Without one, "planned" means your current dates, which already contain every slip. Schedule variance then reads zero forever — reassuring and useless.

PlanActualTask ATask B+4dTask C+4d
Planned bars against actual bars. The baseline is the frozen copy the planned curve is built from — without it, the plan moves every time you do.

Baseline ▸ Set baseline, once, when the plan is agreed. The tool reports which source it used, so you can tell a real variance from a comparison of your dates against themselves.

How to build one here

  1. Build or import your schedule, dates roughly right.
  2. Baseline ▸ Set baseline when the plan is agreed. This freezes what "planned" means.
  3. Optionally give tasks a Budget, so the curve reads in money rather than days.
  4. Update % complete as work happens — the earned curve is made of it.
  5. Enter Spent per task to unlock CPI, cost variance and the forecast at completion.
  6. Click 📈 S-curve.

Runs in your browser: no account, no upload, no spreadsheet to maintain.

Quote SPI and the horizontal read together. "SPI 0.82" and "three days behind" are the same week-5 position; a room hearing only one will over-react or do nothing.

Templates that use this

Frequently asked questions

What is an S-curve in project management?

A graph of cumulative planned work against time. It is S-shaped because projects start slowly, accelerate, then taper. Plotted against actual progress, the vertical gap between the curves is how far ahead or behind you are.

What is the difference between an S-curve and earned value?

The S-curve is the picture; earned value is the arithmetic behind it. EVM puts numbers on the gap — SV, SPI, CV, CPI — where the curve shows its shape and direction.

What does an SPI of 0.9 mean?

You have earned 90% of the value the plan said you would have by now — roughly 10% behind in value terms. Below 1.0 is behind. It does not tell you how many days late you are — read the gap horizontally for that.

How do I calculate SPI and CPI by hand?

Three numbers at the same status date: PV, the budget value of work scheduled by now; EV, the budget value of work finished; AC, what you spent. SPI is EV ÷ PV; CPI is EV ÷ AC. With PV £100,000, EV £82,000 and AC £94,000: SPI 0.82, CPI 0.87.

Do I need cost data to use an S-curve?

No. Without costs, tasks are weighted by working-day duration and you get a progress curve — same shape, read in days. Costs turn it into a value curve and unlock the cost metrics.

Why is CPI not showing?

Because no actual costs have been entered. CPI needs real spend; deriving it from percentage complete makes it exactly 1.00 for every project. Add a Spent figure to your tasks and it appears, with CV, EAC and the rest.

Can I make an S-curve in Excel?

Yes, and most people do — a cumulative column and a chart maintained by hand, redone whenever dates move. Generating it from the schedule removes the step.

Try it on your own plan

gantts.app is a free Gantt chart maker that runs in your browser. No account, no download, no watermark on exports.

Open the free editor