What should I look at first in a P6 schedule?
Start with the data date. It is the point in time up to which progress has been recorded. Everything before it is treated as actual, everything after it is forecast. If the data date is old, the float values, the critical path and the forecast finish describe a project that no longer exists. Then check which project you are reading: an export may include a baseline or several projects.
How is a P6 schedule structured?
Each line is an activity with an ID, a name, a duration and a calendar. Activities hang under the work breakdown structure (WBS), a hierarchy that groups work by area, phase or discipline. If you want the definition first, see our glossary entry for the work breakdown structure (WBS). The WBS is how you read the programme top-down: start at the summary level, find the branch you care about, then open the activities beneath it.
Some terms you will see in the columns:
| Term | Meaning |
|---|---|
| Original duration | The planned working time for the activity |
| Remaining duration | Working time left at the data date |
| Early start / early finish | Earliest dates the logic allows |
| Late start / late finish | Latest dates that do not delay the finish |
| Total float | Slack before the project finish (or a constraint) is affected |
| Free float | Slack before a successor's early start is affected |
| Calendar | The working days and hours used to turn durations into dates |
How do relationships and lags work?
Activities are connected by relationships:
- Finish to start (FS): the successor starts when the predecessor finishes. The most common type.
- Start to start (SS): the successor can start once the predecessor has started.
- Finish to finish (FF): the successor cannot finish before the predecessor finishes.
- Start to finish (SF): rare; the successor cannot finish until the predecessor starts.
A lag adds a delay (or, if negative, an overlap) to a relationship. Occasional lags are normal, for example concrete curing. A programme full of long lags or negative lags is hiding something: durations that should be separate activities, or logic that was forced to fit a date.
What is float, and what is the critical path?
Total float is how long an activity can be delayed without delaying the project finish date. Free float is how long it can be delayed without delaying any successor's early start. The critical path is the longest continuous chain of activities from start to finish; delay any of them and the finish moves. In P6, activities are by default treated as critical when their total float is zero or less, but the definition of critical is a schedule option, so check the setting before relying on the label. For the method itself, see critical path method.
Worked example (illustrative numbers). Activity A takes 5 days. After A, activity B takes 10 days and activity C takes 6 days, and both must finish before D, which takes 3 days. All links are finish to start, no lags.
- Path A, B, D = 5 + 10 + 3 = 18 days. This is the longest path, so it is critical with zero float.
- Path A, C, D = 5 + 6 + 3 = 14 days.
- C can finish as late as day 15 without delaying D, but it finishes on day 11 at the earliest, so C has 4 days of total float. Because D's early start is driven by B, C's free float is also 4 days.
- If B slips by 2 days, the project finish moves by 2 days. If C slips by 2 days, nothing moves.
You can test your own numbers with the critical path calculator.
Which constraints and settings distort the picture?
Constraints override logic. A "must finish on" or "start no earlier than" constraint can force a date that the logic would not give, and a hard constraint can produce negative float or hide float entirely. When you see activities pinned with constraints, ask why. Also check that each activity has a predecessor and a successor: an activity with no successor is an open end, and its float is meaningless because nothing depends on it.
Calendars matter too. An activity on a seven-day calendar next to one on a five-day calendar produces dates that look inconsistent until you compare the calendars. Check the working week, holidays and Ramadan hours if the project uses them.
What is the difference between baseline and current schedule?
The baseline is a saved copy of the approved programme. The current schedule is the one being updated. Reading variance means comparing the two: finish date movement, activities added or removed, duration changes and logic changes. A programme that finishes on time only because logic was changed since the baseline is not on time. If your tool supports it, compare versions rather than eyeballing two PDFs.
How is percent complete measured?
P6 supports different percent complete types, such as duration, physical and units. The type changes what "50%" means. Duration percent is driven by time, physical percent by a measured quantity. Know which one the planner used before you challenge a progress figure. Plotting progress over time gives an S-curve; try the S-curve generator to see the shape for a planned profile.
A ten-minute checklist
- Confirm the data date and the project you are reading.
- Look at the project finish date and compare it to the contract completion date.
- Filter for negative float and read the reasons.
- Filter for open ends (no predecessor or no successor).
- List activities with constraints, especially hard ones.
- Scan for long lags and negative lags.
- Compare calendars across critical activities.
- Read the longest path from start to finish and sanity-check it against how the work will really be built.
For ways to compare site activities to programme dates, see using AI to match site activities with construction schedules.
How do I read a P6 schedule without P6?
Open an XER or XML export in a viewer. A free browser-based P6 viewer can show the Gantt, WBS and critical path from an XER file; see the tool page for what it supports. In Arkan, the Schedule module loads Primavera files, shows grid and Gantt views and a critical path analysis, and lets you compare versions. Book a demo to see it with a programme like yours.