Documentation / Tasks / Milestones

Milestones

A milestone marks a moment rather than a stretch of work — a delivery, an approval, a go-live. This page covers the two ways to create one, how it is drawn, and the rules it follows once it exists.

Every row on your chart is one of two things: a task, which takes time, or a milestone, which doesn’t. A milestone has a start date, no duration and no bar — just a diamond sitting on the day it happens. Everything else on the form still works, so a milestone can carry a resource, a status, notes and a dependency like any other row.

01 What a milestone is for

Use a milestone whenever the thing you want on the chart is an event rather than an effort. In a villa build that’s “Permits approved”, “Watertight”, “Handover” — moments that either happened or didn’t, with no sensible answer to “how many days did it take?”

Three reasons it’s worth the extra row:

  • It reads instantly. A diamond on a chart of bars is the one thing the eye finds first, which is exactly what you want for the dates a client asks about.
  • It gives other tasks something to hang off. “Electrical first fix” shouldn’t wait on the whole Structure phase — it should wait on the house actually being closed in. A milestone is the honest predecessor, and in the villa build three trades hang off “Watertight” for exactly that reason.
  • It never drifts. A zero-duration row can’t quietly grow from three days to five, so a milestone in your schedule stays a fixed commitment.

02 Adding a milestone

Select the row you want the milestone to sit at, then either:

1

From the ribbonGantt ExcelTasksAdd Milestone.

2

From the right-click menu — right-click the row in the task grid and choose Add Milestone. Same command, closer to hand.

Either way the Task Form opens in milestone mode. You’ll see three differences from an ordinary Add Task:

  • The window is titled Add Milestone, and its first tab reads Milestone Details rather than Task Details.
  • The field beside the name is labelled Milestone, not Task.
  • End Date and Duration are locked in all three bands and skipped by the Tab key, so typing runs straight from the name to the dates that matter.

The form doesn’t open empty. The Estimated Start Date arrives already filled in with the next working date after today, the End Date matching it and the Duration reading 0 — so a milestone for tomorrow needs nothing but a name. Overtype the start date with the one you want — say Wed 2 September for “Watertight” — and the Estimated End Date follows it to Wed 2 September, the Duration still 0. The Baseline and Actual bands behave the same way: give either one a start date and its end date mirrors it. Click OK and the diamond appears on the chart.

The Task Form opened by Add Milestone: the title bar reads Add Milestone, the first tab reads Milestone Details, and the End Date mirrors the Start Date with a duration of 0.
Type a start date and the end date mirrors it — the duration is fixed at 0.

03 Converting a task you already have

The second route starts from a task that already exists. Open it in the Task Form — double-click its row — and on the Task Details tab tick Convert to Milestone. Gantt Excel asks Convert this task to a milestone? under a Confirm heading; answer Yes and the conversion happens immediately in the open form.

What changes the moment you say yes:

  • The Estimated duration is set to 0 and the Estimated End Date is rewritten to match the Estimated Start Date.
  • The same happens to the Baseline and Actual bands — but only where that band already has a start date. A band you never filled in is left empty rather than being invented.
  • End Date and Duration lock in all three bands, and the Resource Cost figure is cleared.
  • Work is recalculated from the new duration of 0 — unless you had pinned a figure there by hand, in which case yours is left exactly as it was.
  • The form retitles itself — the first tab becomes Milestone Details and the window heading becomes Edit Milestone.

Nothing is written to the sheet until you click OK. This is the Turning a task into a milestone section of The Task Form; everything about what happens after the conversion is on this page.

The tickbox isn’t always there. Convert to Milestone is hidden on two kinds of row:

  • A parent (summary) task — its dates are rolled up from its children, so there is nothing of its own to zero out.
  • A task whose Estimated Start Date is already driven by a dependency of the FS or SS kind. Delete the link first if you really want the row to become a milestone, then convert, then re-link it.

04 How a milestone is drawn

A task is drawn as a rectangle spanning its dates. A milestone has no span, so it is drawn as a diamond centred on its single date. That is the whole visual difference, and it is why a milestone is legible at any zoom level: a one-day bar shrinks to a sliver on a yearly view, a diamond doesn’t.

DAILY VIEW

“Can a milestone show a baseline and an actual too?”

Yes. In a daily view each band draws its own diamond, in that band’s colour, exactly as each band draws its own bar for a task. If you set a baseline on “Watertight” for Wed 2 September and the roof was actually finished on Mon 7 September, you get two diamonds three working days apart and the slippage is visible without reading a single date.

Whether those diamonds appear at all depends on the same two tickboxes that control baseline and actual bars — Show Baseline Bars and Show Actual Bars, in Settings.

HOURLY VIEW

“And in the hourly view?”

Only the Estimated diamond is drawn. The hourly view doesn’t show baseline or actual bars at all — Show Baseline Bars and Show Actual Bars are greyed out in Settings while it is on — and milestones follow the same rule: the renderer draws the Estimated diamond and hides any Baseline or Actual diamonds left over from a daily render.

This follows the view, not the chart. Switch an hourly chart into a daily view and its milestones get their baseline and actual diamonds back, with both tickboxes live again. Everything else about a milestone — dependencies, status, resources — is the same either way.

