Critical path method
The critical path method (CPM) calculates the minimum duration of a project from its activities, their durations and their dependencies. A forward pass through the network gives each activity its early dates, a backward pass its late dates. The gap between the two is the float: the delay an activity can absorb without pushing back the project finish. The activities with no float form the critical path, the longest chain of activities in the network, which sets the finish date. The calculation assumes that every activity has its resources when it needs them. James Kelley and Morgan Walker published the method in 1959.
Goal
The critical path method turns a list of activities into a dependency network, then into dates and floats. It shows the earliest finish date the logic of the work allows and which activities set that date.
The first use of the calculation is to commit to a date. The project manager compares the deadline set by a client or by law with the minimum duration of the network: the gap shows whether the commitment holds. The calculation then points to the activities to accelerate: shortening an activity that has float does not bring the project finish closer. During the project it puts a figure on a delay: a delay smaller than the activity's float leaves the finish date where it is, a delay on the critical path pushes it back day for day.
The deliverable is a dated network. Each activity in it carries its early and late start and finish dates, its total float and its free float, and the critical path links them. This network feeds the project's schedule baseline. The PMBOK Guide lists the method among the tools of the processes that develop and control the schedule.
Each activity enters the calculation with a single duration. Three-point estimation (PERT) estimates that duration and its uncertainty; the critical path method places the durations in the network and derives the path from them.
Usage
When to use it
- Imposed finish date: check that a contractual or legal deadline fits the minimum duration of the network.
- Several teams or suppliers in parallel: find the branch of the work that sets the finish date.
- Schedule that must be shortened: reserve overtime and overlaps for the critical activities, the only ones that bring the finish closer.
- Delay reported during the project: compare the delay with the activity's float before escalating.
- Scenario under test: recalculate the network under a named scenario, as what-if scenario analysis does.
- Breakdown and durations available: without them, the calculation produces dates with no basis.
When not to use it
- Scarce resources shared between activities: the calculation assumes them unlimited; level the resources or plan with critical chain (CCPM).
- Order of work revised at every iteration: a frozen network cannot keep up; order a backlog and plan by time boxing.
Description
Building the network
The network starts from the activity list that the work breakdown produces. Each activity receives a duration, most often in working days, and the list of its predecessors. These steps come before the calculation: define the activities, sequence them, estimate their durations. When the calculation starts, every activity has at least one predecessor and one successor, except the Start and Finish nodes. All durations use the same unit.
The standard form today is the precedence diagramming method (PDM): each activity is a node, each dependency an arrow. Kelley and Walker put the activities on the arrows; current software puts them on the nodes. A Start node and a Finish node close the network. In German-speaking countries the method belongs to Netzplantechnik, whose vocabulary the DIN 69900 standard sets.
Four types of dependency link a predecessor to a successor. Finish-to-start (FS), the most common, prevents the successor from starting before the predecessor finishes: the team installs the software once the server is delivered. Start-to-start (SS) prevents the successor from starting before the predecessor has started: the German translation of the user guide begins once the writing of the French version has started. Finish-to-finish (FF) prevents the successor from finishing before the predecessor finishes: the review of a document ends after its writing. Start-to-finish (SF), rare, prevents the successor from finishing before the predecessor has started: the old payroll software, the successor, stays in operation until the new one has started.
Finish-to-start (FS)most common
Start-to-start (SS)
Finish-to-finish (FF)
Start-to-finish (SF)
A dependency can carry a lag or a lead. A lag delays the successor: go-live waits five working days after acceptance testing ends, the notice period agreed with operations. A lead brings the successor forward: user training starts five days before acceptance testing ends. A lag describes a real wait between two activities; it is not added to the estimated duration and does not replace a dependency.
Dependencies are also classed by origin. A mandatory dependency comes from the nature of the work, a contract or the law. A discretionary dependency reflects a preference: a good practice or an order chosen where others remain possible. It creates arbitrary float and freezes options. Mark it as discretionary in the dependency list, so that you know which one to reopen when the time comes to accelerate.
The node and its six values
The six values surround the activity name. The top row gives the early start (ES), the duration and the early finish (EF). The bottom row gives the late start (LS), the total float (TF) and the late finish (LF). The forward pass fills the top row, the backward pass the bottom one.
The forward pass
The forward pass starts at the beginning of the project and follows the arrows. The activities that follow the Start node begin on day 1, then each activity applies:
EF = ES + duration − 1
The "− 1" comes from the PMBOK Guide's convention: an activity that starts on day 1 and lasts three days finishes on the evening of day 3. The successor of a finish-to-start dependency starts the next day. When several arrows converge on a node, the successor waits for the last of its predecessors: its ES equals their largest EF plus one. The early finish of the last activity gives the minimum duration of the project.
Each dependency type imposes its own bound on the successor. Under the day-1 convention, d stands for the lag, negative for a lead:
| Type | Bound |
|---|---|
| Finish-to-start (FS) | ES(successor) ≥ EF(predecessor) + 1 + d |
| Start-to-start (SS) | ES(successor) ≥ ES(predecessor) + d |
| Finish-to-finish (FF) | EF(successor) ≥ EF(predecessor) + d |
| Start-to-finish (SF) | EF(successor) ≥ ES(predecessor) − 1 + d |
A bound on the finish converts to a bound on the start through ES = EF − duration + 1. The successor keeps the largest of the bounds that its predecessors impose. The backward pass applies the same rules in reverse.
The backward pass
The backward pass starts at the end of the project and runs against the arrows. It gives each activity its late dates, the latest that do not push back the finish. The activities that precede the Finish node receive as their LF the minimum duration found by the forward pass, then each activity applies:
LS = LF − duration + 1
When several arrows leave a node, the predecessor must let the most urgent of its successors start on time: its LF equals their smallest LS minus one. Errors in hand calculation cluster at the nodes where arrows converge or diverge: there whoever calculates takes the minimum instead of the maximum or the other way round.
Forward pass: convergence
Backward pass: divergence
Other conventions count from day 0: EF = ES + duration, and the successor starts on day EF. Both conventions give the same floats and the same path. A calculation that mixes them shifts the dates by one day at every dependency it crosses. The PMBOK Guide accepts several conventions. Software calculates on calendar dates; only in a spreadsheet does the user choose the convention.
Total float, free float and the critical path
Total float is the gap between the late dates and the early dates: LS − ES, which equals LF − EF. It measures the delay an activity can absorb without pushing back the project finish. The critical path links the activities whose total float is zero. It is the longest chain of activities in the network, and its duration is the duration of the project.
Free float measures the delay an activity can absorb without shifting the early start of any successor. Under the day-1 convention it equals the smallest ES of the successors, minus EF, minus one. Readers often confuse the two floats. Total float belongs to a branch of the network: two activities in series on the same branch show the same total float and share it. If the first uses it up, the second becomes critical.
Float can be negative. A date constraint that demands an earlier finish than the logic and the durations allow gives a late finish before the early finish. Negative float shows where to look for acceleration. A constraint placed after the calculated finish produces, conversely, positive float on the longest path. The zero-float criterion therefore holds only in the absence of date constraints. Where date constraints apply, the PMBOK Guide defines the critical path as the path with the lowest float.
Using the result
The calculated dates are windows: each activity can run anywhere inside its own. The project manager then places it according to resources and calendar, and that placement forms the schedule.
To shorten the project, only the critical activities count. Crashing adds resources (overtime or extra staff) to a critical activity, but only where those resources shorten it. Fast tracking overlaps activities planned in series, at the risk of rework. In both cases the gain stops when another path becomes as long as the shortened one.
Critical path drag puts a number on that ceiling. The PMBOK Guide defines it as the time a critical activity adds to the project duration or as the maximum shortening of that activity before it leaves the critical path. A critical activity of twenty days, whose nearest parallel branch keeps five days of float, has a drag of five days: shortening it by eight days gains the project only five. The guide also defines drag cost, what that drag takes from the project's expected return, resource and delay costs included.
During the project, the team recalculates the network at every progress review. An activity that finishes late consumes float downstream, one that finishes early gives float back. The critical path can move to another branch: read the update on the new path, not on the original path.
What distorts the calculation
The calculation ignores resources. Two parallel activities assigned to the same architect run one after the other, and the network does not see it. Resource levelling shifts activities to keep them within capacity and consumes float; it can move the critical path. Critical chain project management (CCPM) applies almost the same calculation logic to a levelled network and protects the finish date with a project buffer.
An activity with no real successor gets attached to the Finish node. It receives a float that runs to the end of the project, and that float is meaningless: the network ignores the activity it delays. Before reading any float, check that every activity has a successor that depends on it.
A date constraint entered in place of a dependency distorts float the same way. Software accepts "start on 3 March" without asking why, and the date then stands in for the logic. A lag used to pin a date, rather than to describe a real wait, has the same effect.
A path with two days of float becomes critical at the first mishap. The calculation treats every duration as certain, and a network that carries several near-critical paths is less likely to hold its date than the calculation suggests. Scheduling software lets you set a criticality threshold: an activity whose total float falls below that threshold displays as critical. Where several branches converge on an activity, a delay on any one of them delays it; consider a time reserve there. When the uncertainty of durations matters, three-point estimation and Monte Carlo simulation reuse the same network.
AI considerations
The two passes belong to the scheduling software or the spreadsheet, which redoes them without error at every update. A language model adds nothing there.
The model helps before the calculation. From a work breakdown, a specification or the notes of a planning session, it proposes an activity list and a first set of dependencies for the team to correct. On an exported network it spots structural defects: activities with no successor, unjustified date constraints, lags that stand in for dependencies. After the calculation, it drafts for a committee what the calculation establishes: which activities set the date, how much float each branch keeps.
The team sets the durations. A model proposes plausible durations for activities it does not know, and the critical path calculated on them is fiction. The team also rules on the nature of each dependency: whether it is mandatory or discretionary depends on the contract, the regulations and the organisation's practices. A schedule also carries supplier names, amounts and contractual dates. It does not go to an online service without the approval of the data protection advisor.
Examples
A cantonal OASI compensation office launches an online contribution statement portal for its affiliated employers.
| Id | Activity | Duration | Predecessors |
|---|---|---|---|
| A | Requirements analysis | 10 | none |
| B | Portal development | 20 | A |
| C | Hosting set-up | 15 | A |
| D | Online help writing | 8 | A |
| E | Integration testing | 10 | B, C |
| F | Staff training | 5 | D |
| G | Go-live | 2 | E, F |
| Id | ES | EF | LS | LF | TF | Free float | Critical |
|---|---|---|---|---|---|---|---|
| A | 1 | 10 | 1 | 10 | 0 | 0 | yes |
| B | 11 | 30 | 11 | 30 | 0 | 0 | yes |
| C | 11 | 25 | 16 | 30 | 5 | 5 | no |
| D | 11 | 18 | 28 | 35 | 17 | 0 | no |
| E | 31 | 40 | 31 | 40 | 0 | 0 | yes |
| F | 19 | 23 | 36 | 40 | 17 | 17 | no |
| G | 41 | 42 | 41 | 42 | 0 | 0 | yes |
The critical path A-B-E-G lasts 42 working days. The D-F branch shows 17 days of total float on each of its two activities, but D has no free float: every day of delay on the online help shifts the training and eats into the branch's 17 days.
Visualisations
The network shows the logic: who waits for whom and which branch the critical path runs through. The Gantt chart shows the same result on the time axis. Each bar covers its activity's early window, and total float extends it to the late finish. The critical bars follow one another from day 1 to day 42 with no gap and no extension. A Gantt chart without dependency links shows the windows but hides the logic: the reader cannot see why a bar moves. Software draws those links on the Gantt chart; a hand-drawn Gantt chart almost always leaves them out.
Cost
| Phase | Level | Rationale |
|---|---|---|
| Preparation | Medium | Getting the list of activities, their durations and their dependencies from the teams takes most of the effort. |
| Execution | Low | Software calculates both passes instantly; a spreadsheet handles some twenty activities in an hour. |
| Documentation | Medium | The team updates the network at every progress review and justifies every discretionary dependency or date constraint in writing. |
Tooling
A whiteboard and sticky notes are enough to build the network in a workshop. The team leads discuss each dependency in front of the others, and forgotten dependencies surface there. A team spread over several sites does the same work on an online whiteboard such as Miro or Mural.
A spreadsheet calculates some twenty activities with the MAX and MIN functions. Practitioners use it to learn the method and to cross-check scheduling software on a fragment of the network.
Microsoft Project and Oracle Primavera P6 calculate both passes on a real calendar, display the critical path and the floats, level resources and let you set the criticality threshold. ProjectLibre, a free open-source tool, calculates the critical path and the floats; levelling exists only in its paid online version. Before comparing two schedules, check that they apply the same criticality threshold.
Sources
- Project Management Institute (2025), A Guide to the Project Management Body of Knowledge (PMBOK Guide), 8th edition: §2.3.2.2 Develop Schedule and §2.3.2.3 Monitor and Control Schedule for the place of the method; Section 5, entry "Critical path method (CPM)" for the definition, the two passes, their formulas, total, free and negative float and near-critical paths; entries "Critical path drag" and "Critical path drag cost"; entries "Precedence diagramming method", "Leads and lags" and "Dependency determination and integration" for building the network; entries "Schedule network analysis", "Schedule compression", "Resource optimization technique" and "Critical chain project management (CCPM)" for using the result and its limits.
- Kelley, James E. Jr. and Walker, Morgan R. (1959), "Critical-Path Planning and Scheduling", Papers presented at the December 1-3, 1959, Eastern Joint IRE-AIEE-ACM Computer Conference, ACM, pp. 160-173: the original publication of the method, on a network that puts the activities on the arrows.
- Deutsches Institut für Normung, DIN 69900:2009-01, Projektmanagement – Netzplantechnik; Beschreibungen und Begriffe: the standard that sets the vocabulary of network planning in German-speaking countries.

