How to Build an S-Curve: Five Weighting Methods Compared
An S-curve plots cumulative progress against time. It gets its shape from the fact that projects start slowly, accelerate through the middle, and taper off at the end — mobilisation, then full production, then finishing and closeout.
Drawing the curve is trivial. Choosing the weighting is the entire exercise, and it is where most S-curves go wrong. Two curves built from the same schedule with different weighting can tell opposite stories.
The mechanics, briefly
Every S-curve needs three things:
- A weight per activity — how much of the total project each task represents.
- A distribution rule — how that weight spreads across the task's duration (linear is the default and is usually fine).
- A time bucket — weekly or monthly.
Then:
Planned % at period n = Σ(weight of work planned up to n) ÷ Σ(all weights) × 100
Actual % at period n = Σ(weight × % complete, up to n) ÷ Σ(all weights) × 100
The difference between the two curves at any point is your progress variance. Everything difficult about S-curves lives in step 1.
Method 1: Weighting by man-hours
Each task's weight is its planned labour hours.
The most defensible method for labour-intensive construction. It answers "how much of the total effort is done?", which is what site progress usually means.
Use it when: the project is labour-driven — building works, finishes, electrical and mechanical installation, industrial assembly.
Watch out for: activities with almost no labour but long duration. Concrete curing, permit approvals, delivery lead times and testing windows carry near-zero man-hours and therefore near-zero weight. Your curve will show a flat month while the project genuinely progresses. The fix is to exclude non-labour activities from the curve entirely rather than letting them distort it.
Data required: resource loading. If the schedule is not resource-loaded, this method is unavailable — which rules it out for most standard construction schedules.
Method 2: Weighting by cost
Each task's weight is its budgeted cost.
The natural choice when the schedule is cost-loaded, and the only method that connects directly to Earned Value. Your planned curve is the PV curve; your actual curve is EV.
Use it when: you already run EVM, or the contract measures progress financially.
Watch out for: high-value, low-effort items. Delivery of a €2M chiller can represent 8% of project cost and one day of work. On the day it arrives, the curve jumps 8 percentage points and it looks like a month of production happened. Equipment-heavy projects produce spiky, misleading curves under cost weighting unless procurement is separated out.
Data required: cost loading per activity.
Method 3: Weighting by duration
Each task's weight is its duration, as a share of the sum of all durations.
The method of last resort, and by far the most common in practice — because it needs no data beyond the schedule itself.
Use it when: nothing else is available, and the tasks are reasonably homogeneous in intensity.
Watch out for: it assumes a day of work is a day of work. Thirty days of excavation and thirty days of painting weigh the same. Long, low-intensity activities dominate the curve. Deliberately or not, splitting a task into three shorter tasks changes its weight.
A duration-weighted curve is better than no curve. Do not present it as a measure of physical progress.
Method 4: Weighting by WBS
Weight is assigned top-down to WBS branches, then distributed within each branch.
Structure: foundations 15%, superstructure 30%, envelope 20%, MEP 25%, finishes 10%. Within each branch, weight is distributed by a secondary rule — usually duration or man-hours.
Use it when: the phase proportions are known from experience or historical data and you want to control them explicitly. Also when different branches genuinely need different internal methods — labour-weighted structure, cost-weighted MEP.
Watch out for: the top-level percentages are a judgement call. They should come from a comparable completed project or from a cost estimate, not from intuition. Once set, they should not be revised mid-project, because doing so retroactively rewrites your historical curve.
This is the most flexible method and the most honest about the fact that weighting is a decision, not a calculation.
Method 5: Weighting by contract value
Weight is the contractual sale price of each item, taken from the bill of quantities.
Distinct from cost weighting because contract value includes margin, and margin is not distributed evenly across items. Front-loaded pricing — deliberately loading margin into early items — is common commercial practice and will distort a curve built on sale price.
Use it when: the curve drives billing, or the client measures progress against the priced schedule of works. In that case the value curve is not a progress measure at all; it is a cash forecast, and it should be labelled as one.
Watch out for: presenting a value-weighted curve as physical progress. If pricing is front-loaded, the project will appear ahead of schedule for the first third and then stall. That is a pricing artefact, not performance.
Choosing between them
| Method | Data needed | Best for | Main risk |
|---|---|---|---|
| Man-hours | Resource loading | Labour-intensive work | Non-labour activities vanish |
| Cost | Cost loading | EVM integration | Equipment spikes |
| Duration | Schedule only | When nothing else exists | Ignores intensity |
| WBS | WBS + a source for the split | Mixed-nature projects | Top-level split is judgement |
| Contract value | Priced BoQ | Billing forecasts | Front-loading distorts it |
A practical default for construction: WBS weighting at the top level, man-hours within each branch, and a separate cost curve for cash. Two curves, two purposes, neither pretending to be the other.
Rules that apply to every method
Freeze the weights at baseline. Weights come from the baseline and stay there. Recalculating weights from the current schedule means the planned curve moves every month, and the whole point of the comparison disappears.
Exclude summary tasks. Their weight is already counted in their children. Including both double-counts everything.
Decide how milestones are treated. Zero-duration tasks have zero duration weight and usually zero man-hours. Either exclude them or assign weight explicitly.
Do not smooth the actual curve. A jagged actual curve is data. Smoothing it removes the signal you built the chart to see.
State the method on the chart. "Progress %" means nothing on its own. "Progress % — weighted by man-hours" is a statement someone can check.
Reading the curve
The gap between planned and actual is the headline, but the shape carries more information:
- Actual running parallel below planned — steady underperformance at a stable rate. Predictable, and recoverable if the rate improves.
- Actual diverging progressively — the rate itself is deteriorating. Far worse than a constant gap, and usually means a resource or access problem that is compounding.
- Actual flat then jumping — measurement problem, not a production problem. Usually means progress is being claimed at task completion rather than continuously.
- Actual above planned early, converging later — often front-loaded weighting rather than genuine over-performance. Check the method before celebrating.
Frequently asked questions
Why is it called an S-curve? The cumulative shape. Slow start during mobilisation, steep middle at full production, slow finish through commissioning and snagging. Plotted cumulatively, that traces an S.
Should the S-curve match the Earned Value curve? If weighted by cost, they are the same thing — planned is PV, actual is EV. If weighted by man-hours or duration, they will not match, and they should not be compared directly.
How often should the curve be updated? On the same interval as the schedule update, using the same status date. A curve drawn from a schedule that was never rescheduled is drawing a picture of the plan, not the project.
Can I build an S-curve without a resource-loaded schedule? Yes — duration weighting or WBS weighting need only the schedule. Just label the method, because a duration-weighted curve is a weaker claim than a man-hour-weighted one.
What causes a curve that is ahead of plan but the project is late? Almost always weighting that does not reflect the critical path. Progress can accumulate on non-critical work while critical activities stall. The S-curve measures volume of work, not sequence — which is why it never replaces the schedule.
BaselinePlan builds low-cost S-curve and Earned Value tools for MS Project, with selectable weighting by man-hours, cost, duration or WBS.