Make Gantt charts from text

FebFebMarMarAprAprHarbor PreparationsStorm…Admiral InspectionLandfallTodayShipyard 88%Hull RepairsCannon MountingSupply RunRigging OverhaulDeck SealingVoyage 19%Open Water RunStorm WatchDaily DrillsMutiny DrillLandfallRecon BeachGuard CampDig TreasureLoad HoldVoyage to Treasure IslandCrewSailorsNavigatorsLookoutsGroup by Crew▼ Shipyard 88% Hull Repairs Cannon Mounting Supply Run Rigging Overhaul Deck Sealing▼ Voyage 19% Open Water Run Storm Watch Daily Drills Mutiny Drill▼ Landfall Recon Beach Guard Camp Dig Treasure Load Hold Set Sail
source
gantt Voyage to Treasure Island
start 2024-01-15
today-marker 2024-03-01
critical-path

tag Crew as c
  Sailors blue
  Navigators purple
  Lookouts orange

tag Phase as p
  Outfitting green
  Voyage orange

era 2024-01-15 -> 2024-02-15 Harbor Preparations
era 2024-03-10 -> 2024-03-14 Storm Season purple
marker 2024-02-26 Admiral Inspection
marker 2024-04-08 Landfall orange

[Shipyard] c: Sailors, p: Outfitting
  Hull Repairs 18bd progress: 100
    -> Rigging Overhaul 7bd? progress: 100
  Cannon Mounting 8bd c: Lookouts, progress: 100
    -> Deck Sealing 5bd c: Lookouts, progress: 80
  Supply Run 20bd c: Navigators, progress: 70

+25bd [Voyage] c: Sailors, p: Voyage
  Chart New Routes 8bd c: Navigators, progress: 60
    -> Open Water Run 20bd progress: 15
  Storm Watch 25bd? c: Lookouts, progress: 25
  Daily Drills 18bd progress: 20
    -> Mutiny Drill 3bd? progress: 0

+55bd [Landfall] c: Lookouts, p: Voyage
  Recon Beach 3bd
    -> Dig Treasure 6bd c: Sailors
      -> Load Hold 4bd c: Sailors
        -> Set Sail 0d
  Guard Camp 9bd

Overview

Gantt charts visualize project schedules as horizontal bars on a time axis. Tasks have positional durations, can be grouped, run in parallel by default, and linked sequentially with arrow dependencies. The renderer automatically calculates dates and highlights the critical path.

Basic Syntax

gantt Chart Title
start 2024-01-15

Task Name 30bd
Another Task 10d

The first line declares the chart type and optional title. start sets the project start date. Each task line has a name followed by a duration.

Duration Units

UnitMeaning
dCalendar days
bdBusiness days
wWeeks
mMonths
qQuarters
yYears
hHours
minMinutes
sSprints

The s unit activates sprint mode automatically. See the Settings section for sprint configuration.

Groups

Groups organize tasks into labeled sections using bracket syntax. Metadata on a group is inherited by all tasks inside it:

[Shipyard] c: Sailors
  Hull Repairs 30bd
  Rigging Overhaul 10bd

[Provisions] c: Navigators
  Supply Run 15bd
  Cargo Loading 10bd

Groups can be nested:

[Ship]
  [Hull]
    Caulking 10bd
    Planking 15bd
  [Rigging]
    Mast Stepping 5bd

Scheduling Model

Bare siblings are parallel. Tasks at the same indent level inside a group start at the same time:

[Shipyard]
  Hull Repairs 30bd
  Cannon Mounting 5bd
  Deck Sealing 5bd

All three tasks above start together.

Arrows create sequential dependencies. Use -> to chain tasks so the next one starts after the previous finishes:

[Muster]
  Crew Assembly 10bd
  -> Set Sail 0d

“Set Sail” starts after “Crew Assembly” finishes.

Dependencies

Basic arrow

Indent an arrow line under a task to define a successor:

[Tavern]
  Recruit Crew 10bd
    -> Training Drills 5bd

“Training Drills” starts after “Recruit Crew” finishes.

Cross-group references

Reference a task in another group with [Group].Task:

[Shipyard]
  Rigging Overhaul 10bd
    -> [Provisions].Cargo Loading

[Provisions]
  Cargo Loading 10bd

When the target already exists elsewhere, omit the duration to create a reference-only dependency (no new task is created).

Lag (delay after predecessor)

Add a duration before the arrow to insert a gap:

  Rigging Overhaul 10bd
    -5bd-> [Provisions].Cargo Loading

“Cargo Loading” starts 5 business days after “Rigging Overhaul” finishes.

Lead (overlap with predecessor)

Double the dash to create lead time (negative lag):

  Design Review 5bd
    --2w-> Implementation 10bd

“Implementation” starts 2 weeks before “Design Review” finishes.

Offset Prefix

Prefix a task or group with +Nunit to offset it from the chart start date:

+8bd Chart New Routes 10bd
+2w [Scouting]
  Recon Harbors 5bd

“Chart New Routes” starts 8 business days after the chart start. The entire “Scouting” group starts 2 weeks after chart start.

Milestones

A task with 0d duration renders as a diamond milestone marker:

Set Sail 0d
Release Day 0d

Uncertain Duration

Append ? to the duration unit to indicate an estimate. The bar fades out over its last 20%:

Rigging Overhaul 10bd?
Treasure Hunt 30d?

Progress

Track completion with progress: metadata (0-100):

Hull Repairs 30bd progress: 80
Supply Run 15bd progress: 100

