Wie man ein Mermaid-Sequenzdiagramm schreibt

Ein Sequenzdiagramm zeigt, wer mit wem spricht, und in welcher Reihenfolge. In Mermaid dauert es etwa so lange, es zu schreiben, wie es laut zu beschreiben — deshalb ist es der Diagrammtyp, der am längsten in einer Codebasis überlebt. Alles unten ist copy-paste-bereit für den Editor.

Das Minimum

Deklariere den Diagrammtyp, dann schreibe eine Zeile pro Nachricht. Teilnehmer werden bei der ersten Erwähnung angelegt, in der Reihenfolge, in der sie auftauchen.

sequenceDiagram
  User->>API: POST /orders
  API->>DB: INSERT order
  DB-->>API: order id
  API-->>User: 201 Created

Deklariere Teilnehmer explizit mit participant User, wenn du eine bestimmte Links-nach-rechts-Reihenfolge willst statt der Reihenfolge der ersten Erwähnung.

Pfeiltypen

SyntaxBedeutung
A->>B: textAnfrage — durchgezogene Linie, gefüllte Pfeilspitze
A-->>B: textAntwort — gestrichelte Linie, gefüllte Pfeilspitze
A->B: textDurchgezogene Linie, offene Pfeilspitze
A-)B: textAsynchrone Nachricht — offene Pfeilspitze, keine Antwort erwartet
A-xB: textNachricht, die fehlschlägt oder verworfen wird

Die Konvention, an die man sich halten sollte: durchgezogen für den Aufruf, gestrichelt für die Rückgabe. Ein Leser erkennt dann eine Anfrage von einer Antwort, ohne eine einzige Beschriftung zu lesen.

Teilnehmer und Aliase

sequenceDiagram
  participant U as Browser
  participant A as API gateway
  participant S as Order service
  U->>A: GET /orders
  A->>S: list(userId)
  S-->>A: orders
  A-->>U: 200 OK

Benutze actor U as Browser statt participant, um eine Strichfigur zu zeichnen — lohnt sich für den Menschen am linken Rand eines Authentifizierungsflusses.

Aktivierungsbalken

Aktivierungsbalken zeigen, wie lange ein Teilnehmer beschäftigt ist. Markiere sie entweder explizit mit activate/deactivate, oder hänge + und - an die Pfeile — das ist kürzer und schwerer aus dem Gleichgewicht zu bringen.

sequenceDiagram
  User->>+API: POST /pay
  API->>+Bank: charge
  Bank-->>-API: authorised
  API-->>-User: receipt

Loops, Bedingungen und parallele Abläufe

sequenceDiagram
  User->>API: POST /import
  loop every row
    API->>DB: upsert row
  end
  alt all rows valid
    API-->>User: 200 OK
  else some failed
    API-->>User: 422 with errors
  end
  par notify
    API->>Email: send summary
  and audit
    API->>Log: write entry
  end
  • loop <label> … end — Wiederholung.
  • alt <label> … else <label> … end — sich gegenseitig ausschließende Zweige.
  • opt <label> … end — ein Zweig, der einfach nicht eintreten kann.
  • par <label> … and <label> … end — Dinge, die gleichzeitig passieren.
  • critical / break — ein Abschnitt, der nicht unterbrochen werden darf, und ein früher Ausstieg.

Notizen

sequenceDiagram
  User->>API: POST /login
  Note right of API: Rate limited<br>5 per minute
  API-->>User: token
  Note over User,API: Token is valid for 30 days

Note over A,B erstreckt sich über zwei Teilnehmer und ist der richtige Ort für eine Einschränkung, die zur Interaktion gehört statt zu einer der beiden Seiten.

Ein vollständiges Beispiel

sequenceDiagram
  actor U as User
  participant A as App
  participant P as Provider
  U->>+A: Click "Sign in"
  A-->>-U: Redirect to provider
  U->>+P: Authorise
  P-->>-U: Redirect back with code
  U->>+A: GET /callback?code=…
  A->>+P: Exchange code for token
  P-->>-A: access token
  Note right of A: Session cookie set here
  A-->>-U: Signed in
OAuth-Login, von Anfang bis Ende.

Dieses Diagramm bearbeiten

Füge es in den Code-Tab ein und ändere eine Zeile — die Vorschau zeichnet sich beim Tippen neu.

Häufig gefragt

Wie nummeriere ich die Nachrichten?

Setze autonumber in die Zeile direkt nach sequenceDiagram. Jede Nachricht bekommt dann eine fortlaufende Nummer, was es viel einfacher macht, über ein Diagramm in Review-Kommentaren zu sprechen.

Kann ein Teilnehmer sich selbst eine Nachricht schicken?

Ja — schreibe denselben Namen auf beiden Seiten: API->>API: retry. Mermaid zeichnet die Schleife zurück in dieselbe Lifeline.

Wie zeige ich, dass ein Teilnehmer zerstört wird?

Benutze destroy <name> vor der Nachricht, die ihn beendet, oder create participant <name>, damit er mitten im Diagramm erscheint statt oben.

Kann ich ein Sequenzdiagramm auf der visuellen Zeichenfläche bearbeiten?

Die visuelle Zeichenfläche bearbeitet Flowcharts. Sequenzdiagramme werden im Code-Tab geschrieben, wo sie live in der Vorschau rendern — was ohnehin meist schneller geht, da ein Sequenzdiagramm im Grunde eine Liste von Zeilen ist.

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-Syntax-Spickzettel

    Knotenformen, Pfeile, Subgraphen und Styling auf einer Seite — plus ein funktionierendes Beispiel für jeden Diagrammtyp, den Mermaid rendert.

Editor öffnen. Kostenlos — ohne Anmeldung.

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