Certifications PMP CertificationWorld’s top PM cert CSM — Certified ScrumMasterTop agile cert CAPMEntry-level PM cert PRINCE2UK & Europe standard View All Certifications ?
PM Guides Agile GuideComplete breakdown Scrum GuideRoles, ceremonies, artifacts EVM GuideAll formulas explained View All Guides ?
Career & Salary PM Salary 2026By country & level How to Become a PMStep-by-step roadmap 50 Interview QuestionsWith strong answers
PM Software Monday.com ReviewTop pick 2026 ClickUp ReviewBest value Best Free PM ToolsNo trials, truly free View All Software ?
Free Tools & Templates EVM CalculatorFree, no signup Gantt Chart MakerBuild & export free PMP Eligibility Checker30-second result Free PM Templates30 templates — Excel, Word, PDF
Get the Free PMP Guide ?
Quick Answer

The forward pass is a calculation technique used in the Critical Path Method (CPM) to determine the earliest possible start (ES) and earliest possible finish (EF) dates for every task in a project network. You work left to right through the network diagram, starting at the first task. The rule is: EF = ES + Duration − 1, and the ES of each successor task equals the EF of its predecessor plus 1. The forward pass is always followed by the backward pass — which calculates the latest allowable start (LS) and finish (LF) dates. Together they give you total float (LS − ES or LF − EF) for every task, and tasks with zero float form the critical path.

ES→EF
Forward pass calculates Early Start and Early Finish
LS→LF
Backward pass calculates Late Start and Late Finish
TF=0
Tasks with zero total float are on the critical path
L→R / R→L
Forward pass goes left to right, backward pass right to left

You have a project network. You know every task, its duration and the dependencies between them. But which tasks determine the project's minimum duration? Which ones can slip without delaying the end date — and by how much? These are the questions the forward pass and backward pass answer.

Together they are the computational engine of the Critical Path Method — the manual calculation process that project scheduling software performs automatically every time you update a Gantt chart. Understanding how it works is not just an academic exercise: it gives you the intuition to know why your schedule changes when you move a task, which tasks to focus on when you are behind, and how much flexibility you actually have.

This guide walks through the complete forward pass and backward pass calculation step by step, with a fully worked 6-task network example showing every value calculated from scratch.

🔗
Part of the Critical Path Method: The forward and backward pass are the calculation steps within the broader CPM framework. For the full context — including what the critical path is, how network diagrams are built and how float is used in schedule management — see the Critical Path Method Guide. To perform this calculation automatically for your project, use the free critical path calculator.
01 — The Node Format

The Activity-on-Node Format — Reading a CPM Network

Before calculating, you need to understand how each task (node) is represented. The modern standard is the Activity-on-Node (AON) format — also called the Precedence Diagramming Method (PDM). Each task is a box containing six values arranged in a standard layout.

ES
DUR
EF
Task A
LS
TF
LF
Top row (blue) — Forward Pass values:
ES = Early Start  |  DUR = Duration  |  EF = Early Finish

Middle — Task name or ID

Bottom row (purple) — Backward Pass values:
LS = Late Start  |  TF = Total Float  |  LF = Late Finish
⚠️
Day 0 vs Day 1 convention: There are two conventions for the forward pass calculation. The Day 0 convention (used by most scheduling software) treats ES as "end of day 0" so EF = ES + Duration. The Day 1 convention (used in most PMP exam questions and textbooks) treats the first day as Day 1, so EF = ES + Duration − 1, and the next task's ES = predecessor's EF + 1. This guide uses the Day 1 convention throughout — the convention used in PMBOK and PMP exam questions. Be aware of which convention your scheduling tool uses.
02 — The Formulas

Forward Pass and Backward Pass Formulas

All Six CPM Formulas
Forward Pass — Early Finish
EF = ES + Duration − 1
The task finishes this many days after it starts (Day 1 convention)
Forward Pass — Next Early Start
ES(next) = EF(prev) + 1
Each successor starts the day after its predecessor finishes
Backward Pass — Late Start
LS = LF − Duration + 1
The latest a task can start without delaying the project
Backward Pass — Prev Late Finish
LF(prev) = LS(next) − 1
Work backwards: predecessor's LF is one day before successor's LS
Total Float
TF = LS − ES = LF − EF
How many days a task can slip without delaying the project end date
Critical Path Rule
Critical = TF = 0
Any task with zero total float is on the critical path
03 — The Network