A filled overlay shows how much of the task is complete.

Tags

Tag groups categorize tasks with color-coded values. Define a block with tag Name as alias, then reference tags in task metadata using the alias:

tag Crew as c
  Sailors blue
  Navigators purple
  Lookouts orange

[Shipyard] c: Sailors
  Hull Repairs 30bd
  Cannon Mounting 5bd c: Lookouts

The first entry in a tag group is the default. Group-level tags are inherited by child tasks unless overridden.

Eras and Markers

Eras shade a background region across a time range. Markers draw a vertical line at a single date. Both accept an optional trailing color:

era 2024-01-15 -> 2024-02-15 Harbor Preparations
era 2024-03-10 -> 2024-03-14 Storm Season purple
marker 2024-02-26 Admiral Inspection
marker 2024-04-08 Landfall orange

Eras and markers also support block syntax for multiple entries:

era
  2024-01-15 -> 2024-02-15 Harbor Preparations
  2024-03-10 -> 2024-03-14 Storm Season purple

marker
  2024-02-26 Admiral Inspection
  2024-04-08 Landfall orange

Holidays and Workweek

Define non-working days inside a holiday block. Business day durations (bd) automatically skip holidays and non-workdays:

holiday
  1718-12-25 Christmas
  1718-12-31 -> 1719-01-01 New Year

workweek sun-thu

The default workweek is Mon-Fri. Override with workweek using a day range (sun-thu) or comma-separated days (mon, tue, wed, thu).

Swimlane Mode

Use sort tag:Name to reorganize the chart into horizontal swimlanes grouped by tag value:

sort tag:Crew

tag Crew as c
  Sailors blue
  Navigators purple

[Shipyard] c: Sailors
  Hull Repairs 30bd
[Navigation] c: Navigators
  Chart Routes 10bd

Each tag value gets its own collapsible lane. In the app, click the swimlane icon on a tag pill to switch between swimlane groups.

Settings

SettingDescriptionDefault
startProject start date (YYYY-MM-DD)Today
today-markerShow today marker (bare keyword or YYYY-MM-DD)off
critical-pathHighlight the critical pathoff
no-dependenciesHide dependency arrowsshown
sortTask layout: tag or tag:GroupName for swimlanesdefault
active-tagGroup to color by (first declared is active by default; none suppresses)first group
solid-fillRender bars at full saturation instead of 25% tintoff
no-titleSuppress the chart banner titleoff
sprint-lengthSprint duration (2w, 10d)2w
sprint-numberWhich sprint the chart starts at1
sprint-startDate that sprint-number begins (YYYY-MM-DD)chart start

Settings are bare keywords (no colons). Boolean settings toggle on by writing the keyword and off with no- prefix (e.g., no-dependencies).

Sprint Mode

Sprint mode activates automatically when any task uses the s duration unit, or explicitly via sprint-* settings:

gantt Pirate Sprint Raid
start 2026-03-01
sprint-length 2w
sprint-number 5
sprint-start 2026-01-05

[Scouts]
  Recon Harbors 2s
  Map Defenses 1s

Comments

Lines starting with // are ignored. Comments can appear at the top level or indented under a task:

[Shipyard]
  Hull Repairs 30bd
  // Blocked until dry dock is available
  Rigging Overhaul 10bd

Complete Example

FebFebMarMarAprAprHarbor PreparationsStorm…Admiral InspectionLandfallTodayShipyard 88%Hull RepairsCannon MountingSupply RunRigging OverhaulDeck SealingVoyage 19%Open Water RunStorm WatchDaily DrillsMutiny DrillLandfallRecon BeachGuard CampDig TreasureLoad HoldVoyage to Treasure IslandCrewSailorsNavigatorsLookoutsGroup by Crew▼ Shipyard 88% Hull Repairs Cannon Mounting Supply Run Rigging Overhaul Deck Sealing▼ Voyage 19% Open Water Run Storm Watch Daily Drills Mutiny Drill▼ Landfall Recon Beach Guard Camp Dig Treasure Load Hold Set Sail
source
gantt Voyage to Treasure Island
start 2024-01-15
today-marker 2024-03-01
critical-path

tag Crew as c
  Sailors blue
  Navigators purple
  Lookouts orange

tag Phase as p
  Outfitting green
  Voyage orange

era 2024-01-15 -> 2024-02-15 Harbor Preparations
era 2024-03-10 -> 2024-03-14 Storm Season purple
marker 2024-02-26 Admiral Inspection
marker 2024-04-08 Landfall orange

[Shipyard] c: Sailors, p: Outfitting
  Hull Repairs 18bd progress: 100
    -> Rigging Overhaul 7bd? progress: 100
  Cannon Mounting 8bd c: Lookouts, progress: 100
    -> Deck Sealing 5bd c: Lookouts, progress: 80
  Supply Run 20bd c: Navigators, progress: 70

+25bd [Voyage] c: Sailors, p: Voyage
  Chart New Routes 8bd c: Navigators, progress: 60
    -> Open Water Run 20bd progress: 15
  Storm Watch 25bd? c: Lookouts, progress: 25
  Daily Drills 18bd progress: 20
    -> Mutiny Drill 3bd? progress: 0

+55bd [Landfall] c: Lookouts, p: Voyage
  Recon Beach 3bd
    -> Dig Treasure 6bd c: Sailors
      -> Load Hold 4bd c: Sailors
        -> Set Sail 0d
  Guard Camp 9bd