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

Gantt charts with
critical path & AI

Critical path computed automatically. Four dependency types with lag. Saved baselines as Gantt shadows. Native .mpp import. AI risk overlay on the timeline. Not a Gantt-only tool, a full PM platform with a better Gantt.

The Gantt view: computed critical path, float bands, drag-to-reschedule, and an AI explanation of the bottleneck.

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 (the critical ones), which can absorb re-prioritisation (the non-critical ones), 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 math is deterministic: forward-pass through the dependency graph to compute earliest start and finish for each task, backward-pass to compute latest start and finish, then float per task = latest minus earliest. Tasks where float equals zero are critical. Most modern PM tools compute this automatically; the gap is in how clearly they surface it. Onplana highlights the critical chain across the entire Gantt and recomputes on every task or dependency change.

Six things on the Gantt

Specific capabilities, not feature-list hand-waving.

Critical path highlighted automatically

No manual flagging, the longest dependency chain (and any tied chains) is computed and highlighted across the Gantt. Re-computes on every task or dependency change. Available on every plan, including Free.

Saved baselines as Gantt shadows

Snapshot the schedule at any point, kickoff, monthly review, post-replan. The Gantt overlays planned (faded shadow) vs actual (solid bar) so slippage is visible at a glance. Multiple baselines per project; switch via dropdown.

Four dependency types with lag/lead

FS (Finish-to-Start), SS (Start-to-Start), FF (Finish-to-Finish), SF (Start-to-Finish), the four MS Project standards. Lag and lead in days, hours, or percentage. Onplana detects and refuses circular dependencies before save.

AI risk overlay on the timeline

Risk-detection suggestions surface as orange chips on the affected tasks in the Gantt. Click to see why the AI flagged it (schedule slippage, dependency cycle, resource overallocation, budget burn-rate anomaly), dismiss false positives, or accept and create a mitigation task.

Native .mpp import preserves all of the above

Drop in a .mpp from Microsoft Project; Onplana's MPXJ-based parser preserves all four dependency types with lag, milestones, ECFs, baselines, calendars. No XML conversion intermediate, no Project Desktop license needed.

Drag-and-drop scheduling, undo-safe

Drag a task to a new date; Onplana cascades dependents, refuses moves that would create cycles, and offers an undo. Drag a milestone to a new diamond position. Resize bars to change duration. Standard interactions, no surprises.

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 preserves all four with optional lag/lead.

FS

Finish-to-Start

The default and most common type. Predecessor must finish before successor can start. Use for sequenced work that physically depends on the prior step.

Example: "Pour foundation" (FS) "Frame walls". You cannot frame walls before the foundation has finished curing.

SS

Start-to-Start

Successor cannot start until predecessor starts. Use for work that runs in parallel but requires the prior task to be 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, but starts a day later than review.

FF

Finish-to-Finish

Successor cannot finish until predecessor finishes. Use for parallel work streams that must converge on a shared end date.

Example: "Code feature" (FF) "Write feature documentation". Docs can be drafted early but cannot be considered done until the feature is actually finished.

SF

Start-to-Finish

Rarest type. Successor cannot finish until predecessor starts. Used for handoff relationships where the new role starts before the old one finishes.

Example: "Night-shift starts" (SF) "Day-shift ends". Day shift cannot end until night shift has begun, ensuring continuous coverage.

Lag and lead: any of the four types can carry a positive offset (lag, "wait N days after the relationship triggers") or negative (lead, "start N days early relative to the relationship"). Onplana accepts lag in days, hours, or percentage of predecessor duration. Cycle detection runs on save and refuses any graph that would loop back on itself, with a 500-node BFS guard so pathological inputs cannot wedge the editor.

How critical path is calculated

The textbook Critical Path Method (CPM) is two passes through the dependency graph. Worth understanding even if you never look at the math, because it tells you what your scheduler is actually doing when it highlights a chain.

Forward pass: earliest start + finish

Walk the graph from the start node to every end node, computing the earliest each task can start (ES) and finish (EF). The first task starts at ES=0. Every subsequent task's ES is the maximum EF of all its predecessors plus any lag. EF = ES + duration. The longest accumulated EF at the end node is the project duration.

Backward pass: latest start + finish

Walk the graph backwards from the end node, computing the latest each task can finish (LF) and start (LS) without delaying the project. LF for the end task equals its EF (no slack at the end). For every other task, LF is the minimum LS of all its successors. LS = LF minus duration.

Float, and the critical path

For every task, total float = LS minus ES (or equivalently LF minus EF). Tasks with float = 0 are critical: any delay propagates straight to the end date. Tasks with float > 0 have slack you can absorb. The set of all zero-float tasks, traced through the dependency 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 entire project graph on every task or dependency change and re-paints the Gantt accordingly.

Common Gantt mistakes Onplana prevents

Four specific failure modes show up in nearly every audited schedule (a pattern documented in our analysis of 500 .mpp files). Each one is a Gantt-tool design choice as much as a user error.

1Rolled-up summary dates that lie about the schedule

Many Gantt tools let you set a date on a summary task independently of its children, which silently overrides the rolled-up rollup. The summary then shows a date that has no relationship to the actual leaf-task schedule. Onplana computes summary dates from children only; the field is read-only at the summary level and the children are the source of truth.