The Project Network — 6 Tasks, 3 Paths

Here is the project network we will use for the worked example. It has 6 tasks with the following durations and dependencies:

TaskDuration (days)PredecessorsDescription
A4None (start)Project initiation
B3ARequirements analysis
C6ASystem design
D5BDevelopment — module 1
E4B, CDevelopment — module 2
F3D, ETesting and sign-off

This network has three paths from start to finish:

  • Path 1: A → B → D → F
  • Path 2: A → B → E → F
  • Path 3: A → C → E → F
Project Network Diagram — Activity on Node (before calculation)
Task A Duration: 4 days Task B Duration: 3 days Task C Duration: 6 days Task D Duration: 5 days Task E Duration: 4 days Task F Duration: 3 days Non-critical path Critical path (A→C→E→F)
04 — Forward Pass Calculation

Step-by-Step Forward Pass Calculation

We work left to right through the network. The first task always starts on Day 1. For every task we calculate EF = ES + Duration − 1. Where a task has multiple predecessors, its ES = the largest EF among all predecessors + 1.

1
Task A — the start task
Task A has no predecessors. It starts on Day 1 by convention.
ES(A) = 1   (always Day 1 for the first task)
EF(A) = ES + Duration − 1 = 1 + 4 − 1 = 4
2
Task B — one predecessor (A)
Task B starts the day after A finishes.
ES(B) = EF(A) + 1 = 4 + 1 = 5
EF(B) = ES + Duration − 1 = 5 + 3 − 1 = 7
3
Task C — one predecessor (A)
Task C also follows A — it runs in parallel with B.
ES(C) = EF(A) + 1 = 4 + 1 = 5
EF(C) = ES + Duration − 1 = 5 + 6 − 1 = 10
4
Task D — one predecessor (B)
Task D follows B only.
ES(D) = EF(B) + 1 = 7 + 1 = 8
EF(D) = ES + Duration − 1 = 8 + 5 − 1 = 12
5
Task E — two predecessors (B and C) — take the LARGEST EF
Task E cannot start until both B and C are complete. With two predecessors, ES = max(EF of all predecessors) + 1.
EF(B) = 7,   EF(C) = 10
ES(E) = max(7, 10) + 1 = 10 + 1 = 11
EF(E) = ES + Duration − 1 = 11 + 4 − 1 = 14
6
Task F — two predecessors (D and E) — take the LARGEST EF
Task F cannot start until both D and E are complete.
EF(D) = 12,   EF(E) = 14
ES(F) = max(12, 14) + 1 = 14 + 1 = 15
EF(F) = ES + Duration − 1 = 15 + 3 − 1 = 17
Forward pass complete. The project's earliest possible finish date is Day 17 — which means the minimum project duration is 17 days. This is the project duration. Now we run the backward pass to find how much float each task has.
05 — Backward Pass Calculation

Step-by-Step Backward Pass Calculation

The backward pass works right to left through the network. We start at the last task and set its LF equal to its EF (the project end date). Then we work backwards: LF of each predecessor = LS of its successor − 1. Where a task has multiple successors, its LF = the smallest LS among all successors − 1.

