Microsoft Project Online retires September 30, 2026, migrate to a modern platform before it's too late.Start migration
Full Gantt and baselines on every plan, including Free

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.

The Gantt view: computed critical path, float labels, drag-to-reschedule, and an AI explanation of the bottleneck.
Truly supported, not approximated

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 termIn Microsoft ProjectIn Onplana
Dependency typesFS, SS, FF, SFAll 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 leadA duration or a percentageDays, hours or minutes, stored in working minutes, negative for lead. An imported lag keeps its exact value.
ConstraintsEight typesAll 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.
DeadlinesA marker, reported when missedThe same. A missed deadline is listed with the schedule, apart from constraint violations, and it never moves a task.
DurationWorking time on the calendarOriginal 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.
ActualsActual start, remaining duration, status dateThe 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 floatWhen a constraint cannot be metThe 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 projectsExternal predecessorsA 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.
BaselinesUp to eleven, with variance fieldsAs 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.

Recorded in Onplana. The baseline is stored when the plan is approved, so the comparison is measured, not eyeballed.

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.

FS

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.

SS

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.

FF

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.

SF

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.

TaskDurESEFLSLFFloatCritical?
Design303030Yes
Build538380Yes
Test28108100Yes
Docs4376103No (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.

CapabilityGantt-only toolsOnplana
Critical pathOften an add-on or a paid tierAll plans, including Free
Constraint typesRarely more than a fixed dateAll eight Microsoft Project types
Dependency types and lagOften FS only, lag in daysFS, SS, FF, SF, lag in minutes
BaselinesSometimes a paid tier, rarely a reportAs many as you capture, variance computed
Duration modelCalendar daysWorking time on the project calendar
Project file importVaries, often XML onlyBinary .mpp, XML, .mpx, .xer, Excel, CSV
AI on the timelineNot typicalRisk suggestions, critical path commentary
Resource pool and capacityOut of scopeOrg-wide pool, capacity view
Stage-gate governanceOut of scope12-stage pipeline, multi-reviewer gates
Portfolio rollupsOut of scopeRAG 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.

Frequently asked questions

Does Onplana have a Gantt chart on the free plan?
Yes. The full Gantt with critical path highlighting, all four dependency types, all eight constraint types, milestones and baselines with variance is on the Free plan. Most Gantt-specific tools gate critical path and baselines behind paid tiers; Onplana includes them on every plan because a schedule without them is not honest.
Which constraint types are supported?
All eight from Microsoft Project: As Soon As Possible, As Late As Possible, Must Start On, Must Finish On, Start No Earlier Than, Start No Later Than, Finish No Earlier Than and Finish No Later Than. The six that carry a date are set on the task with that date. The "no earlier" pair pushes the early dates, the "no later" pair bounds the late dates, the "must" pair pins both, and As Late As Possible schedules against the late dates. When a late-date constraint cannot be met, float goes negative and the task is flagged. A deadline is a separate field, reported when missed and never enforced.
Does it count days the way Microsoft Project does?
Yes. Durations are working time on the project calendar, and a day is however many hours that calendar says. Counting is inclusive, so a task from Monday to Friday is five days and a Finish-to-Start successor starts on the next working day. Original duration, remaining duration and actual start are first-class fields: a task that has started holds its start, and remaining work is counted from the project status date.
Can a task depend on a task in another project?
Yes. A predecessor in another project is read as a fixed anchor: this project reflows around its dates, the other project is never moved by it, and a cycle across projects is refused like any other. Moving a task between projects keeps its dependencies.
Can the Gantt handle large schedules?
The chart is virtualised: a 5,000-row plan keeps about 25 bars in the document at a time, measured, so scrolling stays smooth as the plan grows. The cycle check that runs when you save a dependency has a 500-node guard so a pathological graph cannot wedge the editor; the schedule calculation itself walks the whole graph.
How does Onplana compare to dedicated Gantt tools (GanttPRO, TeamGantt, Instagantt)?
Gantt-only tools deliver a chart and stop. They are lightweight, focused and good at what they do. Onplana runs a scheduling engine under the chart, with constraints, baselines with variance, working-time durations and a real import, and a full PM platform around it: governance, a resource pool, portfolio rollups. If you only need a one-off Gantt, a Gantt-only tool fits. If your scope is going to grow into program management, you will outgrow the single-purpose tool inside a year.
Does the Gantt integrate with the AI features?
Yes. Risk suggestions appear on the affected tasks, grouped as schedule, resource, budget, scope or external, and each can be dismissed or accepted. An AI commentary reads the critical path and names the bottleneck. AI plan generation produces tasks with dates and dependencies that render straight onto the chart, and you can ask about the plan from the chart itself.
Can I import a .mpp file and immediately see the Gantt?
Yes. Sign up free, upload a .mpp through the Migration Wizard and accept the mapped fields. The chart renders with the four dependency types, lag to the minute, all eight constraint types, milestones, costs including baseline cost, and custom fields preserved. Try the Migration Preview tool first if you want to see compatibility before you sign up.
What is the difference between critical path and longest path?
In the strict CPM definition they are the same: the critical path is the sequence of dependent tasks with zero float that determines the minimum project duration. In practice many teams use "longest path" to mean the visually longest chain on the chart, which is not always the critical path if some tasks have float or several paths tie. Onplana computes the strict definition and highlights every tied chain, so you can see whether the critical path is unique or several chains are co-critical, a common surprise on programs over 200 tasks.
Does Onplana support resource-constrained critical path (CCPM)?
The critical path is duration-based, the textbook CPM. Critical Chain, where the path is computed against resource availability and buffers are added explicitly, is not a first-class mode. Resource levelling is a separate action on the toolbar, and you can model buffers as explicit tasks, which the standard CPM treats correctly.
Can a project use sprints and the Gantt at the same time?
Yes. A task can carry dates and dependencies on the Gantt and also belong to a sprint, which is common in regulated agile teams that need dependency rigour for audit and a sprint cadence for delivery. Sprints are on Pro and above. Pure agile teams can ignore the Gantt and work from the Kanban or Backlog views.

Get the Gantt without the single-purpose limit

Free plan, no credit card. Full Gantt with critical path, constraints and baselines on day zero.