A daily Gantt chart. Roof structure and Roof tiling bars run into the Watertight milestone, drawn as a single orange diamond on Wed 2 September with no bar, and the task name beside it.
No span, no bar — a diamond on the day it happens.

05 Milestones and dependencies

Milestones are wired into the schedule like anything else, and the two directions behave differently — which is worth knowing before you draw the links.

As a predecessor — no restrictions

Any task can wait on a milestone, using any of the four link types. This is the pattern worth building your plan around: “Electrical first fix”, “Plumbing first fix” and “Windows and doors” each take an FS link from “Watertight”, so all three start the working day after the roof is finished. Push the roofing back a week and all three trades — and everything downstream of them — move with it.

It is also the honest way to link across phases. Pointing a task at a whole summary row is fragile; pointing it at that phase’s closing milestone is exact.

As a successor — Finish to Start and Start to Start only

Open a milestone’s Dependencies tab and the Type list offers just two entries:

TypeCodeOffered on a milestone?Why
Finish to StartFSYesDrives the milestone’s date from the predecessor’s finish
Start to StartSSYesDrives it from the predecessor’s start
Finish to FinishFFNoDrives an end date, which on a milestone only mirrors the start
Start to FinishSFNoSame reason

Both of the omitted types drive a task’s end date and let the start follow from the duration. On a milestone the end date isn’t a separate thing — it mirrors the start — so all four types collapse to two distinct outcomes, and the list is trimmed to those two rather than offering four that do the work of two.

That is a restriction on new links only, and it is worth being clear about the difference. The scheduler handles an end-driven milestone perfectly well: given a driven end date it simply moves the start to match. So a task that already carries an FF or SF link keeps that link when you convert it to a milestone, and goes on being scheduled by it — you just can’t add another one of that kind afterwards.

The lag works as normal on the two types that are offered. “Final inspection” with an FS link and a lag of 2 lands two working days after its predecessor finishes — weekends and holidays on the resource’s calendar skipped, as always. The four link types in full are covered in the Dependencies guide.

06 Turning a milestone back into a task

Plainly: the Task Form has no “convert back” control. Convert to Milestone is only shown on a row that is currently a task, and it disappears the moment the conversion happens — so once you have clicked OK, reopening the row shows you a Milestone Details tab with no tickbox to untick.

So the practical advice is the ordinary one: Cancel is your undo, and it only works while the form is open. If you are unsure whether a row should be a moment or a stretch of work, decide before you tick the box.

One related limit worth knowing while you are shaping the outline: a milestone cannot have children. Try to indent a task underneath one and Gantt Excel stops you with Milestones cannot have child tasks under them. That follows from the same zero-duration rule — a parent’s dates are rolled up from its children, and a milestone has no room to roll anything up into. Indenting and summary rows are covered in the outline guide.

07 Common questions

Why can’t I type a duration on my milestone?
Because a milestone’s duration is always 0 — that is what makes it a milestone. The Duration and End Date fields are locked in all three bands and skipped in the tab order, and the end date is written for you the moment you enter a start date. If the row really does take time, it should be a task rather than a milestone.
I don’t see Convert to Milestone on this task — where has it gone?
Two rows never show it. A parent (summary) task has no dates of its own to zero out, and a task whose Estimated Start Date is already driven by a FS or SS dependency is being scheduled by that link. For the second case, delete the link, convert, then link it up again.
Why are Finish to Finish and Start to Finish missing from my milestone’s Type list?
Both drive a task’s end date, and a milestone has no end date independent of its start — so on a milestone they land in the same place as the two that are offered, and the list is trimmed to the two distinct outcomes. Use Finish to Start or Start to Start. Two things this does not mean: it only applies to the milestone as the successor (tasks that depend on a milestone can use any of the four), and it only applies to new links — an FF or SF link a task already carried survives conversion and still drives the milestone’s date.
My baseline diamond has vanished in the hourly view. Is it a bug?
No — the hourly view shows the Estimated band only, for milestones and tasks alike. The Baseline and Actual options are disabled in Settings while that view is on, and a milestone’s Baseline and Actual diamonds are hidden to match. It is the view that decides, not the chart: switch the same hourly chart to a daily view and they are drawn again.
Should I use a milestone or a one-day task?
Ask whether anyone does work on that day. “Final inspection” is half an hour of someone’s time but what you are tracking is the outcome — make it a milestone. “Snagging” is a real day of labour with a cost and a resource — make it a one-day task. A milestone also carries no resource cost — converting clears that figure outright. Work follows the duration, so it drops to 0 on an ordinary row; if you had pinned a Work figure by hand, that pinned value is left alone and survives the conversion.
Can I group tasks under a milestone to mark the end of a phase?
No — indenting a task under a milestone is refused with Milestones cannot have child tasks under them. The usual shape is the other way round: a summary task holding the phase’s work, with a milestone as the last row inside it marking the phase complete. Other phases then link to that milestone.

Related: The Task Form · Adding, editing & deleting tasks · Linking tasks with dependencies · Summary tasks, indenting & the WBS