6
Task F — the end task, LF = EF
The last task sets the project end date. LF = EF (the project cannot finish later than it can finish earliest, assuming no imposed deadline).
LF(F) = EF(F) = 17
LS(F) = LF − Duration + 1 = 17 − 3 + 1 = 15
5
Task E — one successor (F)
E must finish in time for F to start on Day 15.
LF(E) = LS(F) − 1 = 15 − 1 = 14
LS(E) = LF − Duration + 1 = 14 − 4 + 1 = 11
4
Task D — one successor (F)
D must also finish in time for F to start on Day 15.
LF(D) = LS(F) − 1 = 15 − 1 = 14
LS(D) = LF − Duration + 1 = 14 − 5 + 1 = 10
3
Task C — one successor (E)
C must finish in time for E to start on Day 11.
LF(C) = LS(E) − 1 = 11 − 1 = 10
LS(C) = LF − Duration + 1 = 10 − 6 + 1 = 5
2
Task B — two successors (D and E) — take the SMALLEST LS
B feeds both D (LS=10) and E (LS=11). B's LF is constrained by whichever successor starts earliest — the smallest LS.
LS(D) = 10,   LS(E) = 11
LF(B) = min(10, 11) − 1 = 10 − 1 = 9
LS(B) = LF − Duration + 1 = 9 − 3 + 1 = 7
1
Task A — two successors (B and C) — take the SMALLEST LS
A feeds both B (LS=7) and C (LS=5). A's LF is constrained by C, which starts earlier.
LS(B) = 7,   LS(C) = 5
LF(A) = min(7, 5) − 1 = 5 − 1 = 4
LS(A) = LF − Duration + 1 = 4 − 4 + 1 = 1
06 — Full Results and Critical Path

Complete Results — All Values and Critical Path Identified

Now we calculate Total Float = LS − ES (or equivalently LF − EF) for every task. Tasks with TF = 0 are on the critical path.

TaskDurationESEFLSLFTotal Float
(LS − ES)
Critical?
A — Initiation414140✅ Yes
B — Requirements357792No
C — Design65105100✅ Yes
D — Dev Module 1581210142No
E — Dev Module 24111411140✅ Yes
F — Testing3151715170✅ Yes
🔴
Critical Path: A → C → E → F
Duration: 4 + 6 + 4 + 3 = 17 days — which matches EF(F).

Tasks B and D have 2 days of float — they can each slip by up to 2 days without delaying the project end date. However, if both B and D slip by 2 days, there is no additional float in F (since F is already critical).

What this means for the PM: Monitor tasks A, C, E and F daily. Any delay on these tasks delays the entire project. Tasks B and D have 2 days of breathing room — but use it consciously, not accidentally.
Completed Network — All ES, EF, LS, LF and Float Values
1 4 4 Task A 1 0 4 5 3 7 Task B 7 2 9 5 6 10 Task C 5 0 10 8 5 12 Task D 10 2 14 11 4 14 Task E 11 0 14 15 3 17 Task F 15 0 17 ES | DUR | EF (top) LS | TF | LF (bottom) 🔴 Critical path: A → C → E → F (17 days) 🟢 Float: B = 2 days, D = 2 days
07 — Total Float vs Free Float

Total Float vs Free Float — The Difference

Total Float (TF)

How long a task can be delayed without delaying the project end date.

TF = LS − ES   or   LF − EF

This is the float calculated in our worked example. Task B has TF = 2, meaning B can slip by up to 2 days without pushing the project past Day 17.

Important: Total float is shared along a path. If B uses its 2 days of float, D — which shares the same path segment — also loses 2 days of float. They cannot both slip by 2 days; the 2 days are shared between them.

🆓 Free Float (FF)

How long a task can be delayed without delaying any successor task's Early Start.

FF = ES(next) − EF(current) − 1

Free float is the float a task can use independently without affecting any other task. It is always ≤ total float.

Example: Task B: ES(next successor D) = 8. EF(B) = 7.
FF(B) = 8 − 7 − 1 = 0. Despite having 2 days of total float, B cannot slip at all without delaying D's earliest start.

💡
Which float matters in practice? Total float is what most PMs track day to day — it tells you how much overall schedule flexibility exists. Free float is more useful when you are reassigning resources between tasks and need to know whether slipping one task will immediately affect another. The PMP exam tests both. Use the free critical path calculator to compute both types of float automatically for your project network.

Calculate the Critical Path for Your Project

Use our free critical path calculator to perform the forward pass, backward pass and float calculations automatically — enter your tasks, durations and dependencies and get the critical path instantly.

08 — PMP Exam

Forward Pass and Backward Pass on the PMP Exam

The forward pass and backward pass are guaranteed PMP exam topics. Here is exactly what is tested and the traps candidates fall into.

