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| A
Ein Flowchart mit drei Knoten, von oben nach unten.

A, 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:

SyntaxFormÜbliche Bedeutung
A[Text]RechteckEin Schritt oder eine Aktion
A(Text)AbgerundetEin Start- oder Endpunkt
A([Text])PilleEin Terminator
A[[Text]]SubroutineEin Aufruf in einen anderen Prozess
A[(Text)]ZylinderEine Datenbank oder ein Speicher
A((Text))KreisEin Knotenpunkt
A{Text}RauteEine Entscheidung
A{{Text}}SechseckEin Vorbereitungsschritt
A[/Text/]ParallelogrammEin- oder Ausgabe
A[/Text\]TrapezEine 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

SyntaxErgebnis
A --> BPfeil
A --- BLinie, ohne Pfeilspitze
A -.-> BGepunkteter Pfeil
A ==> BDicker Pfeil
A -->|label| BPfeil mit Beschriftung
A --> B --> CKette, in einer Zeile geschrieben
A --> B & CEine 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 --> Q
Zwei Services, jeder mit eigenem Speicher.

Farbe 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 bad

Farben 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: response

Klassendiagramm

classDiagram
  class Animal {
    +String name
    +move()
  }
  class Dog {
    +bark()
  }
  Animal <|-- Dog

Zustandsdiagramm

stateDiagram-v2
  [*] --> Idle
  Idle --> Running: start
  Running --> Idle: stop
  Running --> [*]: finish

Entity-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, 5d

Wo 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.

Weitere Guides

  1. Mermaid als PNG oder SVG exportieren

    Vier Wege aus einem Mermaid-Diagramm hinaus — PNG, SVG, .mmd-Quelle und ein Markdown-Block — und wann welcher die richtige Antwort ist.

  2. Mermaid-Sequenzdiagramme

    Teilnehmer, Pfeiltypen, Aktivierungsbalken, Loops und Alt-Blöcke — die ganze Sequenzdiagramm-Syntax mit lauffähigen Beispielen.

Editor öffnen. Kostenlos — ohne Anmeldung.

Eine leere Zeichenfläche, ein Code-Tab und jede Exportoption — kostenlos, in deinem Browser, sofort.