2Critical path hidden as a colour swatch

Tools that DO compute critical path sometimes paint it as a subtle red bar indistinguishable from the default colour at small zoom levels. PMs miss it. Onplana renders critical-path tasks with a distinct outline and a dedicated legend swatch, and the critical chain stays visible at every zoom level.

3Hidden float that masks slipping tasks

When a task has float, "the schedule still ends on time" is technically true, but the float is the safety budget; consuming it without recording the consumption makes the next slip catastrophic. Onplana surfaces per-task float in the task detail panel and tracks float consumption against baseline so drift is visible early.

4Baseline drift that nobody notices

Baselines are useful only if you compare current schedule against them. Tools without first-class baseline overlay leave the comparison as a manual spreadsheet exercise nobody actually does. Onplana renders the baseline as a shadow bar behind every task on the Gantt; slippage is visible at a glance without exporting anything.

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, GanttChartMaker, strong single-purpose tools. Where they end is where Onplana keeps going.

CapabilityGantt-only toolsOnplana
Critical pathOften add-on or premium-tier✓ All plans, including Free
Saved baselinesSometimes premium-tier✓ Multiple baselines, all plans
Four dependency types + lagOften FS-only✓ FS / SS / FF / SF + lag/lead
Native .mpp importVaries; often XML-only✓ Direct binary parse via MPXJ
AI risk detectionNot typical (single-purpose)✓ Continuous overlay on timeline
Resource pool / capacityLimited (out of scope)✓ Org-wide pool + capacity heatmap
Stage-gate governanceNot in scope✓ 12-stage pipeline + multi-reviewer gates
Portfolio rollupsNot in scope✓ Multi-project RAG portfolios

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, get an 8-point audit of critical-path bottlenecks, resource overallocation, dependency cycles, and schedule risks without signup. Then sign up free and import the same file to see it on the Gantt.

Frequently asked questions

Does Onplana have a Gantt chart on the free plan?
Yes, full Gantt with critical path highlighting, all four dependency types, milestones, and saved baselines on the Free plan. Most Gantt-specific tools gate critical path and baselines behind paid tiers; Onplana includes them on every plan because they're not optional for honest scheduling.
Can the Gantt handle large schedules?
Yes. The Gantt component is virtual-scrolled and handles 50,000-task projects without lag. The critical-path computation has a BFS guard with a 500-node ceiling for cycle-detection on save (which prevents pathological cases from blocking commits); the actual schedule walk is unbounded.
How does Onplana compare to dedicated Gantt tools (GanttPRO, TeamGantt, Instagantt)?
Gantt-only tools deliver a chart and stop. They're lightweight, focused, and good at what they do. Onplana ships a full PM platform around the Gantt, critical path, baselines, AI risk overlay, governance, resource pool, .mpp import, portfolio rollups. If you only need a one-off Gantt and never expect to grow into program management, a Gantt-only tool fits. If your team's scope is going to grow into PMO territory, you'll outgrow the single-purpose tool inside 12 months.
Does the Gantt integrate with the AI features?
Yes. AI risk detection surfaces as overlays on Gantt tasks. AI plan generation produces tasks with dates and dependencies that render directly on the Gantt. AI-suggested mitigations (when accepted) become real tasks in the schedule and appear on the Gantt. The Gantt isn't a separate surface, it's wired into the AI layer.
Can I import a .mpp file and immediately see the Gantt?
Yes. Sign up free, upload a .mpp via the Migration Wizard, accept the auto-mapped fields. The Gantt renders within seconds with all four dependency types, milestones, baselines, and ECFs preserved. Try the Migration Preview tool first if you want to see compatibility before signup.
What is the difference between critical path and longest path?
In 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 Gantt, which is not always the critical path if some tasks have float or if multiple paths tie. Onplana computes the strict CPM definition and highlights all tied chains when more than one exists, so you can see whether the critical path is unique or whether several chains are co-critical (a common surprise on programs over 200 tasks).
Does Onplana support resource-constrained critical path (CCPM)?
The standard Gantt and critical-path computation are duration-based, the textbook CPM. Critical Chain (CCPM) where the critical path is computed against resource availability rather than just dependencies, and buffers are added explicitly, is not yet a first-class feature. Workaround: model your buffer tasks explicitly (e.g. as zero-duration milestones or padded-duration tasks) and the standard CPM will treat them correctly. CCPM as a native mode is on the roadmap; vote at /features if it matters for your workflow.
How does the Gantt handle agile sprints + traditional Gantt scheduling in the same project?
Agile and Gantt are not opposed. Onplana lets you create Sprints (PRO+) inside a project that already has a Gantt; sprint scope appears as a colored band on the Gantt timeline showing which tasks fall in which sprint. Tasks can be both Gantt-scheduled (with dates and dependencies) AND assigned to a sprint. The combination is common in regulated agile teams that need the dependency rigor for audit + the sprint cadence for delivery. Pure agile teams can ignore the Gantt entirely and work on the Kanban or Backlog views.

Get the Gantt without the single-purpose limit

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