What the Exam Tests

  • Identifying the critical path — given a network, which path has zero float? Which tasks are critical?
  • Calculating total float — LS − ES or LF − EF for a specific task
  • The merge point rule — when a task has multiple predecessors, ES = max(all predecessor EFs) + 1
  • The burst point rule (backward pass) — when a task has multiple successors, LF = min(all successor LSs) − 1
  • What happens when a critical task slips — the project end date moves by the same number of days
  • Near-critical paths — a path with small positive float that may become critical if a non-critical task slips

Classic Exam Trap — The Multiple Predecessor Rule

The most common mistake on exam network questions is forgetting that when a task has multiple predecessors, you take the largest EF — not the smallest, not an average. This is because all predecessor tasks must be complete before the successor can start. In our example, Task E could not start until both B (EF=7) and C (EF=10) were done — so ES(E) = 10 + 1 = 11, not 7 + 1 = 8.

🎓
Related PMP exam topics: Forward/backward pass is tested alongside Critical Path Method, Schedule Compression Techniques (which requires knowing which tasks are critical before crashing or fast tracking), and Precedence Diagramming Method. Practise all three together using our 200 free PMP practice questions.
09 — FAQ

Forward Pass and Backward Pass — 7 Questions Answered

The forward pass is a calculation technique used in the Critical Path Method (CPM) to determine the earliest possible start (ES) and earliest possible finish (EF) dates for every task in a project network. You work left to right through the network, starting at the first task (ES = Day 1). For each task, EF = ES + Duration − 1. When a task has multiple predecessors, its ES equals the largest EF among all its predecessors plus 1. The forward pass gives you the minimum possible project duration — the EF of the last task in the network.
The forward pass works left to right through the network and calculates the earliest possible start (ES) and earliest possible finish (EF) for each task. It tells you the minimum project duration. The backward pass works right to left and calculates the latest allowable start (LS) and latest allowable finish (LF) for each task without delaying the project end date. The backward pass starts at the last task, where LF = EF. Together, both passes give you all six values in each node — and the difference between LS and ES (or LF and EF) gives you total float. Tasks with zero total float are on the critical path.
When a task has two (or more) predecessors in the forward pass, its Early Start (ES) equals the largest Early Finish (EF) among all its predecessors plus 1. This is because the task cannot begin until all of its predecessors are complete — so it must wait for the last one to finish. For example, if Task E has predecessors B (EF=7) and C (EF=10), then ES(E) = max(7,10) + 1 = 11. This point in a network is called a merge point, and it is where paths converge before continuing. This rule is the most frequently tested trap in PMP network diagram questions.
Total float is calculated as: TF = LS − ES, which equals LF − EF. Both formulas give the same result. Total float represents how many days a task can be delayed without pushing the project end date. If a task has ES = 5 and LS = 8, its total float is 3 — it can slip by up to 3 days. Tasks with total float of zero are on the critical path and cannot slip at all without delaying the project. Total float is shared along non-critical paths — if one task on a path uses its float, the other tasks on that path have correspondingly less float available.
The critical path is the longest sequence of tasks from project start to project end — the path that determines the minimum project duration. After completing both the forward and backward pass, the critical path is identified by finding all tasks with total float equal to zero. These tasks form the critical path. Any delay to a critical path task delays the entire project by the same number of days. In our worked example, tasks A, C, E and F all have TF = 0, forming the critical path A → C → E → F with a duration of 17 days.
Yes — a project can have multiple critical paths if two or more paths through the network have the same duration and both equal the minimum project duration. When this happens, every task on every critical path has zero float, and any delay to any of them will delay the project. Multiple critical paths make schedule management more complex because there are more tasks that need close monitoring. In practice, it is also common to have a near-critical path — a path with small positive float (1–2 days) that is almost as constraining as the true critical path and requires monitoring alongside it.
Total float (TF = LS − ES) is how many days a task can be delayed without delaying the project end date. Free float (FF = ES of next task − EF of current task − 1) is how many days a task can be delayed without delaying any successor task's earliest start. Free float is always equal to or less than total float. A task can have high total float but zero free float — this means it can slip without delaying the whole project, but it would immediately push back the next task. Free float is useful when managing resource reassignment and wanting to know whether slipping one task will immediately cascade into the next.