Gantt charts with
critical path, constraints and baselines
A chart is the easy part. Under this one is a scheduling engine: all eight constraint types, lag in minutes, durations in working time, baselines with the variance worked out for you, and a native .mpp import that keeps all of it.
What the scheduler actually models
If you learned scheduling on Microsoft Project, this is the table you are looking for. Left column, the term you know. Right column, what happens to it here.
| Scheduling term | In Microsoft Project | In Onplana |
|---|---|---|
| Dependency types | FS, SS, FF, SF | All four. Two different types can link the same pair, an SS and an FF at once, the way a real schedule sometimes needs. |
| Lag and lead | A duration or a percentage | Days, hours or minutes, stored in working minutes, negative for lead. An imported lag keeps its exact value. |
| Constraints | Eight types | All eight. Start No Earlier Than and Finish No Earlier Than push the early dates, Start No Later Than and Finish No Later Than bound the late dates, Must Start On and Must Finish On pin both, As Late As Possible schedules against the late dates. |
| Deadlines | A marker, reported when missed | The same. A missed deadline is listed with the schedule, apart from constraint violations, and it never moves a task. |
| Duration | Working time on the calendar | Original and remaining duration in working minutes. A day is whatever the project calendar says it is, and Monday to Friday counts as five days, not four. |
| Actuals | Actual start, remaining duration, status date | The same three. A task that has started holds its start whatever its predecessors do, and remaining work is counted from the project status date. |
| Negative float | When a constraint cannot be met | The same. When a late-start or late-finish constraint cannot be met, float goes below zero and the task is flagged on the chart. |
| Links across projects | External predecessors | A predecessor in another project is honoured as a fixed anchor. This project reflows around its dates, the other project is never moved, and a cycle across projects is refused. |
| Baselines | Up to eleven, with variance fields | As many as you capture, each a full snapshot. Variance is computed for you: start, finish, planned duration, actual start, tasks added or removed, how far the finish moved, and a RAG. |
Every row above describes the scheduling engine as it runs today, not a roadmap. The one thing it does not do is Critical Chain; see the questions at the end.
What is the critical path?
The critical path is the sequence of dependent tasks that determines the minimum possible duration of a project. Every task on the critical path has zero float: delay any one of them by a day, and the project ends a day later. Tasks not on the critical path have some float, the amount of slack you can absorb without slipping the end date.
This is the single most asked-for piece of information from a schedule. It tells you which tasks need protection, which can absorb re-prioritisation, and how much your end date will move if a specific task slips. Without critical path highlighting, every delay looks equally urgent. With it, the schedule sorts itself into "must finish on time" and "has room to breathe".
The maths is deterministic: a forward pass through the dependency graph computes the earliest start and finish of each task, a backward pass computes the latest, and float is the difference. Tasks whose float is zero are critical. Most modern tools compute this; the gap is in how clearly they surface it and how much of the real schedule they feed into it. Onplana highlights the critical chain across the whole chart and recomputes it on every task or dependency change, with constraints, deadlines and started tasks all part of the calculation.
A task slipped. Watch what else moves.
One project shown twice: the plan you approved, drawn underneath as the baseline, and where the work actually is. The end-date slip, the tasks that moved and the ones still on time are worked out for you, not rebuilt from memory or dug out of an old file.
Six things on the Gantt
Specific capabilities, each one read off the product rather than a feature list.
Critical path, with the float beside it
Computed on every change and highlighted across the chart, with a float label on each bar if you want one. An AI commentary names the bottleneck and says why it is one. Every plan, including Free.
Baselines as ghost bars, variance as a report
Capture a baseline at kickoff, before a replan, at every review. Pick one and it sits behind each bar as a ghost. The Baseline tab reports the variance: which tasks slipped and by how many days, what was added or dropped, and how far the finish moved.
Four link types, lag in minutes
FS, SS, FF and SF, with lag or lead in days, hours or minutes. Draw a link on the chart to create one. Two types can join the same pair. A link that would loop back on itself is refused before it is saved.
Eight constraints and a deadline
Every Microsoft Project constraint type, set on the task with its date and honoured by the scheduler: earliest dates, latest dates, or a pin. A deadline is separate, reported when missed and never enforced. Violations are flagged on the chart.
What-if before you commit
Drag a bar and see the cascade through every successor before you apply it. Recalculate the schedule, level resources or auto-schedule from the same toolbar, and undo a move you did not mean.
Import keeps all of it
Drop in a .mpp, an MSPDI XML, a .mpx or a Primavera .xer, or an Excel or CSV work breakdown, up to 50 MB. Constraints come across one to one, lag keeps its minutes, costs and custom fields land on the tasks, and the critical path is there when the chart opens.
The four dependency types, with worked examples
Microsoft Project popularised the four-type dependency vocabulary; every serious scheduler since has adopted it. Lighter Gantt tools support only Finish-to-Start and silently drop the rest on import, which is where compatibility breaks. Onplana keeps all four with optional lag or lead.
Finish-to-Start
The default and most common type. The predecessor must finish before the successor can start, and the successor starts on the next working day.
Example: "Pour foundation" (FS) "Frame walls". You cannot frame walls before the foundation has finished curing.
Start-to-Start
The successor cannot start until the predecessor starts. Use for work that runs in parallel but needs the prior task in motion before the next can begin.
Example: "Begin code review" (SS+1d) "Begin QA test cases". QA writes test cases while developers fix review comments, starting a day later than review.
Finish-to-Finish
The successor cannot finish until the predecessor finishes. Use for parallel streams that must converge on a shared end date.
Example: "Code feature" (FF) "Write feature documentation". Docs can be drafted early but cannot be done until the feature is actually finished.
Start-to-Finish
The rarest type. The successor cannot finish until the predecessor starts. Used for handovers where the new role starts before the old one finishes.
Example: "Night shift starts" (SF) "Day shift ends". The day shift cannot end until the night shift has begun, so coverage is continuous.
Lag and lead: any of the four types can carry a positive offset (lag, "wait this long after the relationship triggers") or a negative one (lead, "start this much early"). Onplana takes lag in days, hours or minutes and stores it in working minutes, so a lag imported from Microsoft Project keeps its exact value.
Two links, one pair: the same two tasks can carry two different link types, a Start-to-Start and a Finish-to-Finish at once, which is how a real schedule says "start together and finish together". The same type twice is refused.
No loops: cycle detection runs when a link is saved and refuses any graph that would loop back on itself, with a 500-node guard so a pathological input cannot wedge the editor.
How critical path is calculated
The textbook Critical Path Method is two passes through the dependency graph. Worth understanding even if you never look at the maths, because it tells you what your scheduler is actually doing when it highlights a chain.
Forward pass: earliest start and finish
Walk the graph from the start to every end, computing the earliest each task can start (ES) and finish (EF). The first task starts at ES=0. Every later task's ES is the largest EF among its predecessors plus any lag; EF is ES plus duration. The largest EF at the end is the project duration. A "no earlier than" constraint pushes a task's ES out; a task that has already started keeps its ES whatever its predecessors do.
Backward pass: latest start and finish
Walk the graph backwards from the end, computing the latest each task can finish (LF) and start (LS) without delaying the project. The end task's LF equals its EF. For every other task, LF is the smallest LS among its successors; LS is LF minus duration. A "no later than" constraint, a deadline or a Must Finish On date caps LF, which is how a promise the plan cannot keep shows up as negative float.
Float, and the critical path
For every task, total float = LS minus ES (equivalently LF minus EF). Tasks with zero float are critical: any delay goes straight to the end date. Tasks with positive float have slack you can absorb. The set of zero-float tasks, traced through the graph, is the critical path.
Worked example: 4 tasks
A simple project: Design (3 days) FS Build (5 days) FS Test (2 days), with Documentation (4 days) running in parallel from Design through to Test.
| Task | Dur | ES | EF | LS | LF | Float | Critical? |
|---|---|---|---|---|---|---|---|
| Design | 3 | 0 | 3 | 0 | 3 | 0 | Yes |
| Build | 5 | 3 | 8 | 3 | 8 | 0 | Yes |
| Test | 2 | 8 | 10 | 8 | 10 | 0 | Yes |
| Docs | 4 | 3 | 7 | 6 | 10 | 3 | No (3d slack) |
Critical path: Design → Build → Test (10 days). Documentation has 3 days of float; you can start it 3 days late or extend it 3 days without slipping the end date. Onplana runs this calculation across the whole project graph on every task or dependency change and repaints the chart accordingly.
Common Gantt mistakes Onplana prevents
Four failure modes show up in nearly every audited schedule, a pattern from our analysis of 500 .mpp files. Each one is a tool design choice as much as a user error.
1Dates and durations that disagree
In many tools the duration is a number typed in one place and the dates are typed in another, and nothing keeps them honest, so a five-day task sits on a three-day span and the schedule is wrong in a way nobody can see. Onplana treats them as one fact. Change the duration and the finish moves; change a date before a task starts and the duration is recomputed; once a task has started, the original duration holds and the remaining duration carries the change. The same rules run whether the edit comes from the form, an import, the API or an agent.
2Critical path hidden as a colour swatch
Tools that do compute the critical path sometimes paint it as a subtle red bar indistinguishable from the default colour at small zoom levels. Onplana renders critical tasks with a distinct outline and a legend swatch, keeps the chain visible at every zoom level, and puts an AI commentary beside the chart that names the bottleneck in words.
3Hidden float that masks slipping tasks
When a task has float, "the schedule still ends on time" is technically true, but float is the safety budget, and spending it without noticing makes the next slip the one that moves the finish. Onplana shows float as a label on each bar and in the bar's detail, and when a late-date constraint cannot be met the float goes negative and the task is flagged, rather than the chart quietly absorbing it.
4Baseline drift that nobody notices
Baselines are useful only if someone compares the current schedule against them, and in most tools that comparison is a spreadsheet exercise nobody actually does. Onplana draws the baseline as a ghost bar behind every task and computes the variance for you: which tasks slipped and by how many days, which started late, which were added or removed, how far the finish moved, and a red-amber-green verdict on the whole plan.
The full audit of 500 .mpp files is on the blog at We audited 500 project schedules; the patterns here are the four most common.
Onplana vs Gantt-only tools
GanttPRO, TeamGantt, Instagantt, strong single-purpose tools. Where they end is where Onplana keeps going.
| Capability | Gantt-only tools | Onplana |
|---|---|---|
| Critical path | Often an add-on or a paid tier | All plans, including Free |
| Constraint types | Rarely more than a fixed date | All eight Microsoft Project types |
| Dependency types and lag | Often FS only, lag in days | FS, SS, FF, SF, lag in minutes |
| Baselines | Sometimes a paid tier, rarely a report | As many as you capture, variance computed |
| Duration model | Calendar days | Working time on the project calendar |
| Project file import | Varies, often XML only | Binary .mpp, XML, .mpx, .xer, Excel, CSV |
| AI on the timeline | Not typical | Risk suggestions, critical path commentary |
| Resource pool and capacity | Out of scope | Org-wide pool, capacity view |
| Stage-gate governance | Out of scope | 12-stage pipeline, multi-reviewer gates |
| Portfolio rollups | Out of scope | RAG portfolios across projects |
Specific Gantt-only tools vary in feature set. Use this as a category baseline rather than a per-product table; for product-specific comparisons see the dedicated /compare pages.
Try it on a real schedule
Have a Microsoft Project file? Run the free Schedule Health Check first and get an eight-point audit of critical-path bottlenecks, resource overallocation, dependency cycles and schedule risks without signing up. Then sign up free and import the same file to see it on the Gantt. If you would rather stay on your own machine, Onplana Schedule is a free Windows and Mac app that opens the same file and shows its critical path and float.
Go deeper in the docs
A step-by-step guide for each capability on this page, on docs.onplana.com.
Migrating from Microsoft Project Online?
The Gantt is one piece. The full migration playbook covers exporting your data, preserving the resource model, and the September 30 2026 deadline.
Project Online migration: the complete guide
Timeline, the five real migration paths, pre-migration checklist, step-by-step process, validation. Vendor-neutral.
Read the guideHow to export Project Online data before Sept 2026
Format-by-format export playbook: project plans, resource pool, custom fields, timesheets, SharePoint. Validation and storage.
Read the playbookResource capacity planning after Project Online
Migrate the enterprise resource pool, costed timesheets, calendars and capacity views without losing PMO rigour.
Read the guideFrequently asked questions
Does Onplana have a Gantt chart on the free plan?▾
Which constraint types are supported?▾
Does it count days the way Microsoft Project does?▾
Can a task depend on a task in another project?▾
Can the Gantt handle large schedules?▾
How does Onplana compare to dedicated Gantt tools (GanttPRO, TeamGantt, Instagantt)?▾
Does the Gantt integrate with the AI features?▾
Can I import a .mpp file and immediately see the Gantt?▾
What is the difference between critical path and longest path?▾
Does Onplana support resource-constrained critical path (CCPM)?▾
Can a project use sprints and the Gantt at the same time?▾
Get the Gantt without the single-purpose limit
Free plan, no credit card. Full Gantt with critical path, constraints and baselines on day zero.