Ściągawka ze składni mermaid

Mermaid ma obszerną dokumentację i niewielki podzbiór, który pokrywa niemal wszystko, co ludzie rysują. Ta strona to właśnie ten podzbiór: kształty, strzałki, grupowanie, kolory i po jednym przykładzie do skopiowania dla każdego typu diagramu. Każdy fragment poniżej renderuje się bez zmian — wklej go do edytora, aby zobaczyć.

Najkrótszy diagram, który działa

Flowchart potrzebuje jednej linii deklaracji i jednej strzałki. TD oznacza od góry do dołu; użyj LR dla układu od lewej do prawej, który lepiej sprawdza się przy szerokich procesach.

flowchart TD
  A[Start] --> B{Ready?}
  B -->|Yes| C[Ship it]
  B -->|No| A
Trzywęzłowy flowchart, od góry do dołu.

A, B i C to identyfikatory węzłów — nazwy wewnętrzne, nigdy nierysowane. Tekst w nawiasach to etykieta, a styl nawiasu decyduje o kształcie.

Kształty węzłów

Kształt jest wybierany przez parę ograniczników wokół etykiety. Oto te warte zapamiętania:

SkładniaKształtZwykłe znaczenie
A[Text]ProstokątKrok lub akcja
A(Text)ZaokrąglonyPunkt startu lub końca
A([Text])PigułkaTerminator
A[[Text]]PodprocesWywołanie innego procesu
A[(Text)]CylinderBaza danych lub magazyn
A((Text))KołoPunkt węzłowy
A{Text}RombDecyzja
A{{Text}}SześciokątKrok przygotowawczy
A[/Text/]RównoległobokWejście lub wyjście
A[/Text\]TrapezOperacja ręczna

Ujmij etykietę w cudzysłów, gdy zawiera nawiasy, dwukropki lub cudzysłowy: A["Load (raw) data"]. Bez cudzysłowu parser odczyta twoją interpunkcję jako składnię.

Strzałki

SkładniaWynik
A --> BStrzałka
A --- BLinia bez grotu
A -.-> BStrzałka kropkowana
A ==> BGruba strzałka
A -->|label| BStrzałka z etykietą
A --> B --> CŁańcuch zapisany w jednej linii
A --> B & CJedno źródło, dwa cele

Długość strzałki też ma znaczenie: --> to jeden poziom, ---> przesuwa cel o jeden poziom dalej w dół. To najprostsza kontrola układu, jaką daje mermaid.

Grupowanie za pomocą podgrafów

subgraph rysuje opisany prostokąt wokół węzłów. Podgrafy mogą się zagnieżdżać, a strzałki mogą swobodnie przekraczać ich granice.

flowchart LR
  subgraph api["API"]
    H[Handler] --> S[(Postgres)]
  end
  subgraph worker["Worker"]
    Q[Queue] --> W[Job]
  end
  H --> Q
Dwie usługi, każda z własnym magazynem.

Kolor i stylowanie

style maluje jeden węzeł. classDef razem z class maluje cały ich zestaw, co przydaje się już powyżej trzech, czterech węzłów.

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

Kolory są częścią źródła diagramu, więc przetrwają eksport i wędrują razem z plikiem. Nic tutaj nie zależy od ustawień motywu w narzędziu, które go renderuje.

Po jednym przykładzie na każdy typ diagramu

Diagram sekwencji

sequenceDiagram
  participant User
  participant API
  participant DB
  User->>API: request
  API->>DB: query
  DB-->>API: rows
  API-->>User: response

Diagram klas

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

Diagram stanów

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

Diagram relacji encji

erDiagram
  CUSTOMER ||--o{ ORDER : places
  ORDER ||--|{ LINE_ITEM : contains
  CUSTOMER {
    string name
    string email
  }

Wykres Gantta

gantt
  title Project
  dateFormat YYYY-MM-DD
  section Phase 1
  Task 1 :a1, 2026-01-01, 5d
  Task 2 :after a1, 5d

Gdzie mermaid renderuje się samodzielnie

  • GitHub — otoczony znacznikami blok ```mermaid renderuje się w issues, pull requestach, komentarzach i plikach README.
  • GitLab — ten sam blok w znacznikach, w issues, merge requestach i wiki.
  • Notion — blok kodu z językiem ustawionym na Mermaid renderuje się obok źródła.
  • Obsidian — blok mermaid w znacznikach renderuje się w trybie podglądu.
  • Strony dokumentacji — Docusaurus, MkDocs Material i VitePress obsługują bloki mermaid.

To prawdziwy powód, by trzymać diagramy jako mermaid, a nie jako obrazy: diagram żyje w tym samym pliku tekstowym co opisywana przez niego rzecz, a code review widzi, co się w nim zmieniło.

Wypróbuj dowolny fragment z tej strony

Wklej go do zakładki kodu, a wyrenderuje się od razu — albo zbuduj ten sam diagram na płótnie i odczytaj składnię z powrotem.

Najczęściej zadawane pytania

Jak dodać złamanie linii wewnątrz etykiety węzła?

Użyj <br> wewnątrz etykiety w cudzysłowie: A["First line<br>Second line"]. Mermaid renderuje etykietę jako HTML, więc ten znacznik działa, mimo że reszta składni nie jest HTML-em.

Dlaczego moja etykieta psuje diagram?

Niemal zawsze chodzi o niecytowany nawias, nawias okrągły, dwukropek lub cudzysłów wewnątrz etykiety. Ujmij całą etykietę w cudzysłów, a parser przestanie traktować twoją interpunkcję jako składnię.

Czy mogę kontrolować układ?

Tylko pośrednio. Wybierz kierunek (TD, LR, BT, RL), użyj dłuższych strzałek (--->), by rozsunąć węzły dalej od siebie, i grupuj powiązane węzły w podgrafy. Resztę oblicza mermaid — nie ma tu współrzędnych.

Której wersji mermaid używa ten edytor?

Mermaid 11, obecnej głównej wersji, więc renderuje się tu wszystko udokumentowane dla składni v10 i v11.

Więcej poradników

  1. Eksport mermaid do PNG lub SVG

    Cztery sposoby na wyjście z diagramu mermaid — PNG, SVG, źródło .mmd i blok Markdown — i kiedy który jest właściwą odpowiedzią.

  2. Diagramy sekwencji mermaid

    Uczestnicy, typy strzałek, paski aktywacji, pętle i bloki alt — cała składnia diagramu sekwencji z działającymi przykładami.

Otwórz edytor. Za darmo — bez rejestracji.

Puste płótno, zakładka kodu i każda opcja eksportu — za darmo, w przeglądarce, już teraz.