Mermaid-Syntax-Spickzettel
Mermaid hat eine große Referenz und eine kleine Teilmenge, die fast alles abdeckt, was Leute zeichnen. Diese Seite ist genau diese Teilmenge: Formen, Pfeile, Gruppierung, Farben und ein Copy-paste-Beispiel pro Diagrammtyp. Jeder Schnipsel unten rendert so, wie er ist — füge ihn in den Editor ein, um es zu sehen.
Das kürzeste Diagramm, das funktioniert
Ein Flowchart braucht eine Deklarationszeile und einen Pfeil. TD steht für top-down (von oben nach unten); für links-nach-rechts nimm LR, was sich für breite Prozesse besser eignet.
flowchart TD
A[Start] --> B{Ready?}
B -->|Yes| C[Ship it]
B -->|No| AA, B und C sind Knoten-IDs — interne Namen, die nie angezeigt werden. Der Text in den Klammern ist die Beschriftung, und der Klammer-Stil bestimmt die Form.
Knotenformen
Die Form wird durch das Klammernpaar um die Beschriftung bestimmt. Diese hier lohnt es sich zu merken:
| Syntax | Form | Übliche Bedeutung |
|---|---|---|
A[Text] | Rechteck | Ein Schritt oder eine Aktion |
A(Text) | Abgerundet | Ein Start- oder Endpunkt |
A([Text]) | Pille | Ein Terminator |
A[[Text]] | Subroutine | Ein Aufruf in einen anderen Prozess |
A[(Text)] | Zylinder | Eine Datenbank oder ein Speicher |
A((Text)) | Kreis | Ein Knotenpunkt |
A{Text} | Raute | Eine Entscheidung |
A{{Text}} | Sechseck | Ein Vorbereitungsschritt |
A[/Text/] | Parallelogramm | Ein- oder Ausgabe |
A[/Text\] | Trapez | Eine manuelle Operation |
Setze die Beschriftung in Anführungszeichen, wenn sie Klammern, Doppelpunkte oder Anführungszeichen enthält: A["Load (raw) data"]. Ohne Anführungszeichen interpretiert der Parser deine Satzzeichen als Syntax.
Pfeile
| Syntax | Ergebnis |
|---|---|
A --> B | Pfeil |
A --- B | Linie, ohne Pfeilspitze |
A -.-> B | Gepunkteter Pfeil |
A ==> B | Dicker Pfeil |
A -->|label| B | Pfeil mit Beschriftung |
A --> B --> C | Kette, in einer Zeile geschrieben |
A --> B & C | Eine Quelle, zwei Ziele |
Auch die Pfeillänge hat Bedeutung: --> ist ein Rang, ---> schiebt das Ziel einen Rang weiter nach unten. Das ist die einfachste Layout-Kontrolle, die Mermaid bietet.
Gruppierung mit Subgraphen
Ein subgraph zeichnet eine beschriftete Box um Knoten. Subgraphen können verschachtelt werden, und Pfeile dürfen ihre Grenzen frei überqueren.
flowchart LR
subgraph api["API"]
H[Handler] --> S[(Postgres)]
end
subgraph worker["Worker"]
Q[Queue] --> W[Job]
end
H --> QFarbe und Styling
style färbt einen einzelnen Knoten. classDef plus class färbt eine ganze Gruppe davon — das ist ab drei oder vier Knoten die bessere Wahl.
flowchart TD
A[OK] --> B[Failed]
style A fill:#16a34a,stroke:#333,color:#fff
classDef bad fill:#dc2626,stroke:#333,color:#fff
class B badFarben sind Teil des Diagramm-Quelltexts, überstehen also den Export und wandern mit der Datei mit. Nichts hier hängt von einer Theme-Einstellung im Tool ab, das es rendert.
Ein Beispiel pro Diagrammtyp
Sequenzdiagramm
sequenceDiagram
participant User
participant API
participant DB
User->>API: request
API->>DB: query
DB-->>API: rows
API-->>User: responseKlassendiagramm
classDiagram
class Animal {
+String name
+move()
}
class Dog {
+bark()
}
Animal <|-- DogZustandsdiagramm
stateDiagram-v2
[*] --> Idle
Idle --> Running: start
Running --> Idle: stop
Running --> [*]: finishEntity-Relationship-Diagramm
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE_ITEM : contains
CUSTOMER {
string name
string email
}Gantt-Diagramm
gantt
title Project
dateFormat YYYY-MM-DD
section Phase 1
Task 1 :a1, 2026-01-01, 5d
Task 2 :after a1, 5dWo Mermaid von sich aus rendert
- GitHub — ein umschlossener ```mermaid-Block rendert in Issues, Pull Requests, Kommentaren und README-Dateien.
- GitLab — derselbe umschlossene Block, in Issues, Merge Requests und im Wiki.
- Notion — ein Code-Block mit der Sprache Mermaid rendert neben der Quelle.
- Obsidian — ein umschlossener Mermaid-Block rendert im Vorschaumodus.
- Docs-Seiten — Docusaurus, MkDocs Material und VitePress unterstützen alle Mermaid-Blöcke.
Das ist der eigentliche Grund, Diagramme als Mermaid statt als Bild zu pflegen: Das Diagramm lebt in derselben Textdatei wie das, was es beschreibt, und ein Code-Review sieht, was sich darin geändert hat.
Probier jeden Schnipsel auf dieser Seite aus
Füge ihn in den Code-Tab ein — er rendert sofort. Oder baue dasselbe Diagramm auf der Zeichenfläche und lies die Syntax anschließend ab.
Häufig gefragt
Wie füge ich einen Zeilenumbruch in eine Knotenbeschriftung ein?
Benutze <br> innerhalb einer Beschriftung in Anführungszeichen: A["First line<br>Second line"]. Mermaid rendert die Beschriftung als HTML, daher funktioniert das Tag, obwohl der Rest der Syntax kein HTML ist.
Warum zerstört meine Beschriftung das Diagramm?
Fast immer eine nicht in Anführungszeichen gesetzte Klammer, runde Klammer, Doppelpunkt oder Anführungszeichen innerhalb der Beschriftung. Setze die ganze Beschriftung in doppelte Anführungszeichen, dann behandelt der Parser deine Satzzeichen nicht mehr als Syntax.
Kann ich das Layout steuern?
Nur indirekt. Wähle die Richtung (TD, LR, BT, RL), benutze längere Pfeile (--->), um Knoten weiter auseinanderzuschieben, und gruppiere zusammengehörige Knoten in Subgraphen. Den Rest berechnet Mermaid — es gibt keine Koordinaten.
Welche Mermaid-Version verwendet dieser Editor?
Mermaid 11, die aktuelle Hauptversion, sodass alles, was für die v10- und v11-Syntax dokumentiert ist, hier rendert.