Mermaid gantt-diagram-editor
Een gantt-diagram legt het werk op de kalender: wat hoe lang duurt, wat overlapt en wat niet kan beginnen voordat iets anders klaar is. Pak het erbij wanneer data en afhankelijkheden de kern zijn. Heb je alleen de volgorde nodig en geen data, dan is een stroomdiagram lichter en verrot het niet zodra de planning schuift.
Een releaseplanning met afhankelijkheden en een mijlpaal
Wat dit een gantt-diagram maakt in plaats van een tekening met balken, is `after a1`: de afhankelijkheid is gedeclareerd, dus de eerste taak verschuiven sleept alles mee wat erna komt. De mijlpaal markeert een vaste datum die geen tijd kost. De regel `dateFormat DD-MM-YYYY` is niet optioneel: zonder loop je in de datumval die hieronder staat.
gantt
title Release 2.4
dateFormat DD-MM-YYYY
axisFormat %d-%m
excludes weekends
section Ontwikkeling
API-contract :done, a1, 07-01-2026, 10d
Implementatie :active, a2, after a1, 20d
Interne tests : a3, after a2, 8d
section Release
Stabilisatieperiode : b1, after a3, 5d
Releasebesluit :milestone, m1, after b1, 0d
Uitrol naar productie :crit, b2, after m1, 3dUitgewerkte voorbeelden
1. Het eenvoudigste correcte diagram
`dateFormat` vertelt Mermaid hoe het de data die jij schrijft moet LEZEN; `axisFormat` bepaalt hoe ze op de as worden GETOOND. Dat zijn twee losse instellingen, en ze door elkaar halen is de meest voorkomende bron van ergernis bij gantt.
gantt
title Sprint 14
dateFormat DD-MM-YYYY
section Werk
Bouw de zoekfunctie :02-03-2026, 10d2. Taak-id's en afhankelijkheden
Een taak een id geven laat latere taken `after <id>` schrijven. Met gedeclareerde afhankelijkheden verander je de startdatum op één plek en volgt de rest van de planning vanzelf.
gantt
title Datamigratie
dateFormat DD-MM-YYYY
section Voorbereiding
Schema doorlichten :a1, 02-02-2026, 5d
Mappings schrijven :a2, after a1, 8d
section Uitvoering
Generale repetitie :a3, after a2, 3d
Omschakelen :a4, after a3, 1d3. Statussleutelwoorden
`done`, `active` en `crit` veranderen hoe de balk getekend wordt. Het is de goedkoopste manier om het diagram niet alleen «wat was het plan» maar ook «waar staan we» te laten beantwoorden.
gantt
title Platform, eerste kwartaal
dateFormat DD-MM-YYYY
section Infrastructuur
Terraform opschonen :done, t1, 05-01-2026, 12d
Kubernetes bijwerken :active, t2, 19-01-2026, 15d
Kostenreview : t3, after t2, 5d
section Beveiliging
Afhankelijkheidsaudit :crit, s1, 12-01-2026, 6d4. Mijlpalen
Een mijlpaal is een punt, geen interval: geef hem `0d`. Gebruik ze voor data die van buiten het project komen — een beurs, een contractuele termijn, een code freeze.
gantt
title Lanceerplan
dateFormat DD-MM-YYYY
section Techniek
Scope bevriezen :milestone, m1, 01-04-2026, 0d
Bugjacht : e1, 01-04-2026, 5d
Releasetak :milestone, m2, after e1, 0d
section Communicatie
Einde persembargo :milestone, m3, 15-04-2026, 0d5. Weekenden en feestdagen uitsluiten
`excludes weekends` zorgt dat looptijden zaterdag en zondag niet meetellen, zodat een taak van 10 dagen twee werkweken beslaat in plaats van midden in het weekend te eindigen. Feestdagen sluit je per datum uit; in Nederland scheelt dat rond Koningsdag en Bevrijdingsdag merkbaar.
gantt
title Nieuwe dienst in gebruik nemen
dateFormat DD-MM-YYYY
excludes weekends, 27-04-2026, 05-05-2026
section Bouw
Infrastructuur opzetten :p1, 20-04-2026, 5d
CI/CD aansluiten :p2, after p1, 5d
section Overdracht
Handleiding en training :p3, after p2, 4dOverzicht van de gantt-syntaxis
Van de zes typen is gantt op één punt het minst vergevingsgezind — de taakregel — en op al het andere het meest. Precies daarom glippen er zoveel fouten onopgemerkt doorheen.
| Syntaxis | Betekenis |
|---|---|
| gantt | Opent het diagram. |
| title Tekst | Titel van het diagram. |
| dateFormat DD-MM-YYYY | Hoe de data die jij schrijft GELEZEN worden. Dit is de juiste regel voor het Nederlands. |
| dateFormat YYYY-MM-DD | ISO-formaat, de standaardinstelling. |
| axisFormat %d-%m | Hoe data op de as WORDEN GETOOND. Een andere instelling dan dateFormat. |
| excludes weekends | Sla zaterdag en zondag over bij het berekenen van looptijden. |
| excludes 27-04-2026 | Sluit een specifieke datum uit. Zo haal je feestdagen eruit. |
| section Naam | Groepeert taken in een benoemde baan. |
| Taak :id, 01-01-2026, 10d | Taak met een expliciete start en looptijd. |
| Taak :id, after andere, 10d | Taak die start zodra `andere` klaar is. |
| Taak :done, id, ... | Afgerond — grijs getekend. |
| Taak :active, id, ... | Loopt — met nadruk getekend. |
| Taak :crit, id, ... | Kritiek — in de accentkleur getekend. |
| Naam :milestone, id, datum, 0d | Een punt in de tijd, geen interval. |
| 10d / 3w / 2h | Looptijd in dagen, weken, uren. De eenheid is verplicht. |
De zes valkuilen van gantt — en maar één is een fout
Dit is wat gantt van de andere vijf typen onderscheidt. Nagemaakt op Mermaid 11.12.2: precies één van de zes hieronder stopt het tekenen. De andere vijf leveren een volstrekt geloofwaardige en verkeerde planning op, wat veel gevaarlijker is, want niemand controleert een diagram dat gewoon getekend is nog eens na.
Wat je ziet
Parse error die eindigt op: Expecting 'taskData', got 'NL'
Waarom
Een taakregel zonder dubbele punt. De dubbele punt scheidt de getoonde naam van de taakgegevens, en zonder valt er niets te ontleden. Het is de enige valkuil uit deze lijst die Mermaid ronduit weigert.
Oplossing
Zet een dubbele punt tussen de naam en de id.
gantt
dateFormat DD-MM-YYYY
section Werk
Ontwerp a1, 07-01-2026, 5dgantt
dateFormat DD-MM-YYYY
section Werk
Ontwerp :a1, 07-01-2026, 5dWat je ziet
Het diagram tekent, maar de data vallen twee maanden eerder
Waarom
Dit is de duurste fout van deze lijst bij Nederlands schrijven, en het koppelteken maakt hem verraderlijker dan elders. We schrijven 01-03-2026 en bedoelen 1 maart, maar het standaard-`dateFormat` is `YYYY-MM-DD` en bij een datum met scheidingstekens leest Mermaid hem op zijn Amerikaans, met de maand voorop. Gemeten: `01-03-2026` onder `dateFormat YYYY-MM-DD` zet de taak op 3 januari — de eerste datum op de as wordt 03-01-2026. Dat het koppelteken óók het ISO-scheidingsteken is, helpt dus niets. Geen waarschuwing; het diagram ziet er prima uit en staat twee maanden verkeerd.
Oplossing
Declareer `dateFormat DD-MM-YYYY` en schrijf de data zoals je ze altijd schrijft. Getoetst: met dat formaat valt `01-03-2026` precies op 1 maart.
gantt
dateFormat YYYY-MM-DD
axisFormat %d-%m-%Y
section S
Ontwerp :a1, 01-03-2026, 10dgantt
dateFormat DD-MM-YYYY
axisFormat %d-%m-%Y
section S
Ontwerp :a1, 01-03-2026, 10dWat je ziet
Het diagram tekent, maar de as beslaat opeens vele maanden
Waarom
Een `after` die naar een niet-bestaande taak-id wijst — meestal een tikfout of een hernoemde taak. Mermaid waarschuwt niet: het zet de taak op een willekeurig punt, wat de as oprekt om erbij te komen. Twee taken van tien dagen kunnen zo op een as van acht maanden belanden.
Oplossing
Controleer of elke `after <id>` exact overeenkomt met een gedeclareerde id. Een plotselinge schaalsprong van de as is het signaal.
gantt
dateFormat DD-MM-YYYY
section S
Ontwerp :a1, 07-01-2026, 10d
Bouw :a2, after ontwerp, 10dgantt
dateFormat DD-MM-YYYY
section S
Ontwerp :a1, 07-01-2026, 10d
Bouw :a2, after a1, 10dWat je ziet
De taaknaam is afgekapt bij de eerste dubbele punt
Waarom
Er staat een dubbele punt in de taaknaam. De eerste dubbele punt is het scheidingsteken, dus alles erna wordt als taakgegevens gelezen: `Fase 1: ontwerp` tekent als een taak die simpelweg `Fase 1` heet, en het woord ontwerp verdwijnt. Sectienamen hebben er geen last van — getoetst.
Oplossing
Geen dubbele punten in taaknamen. Gebruik een gedachtestreepje of verplaats het detail naar de sectienaam.
gantt
dateFormat DD-MM-YYYY
section S
Fase 1: ontwerp :a1, 07-01-2026, 10dgantt
dateFormat DD-MM-YYYY
section S
Fase 1 — ontwerp :a1, 07-01-2026, 10dWat je ziet
De balk krimpt tot niets
Waarom
Looptijd zonder eenheid. `5` is geen vijf dagen: de eenheid is verplicht en zonder krijgt de taak geen zinnige lengte. Het diagram tekent alsnog, met een taak die de indruk wekt geen tijd te kosten.
Oplossing
Schrijf altijd de eenheid: `5d`, `3w`, `2h`.
gantt
dateFormat DD-MM-YYYY
section S
Ontwerp :a1, 07-01-2026, 5gantt
dateFormat DD-MM-YYYY
section S
Ontwerp :a1, 07-01-2026, 5dWat je ziet
De looptijden kloppen, maar de einddata stroken niet met de werkelijkheid
Waarom
`excludes weekends` ontbreekt. Standaard is een taak van 10 dagen tien kalenderdagen inclusief weekenden, dus alles wat langer duurt dan een werkweek eindigt op het diagram eerder dan in de praktijk. In Nederland komen daar de vrije dagen rond eind april en begin mei bij, en over een kwartaal wordt het verschil lastig te verdedigen in een overleg.
Oplossing
Zet `excludes weekends` bovenin, gevolgd door de feestdagen — tenzij er werkelijk zeven dagen per week wordt doorgewerkt.
gantt
dateFormat DD-MM-YYYY
section S
Migratie :a1, 20-04-2026, 10dgantt
dateFormat DD-MM-YYYY
excludes weekends, 27-04-2026, 05-05-2026
section S
Migratie :a1, 20-04-2026, 10dAantekeningen over het tekenen
Gemeten op Mermaid 11.12.2, de versie die deze site gebruikt. Gantt gedraagt zich anders dan alle andere typen.
Het enige type met een vaste tekenbreedte
Alle andere diagrammen op deze site groeien in de richting waarin hun inhoud groeit. Een gantt-diagram heeft altijd een viewBox van 1264 pixels breed, of het nu drie taken heeft of veertig; alleen de hoogte verandert, gemeten tussen ongeveer 172 en 1060 pixels. De as wordt samengeperst of uitgerekt om in die vaste breedte te passen, en daarom zien een tweejarenplan en een tweewekenplan er even dicht uit. Komen de balken onleesbaar dun uit, dan is het datumbereik het probleem en niet het aantal taken.
Het koppelteken helpt niet — het ontleden blijft Amerikaans
Ik herhaal het hier, want dit is de duurste val bij Nederlands schrijven en het koppelteken maakt hem extra gemeen: het is immers óók het ISO-scheidingsteken, dus je verwacht dat Mermaid het herkent. Gemeten: onder `dateFormat YYYY-MM-DD` levert `01-03-2026` geen fout en geen waarschuwing op, het gaat gewoon op 3 januari staan. Hetzelfde gebeurt met de schuine streep en met de punt. Een gedeclareerde `dateFormat DD-MM-YYYY` lost het volledig op. Dat is de eerste regel die je aan elk Nederlands gantt-diagram toevoegt.
De PNG-export klopt tot op de pixel
Gantt tekent zijn labels als gewone SVG-tekst en niet als ingebedde HTML, dus — anders dan het stroomdiagram en de klassen-, toestands- en ER-diagrammen — laat het zich rechtstreeks rasteren. De geëxporteerde PNG komt exact overeen met het scherm, zonder hertekening en zonder verschuiving in de tekstzetting.
Dit type leed het meest onder het PNG-exportdefect
Doordat Mermaid `width="100%"` uitschrijft en geen hoogte opgeeft, berekende de browser het exportformaat ten opzichte van het standaardkader van 300×150, en de brede, lage verhouding van gantt maakte dat het slechtst denkbare geval: een diagram van 1280×148 exporteerde als PNG van 600×58. Nu leest de export de viewBox en komt hetzelfde diagram uit op 2560×296. Handig om te weten als je oude PNG's van gantt-diagrammen hebt: die zijn niet te vergroten.
De grammatica is overal soepel behalve bij de dubbele punt
Ontbrekende secties, onbekende statussleutelwoorden, data in het verkeerde formaat en looptijden zonder eenheid — het tekent allemaal. Het enige dat geweigerd wordt is een taakregel zonder dubbele punt. Die scheefheid is het nuttigste dat je over het schrijven van gantt-diagrammen kunt weten: dat het diagram getekend is, zegt vrijwel niets over de vraag of het klopt.
Wanneer een ander diagram beter past
Zijn de data geschat, dan presenteert een gantt-diagram ze met een precisie die ze niet verdiend hebben, en daar wordt je later op aangesproken. Een stroomdiagram dat de volgorde zonder data toont is eerlijker en hoeft niet bijgewerkt te worden zodra de planning schuift.
Verandert het plan wekelijks, dan is een tekstueel gantt onder versiebeheer echt goed — uit de diff zie je wat er verschoven is — maar een diagram dat niemand bijwerkt is slechter dan geen diagram. Bepaal nuchter welke van de twee je aan het maken bent.
En voor alles wat met werklastverdeling, capaciteit of toewijzing aan personen te maken heeft, is dit het verkeerde gereedschap. Mermaid tekent balken op een kalender; het weet niet wie het werk doet of dat die persoon al bezet is.
Andere diagramtypen
Geschreven door Dominik Malsch · Laatst bijgewerkt: