Схемы из текста

Синтаксис Mermaid: примеры диаграмм и шпаргалка

Mermaid превращает несколько строк текста в диаграмму: блок-схему, последовательность вызовов, схему базы данных или план работ. В шпаргалке — синтаксис блок-схемы со всеми формами, стрелками и группами и короткие рабочие примеры остальных видов диаграмм, которые можно скопировать и поправить под себя.

13 мин чтения

Ревью кода
На этой странице

Что такое Mermaid и где он работает#

Mermaid — это язык описания диаграмм обычным текстом и библиотека, которая рисует по этому тексту картинку. Вы не двигаете прямоугольники мышью, а пишете A --> B, и на экране появляются два блока со стрелкой. Подход называют «диаграммы как код»: схема хранится рядом с исходниками, правится в любом редакторе и проходит ревью вместе с кодом.

Главная причина популярности Mermaid — поддержка в местах, где программисты и так пишут тексты. GitHub и GitLab показывают диаграмму прямо в Markdown: достаточно поместить текст в блок кода с пометкой mermaid. Многие вики, редакторы заметок и генераторы документации тоже умеют его рисовать — сами или с расширением. Для черновиков есть онлайн-редактор Mermaid Live: слева текст, справа картинка, которая обновляется при каждом нажатии клавиши.

  • Схема живёт в репозитории. Изменили архитектуру — поправили три строки в том же запросе на слияние, и история изменений схемы видна в истории файла.
  • Не нужна отдельная программа. Текст открывается где угодно, а картинку нарисует сервис, в котором его читают.
  • Удобно сравнивать версии. Разница между двумя версиями схемы — это разница между двумя текстами, её видно построчно.
  • Схему легко сгенерировать. Скрипт, база знаний или нейросеть выдают текст Mermaid, а не картинку, которую потом не исправить.

У подхода есть и обратная сторона: раскладку блоков выбирает библиотека, а не вы. Для схемы из десяти блоков это плюс, для схемы из сотни — частая причина запутанных стрелок. Поэтому Mermaid хорош для небольших схем рядом с кодом, а большие обзорные схемы удобнее собирать на доске. Как понять, нужна ли вообще блок-схема и чем она отличается от других схем процессов, — в статье что такое блок-схема.

Блок-схема: синтаксис flowchart#

Блок-схема — самый ходовой вид диаграмм Mermaid: процессы, алгоритмы, пути пользователя, наброски архитектуры. Разберём её синтаксис по частям: заголовок, блоки, формы, стрелки, группы, комментарии и оформление. Под каждым примером — что сделает с ним NodePanel, если вставить текст на доску: эти подписи проверяются настоящим разборщиком приложения.

Блоки: имя и надпись#

У каждого блока есть имя (id) и надпись. В записи check{Всё заполнено?} имя — check, надпись — текст в скобках. Имя нужно, чтобы ссылаться на блок в других строках: надпись пишут один раз, при первом упоминании, а дальше — только имя. Если надписи нет, Mermaid покажет само имя.

  • Имя — одно слово без пробелов: start, check, pay. Латиница надёжнее всего: такой текст одинаково поймут все сервисы.
  • Не называйте блок словом ``end`` в нижнем регистре — это служебное слово, которым закрывают группы. End, finish или done подойдут.
  • Надпись со скобками, точкой с запятой или стрелкой берите в кавычки, иначе разбор споткнётся о лишний знак.
  • Перенос строки в надписи — <br>: длинный текст читается лучше в две строки.

Формы блоков#

Форму задают скобки вокруг надписи. В блок-схемах у форм есть устоявшийся смысл: капсула — начало и конец, прямоугольник — действие, ромб — вопрос с ветками «да» и «нет», цилиндр — хранилище данных, двойная рамка — подпроцесс, который расписан отдельно.

Mermaid
flowchart LR
  a[Прямоугольник] --> b(Скруглённый)
  b --> c([Капсула])
  c --> d{Ромб}
  d --> e((Круг))
  e --> f[[Подпрограмма]]
  f --> g[(База данных)]
NodePanel вставит: 7 блоков · 6 связей · слева направо — и предупредит: «Строка 7: Формы «цилиндр» на доске нет — блок стал прямоугольником».
Формы блоков в Mermaid
ЗаписьФормаОбычный смысл
id[Текст]ПрямоугольникДействие, шаг процесса
id(Текст)Скруглённый прямоугольникМягкий шаг, событие
id([Текст])КапсулаНачало и конец
id{Текст}РомбВопрос, развилка
id((Текст))КругТочка соединения, событие
id[[Текст]]Двойная рамкаПодпроцесс
id[(Текст)]ЦилиндрБаза данных, хранилище
id{{Текст}}ШестиугольникПодготовка, настройка
id[/Текст/]ПараллелограммВвод и вывод данных

На доске NodePanel свои фигуры, поэтому часть форм переносится не один в один: двойная рамка становится карточкой, цилиндр, шестиугольник и параллелограмм — прямоугольником, а окно вставки предупреждает об этом по номеру строки. Полная таблица соответствий — в справочнике по вставке Mermaid.

Стрелки и подписи#

Связь пишется между двумя блоками. Основной набор: --> — стрелка, --- — линия без стрелки, -.-> — пунктирная стрелка, ==> — толстая, <--> — стрелки с обеих сторон. Подпись ставят двумя способами: -->|успех| или -- успех -->, результат одинаковый.

Mermaid
flowchart LR
  order[Заказ] --> pay[Оплата]
  pay -->|успех| receipt[Чек]
  pay -.->|ошибка| retry[Повтор]
  receipt ==> ship[Доставка]
  ship --- review[Отзыв]
  retry -- через минуту --> pay
NodePanel вставит: 6 блоков · 6 связей · слева направо.

Несколько блоков, которые ведут в один, записывают через &. Это сокращение: Mermaid развернёт его в отдельную связь от каждого блока.

Mermaid
flowchart LR
  design[Дизайн] & backend[Бэкенд] & docs[Тексты] --> release[Релиз]
NodePanel вставит: 4 блока · 3 связи · слева направо.

Группы: subgraph#

Группа объединяет блоки в рамку с названием — по участникам процесса, по системам или по этапам. Её открывают строкой subgraph имя [Название] и закрывают словом end. Связи можно вести между блоками разных групп, а также от группы и к группе целиком.

Mermaid
flowchart TB
  subgraph web [Сайт]
    page[Страница] --> form[Форма заказа]
  end
  subgraph server [Сервер]
    api[API] --> db[База]
  end
  form -->|HTTPS| api
NodePanel вставит: 4 блока · 3 связи · 2 группы · сверху вниз.
Группы показывают, где проходит граница систем, а подпись на связи — как они общаются.

Группы можно вкладывать друг в друга: кластер внутри облака, отдел внутри компании. На доске NodePanel вложенных групп нет — внутренняя группа станет отдельной рамкой поверх внешней, и окно вставки об этом предупредит.

Комментарии и оформление#

Строка, которая начинается с %%, — комментарий: Mermaid её не рисует. Цвета задают классами: classDef описывает класс, а :::имя после блока его применяет. Есть и точечные команды: style для одного блока и linkStyle для связи.

Mermaid
flowchart LR
  %% Классы задают цвета в Mermaid
  classDef risk fill:#fde68a,stroke:#b45309
  plan[План] --> risk1[Сжатые сроки]:::risk
  risk1 --> fix[Резерв времени]
NodePanel вставит: 3 блока · 2 связи · слева направо — и предупредит: «Строка 3: Оформление и click пропускаются: цвета на доске свои, ссылки из схемы не переносятся».

NodePanel оформление из текста пропускает: на доске своя палитра, и блоки перекрашиваются в панели свойств уже после вставки. Команда click, которая в Mermaid вешает на блок ссылку, тоже не переносится — это защита от чужих ссылок в скопированном тексте.

Другие виды диаграмм Mermaid#

Кроме блок-схем Mermaid умеет ещё два десятка видов диаграмм. Ниже — семь самых используемых, по короткому рабочему примеру на каждую. Их показывают GitHub, GitLab и другие сервисы с поддержкой Mermaid.

Последовательность: sequenceDiagram#

Показывает, кто кому и в каком порядке отправляет сообщения: пользователь, сайт, сервер, внешний сервис. Время идёт сверху вниз. ->> — запрос, -->> — ответ пунктиром, participant … as … задаёт короткое имя и подпись.

Mermaid
sequenceDiagram
  participant U as Пользователь
  participant S as Сайт
  participant A as API
  U->>S: Нажимает «Оплатить»
  S->>A: POST /payments
  A-->>S: 201 Created
  S-->>U: Страница «Спасибо»
Это не блок-схема — NodePanel такую диаграмму не вставит; GitHub и другие сервисы с поддержкой Mermaid её покажут.

Классы: classDiagram#

Классы с полями и методами и связи между ними: наследование, состав, ассоциация. Плюс перед именем — публичное поле, минус — закрытое. На стрелке можно указать кратность.

Mermaid
classDiagram
  class Order {
    +id: string
    +total: number
    +pay()
  }
  class Customer {
    +name: string
  }
  Customer "1" --> "*" Order : оформляет
Это не блок-схема — NodePanel такую диаграмму не вставит; GitHub и другие сервисы с поддержкой Mermaid её покажут.

Состояния: stateDiagram-v2#

Через какие состояния проходит объект — заказ, документ, заявка — и какие события его переводят. [*] — начальная и конечная точка, текст после двоеточия — событие перехода.

Mermaid
stateDiagram-v2
  [*] --> Черновик
  Черновик --> НаПроверке: отправить
  НаПроверке --> Опубликовано: одобрить
  НаПроверке --> Черновик: вернуть
  Опубликовано --> [*]
Это не блок-схема — NodePanel такую диаграмму не вставит; GitHub и другие сервисы с поддержкой Mermaid её покажут.

Схема данных: erDiagram#

Сущности базы данных и связи между ними с кратностью: один ко многим, один к одному. Символы на концах линии читаются как «ноль или один», «ровно один», «много». Имена сущностей обычно пишут латиницей, как таблицы в базе.

Mermaid
erDiagram
  CUSTOMER ||--o{ ORDER : places
  ORDER ||--|{ ORDER_ITEM : contains
  PRODUCT ||--o{ ORDER_ITEM : "is in"
Это не блок-схема — NodePanel такую диаграмму не вставит; GitHub и другие сервисы с поддержкой Mermaid её покажут.

План работ: gantt#

Задачи на шкале времени, разбитые на разделы. У задачи — дата начала и длительность или зависимость after от другой задачи. Подходит для плана релиза в README, но не заменяет трекер задач.

Mermaid
gantt
  title План релиза
  dateFormat YYYY-MM-DD
  section Разработка
  Бэкенд      :a1, 2026-11-02, 10d
  Интерфейс   :a2, after a1, 7d
  section Выпуск
  Тесты       :after a2, 4d
Это не блок-схема — NodePanel такую диаграмму не вставит; GitHub и другие сервисы с поддержкой Mermaid её покажут.

Круговая диаграмма: pie#

Доли целого: название и число для каждого сектора, проценты Mermaid посчитает сам. Цифры в примере условные — подставьте свои.

Mermaid
pie title Откуда приходят заявки
  "Поиск" : 46
  "Рекомендации" : 31
  "Соцсети" : 23
Это не блок-схема — NodePanel такую диаграмму не вставит; GitHub и другие сервисы с поддержкой Mermaid её покажут.

Карта мыслей: mindmap#

Иерархия идей от центральной темы. Уровень задаётся отступом, форма корня — теми же скобками, что у блоков. Для быстрого конспекта хватает, но двигать ветки и дописывать идеи вместе удобнее на доске — об этом статья как сделать интеллект-карту.

Mermaid
mindmap
  root((Запуск продукта))
    Аудитория
      Малый бизнес
      Фрилансеры
    Каналы
      Поиск
      Партнёры
    Риски
Это не блок-схема — NodePanel такую диаграмму не вставит; GitHub и другие сервисы с поддержкой Mermaid её покажут.

Шпаргалка: блок-схема на одном экране#

Синтаксис блок-схемы Mermaid
ЧтоКак писатьПример
Заголовокflowchart или graph и направлениеflowchart LR
Блокимя и надпись в скобках формыpay[Оплата]
Развилкаромб и подписанные стрелкиok{Оплачено?} -->|Да| ship
Стрелка-->, ---, -.->, ==>, <-->a -.-> b
Подпись связи-->|текст| или -- текст -->a -->|ошибка| b
Цепочкастрелки подряд в одной строкеa --> b --> c
Много в одинблоки через &a & b --> c
Группаsubgraph имя [Название] … endsubgraph api [Сервер]
Комментарийстрока с %%%% черновик
ОформлениеclassDef, class, style, linkStyleclassDef risk fill:#fde68a

Mermaid удобен

  • Схема живёт в README или документации рядом с кодом
  • До десяти — двадцати блоков, раскладка не принципиальна
  • Схему генерирует скрипт или нейросеть
  • Важна история изменений в репозитории

Лучше доска

  • Большая обзорная схема, где важно, что где лежит
  • Схему обсуждают и правят несколько человек сразу
  • Нужны стикеры, комментарии и пометки на полях
  • Схему показывают на встрече или созвоне

Mermaid и доска: текст туда и обратно#

Текст и доска хорошо дополняют друг друга. Набросать схему текстом быстро, особенно если её подсказала нейросеть или она уже лежит в README. Обсуждать, двигать и дополнять удобнее на доске. В NodePanel блок-схему Mermaid можно вставить на доску — она станет обычными фигурами, связями и группами, разложенными по направлению из текста, — а готовую доску скопировать обратно текстом flowchart.

  1. Скопируйте текст блок-схемы

    Из README, вики, ответа нейросети или из примеров выше — первая строка должна начинаться с flowchart или graph.

  2. Вставьте на доску

    Нажмите CtrlV на холсте или выберите в меню доски «Вставить Mermaid…». Окно покажет, сколько будет блоков и связей, и замечания по строкам.

  3. Доработайте схему

    После вставки это обычная доска: перекрасьте блоки, добавьте стикеры с вопросами, пригласите коллег. Одна отмена убирает всю вставку.

  4. Верните схему в текст

    Меню доски → «Скопировать как Mermaid» — и текст готов для README или документации.

Подробный урок с упражнениями — в руководстве «Схема из текста: Mermaid с нуля»: там по шагам разобрано окно вставки, рецепты и частые ошибки. Попробовать без регистрации можно в песочнице на главной: вставка Mermaid работает и там. Для процесса с нуля подойдёт шаблон блок-схемы процесса, а что ещё умеет доска для процессов — на странице блок-схема онлайн.

Частые ошибки в синтаксисе#

  • Стрелка из одного дефиса. -> Mermaid не поймёт — нужно два дефиса: -->.
  • Пробел в имени блока. Мой блок --> Конец разберётся не так, как задумано. Имя — одним словом, текст — в надпись: my[Мой блок].
  • Незакрытая скобка или кавычка. Одна потерянная скобка ломает строку целиком. Проверяйте пары, особенно в длинных надписях.
  • Скобки внутри надписи без кавычек. Надпись со скобками, двоеточием или точкой с запятой берите в кавычки.
  • Забытый ``end`` у группы. Тогда в группу попадает всё, что написано ниже, и схема съезжает.
  • Слово ``end`` как имя блока. Mermaid примет его за конец группы. Назовите блок finish или done.
  • Нет первой строки. Без flowchart или graph текст не считается блок-схемой вовсе.
  • Всё в одной схеме. Пятьдесят блоков с перекрёстными стрелками Mermaid нарисует, но читать это никто не станет. Разбейте схему на несколько — по одному вопросу на каждую.

Тот же принцип «одна схема — один вопрос» работает и для архитектурных схем: о том, как разделить систему на уровни детализации, — в статье как нарисовать архитектуру приложения.

Чек-лист перед публикацией схемы#

  • Первая строка — flowchart или graph с направлением, которое подходит схеме.
  • У каждого блока понятное короткое имя, надпись написана один раз.
  • Формы несут смысл: капсула — начало и конец, ромб — вопрос, прямоугольник — действие.
  • У каждого ромба подписаны все ветки, ни одна не обрывается в пустоту.
  • Пунктир и толстые линии означают то, что написано в легенде.
  • Группы закрыты словом end, ни один блок не называется end.
  • Надписи со скобками и знаками препинания — в кавычках.
  • Схема проверена в просмотре: в редакторе Mermaid, на GitHub или в окне вставки NodePanel.

Вопросы и ответы#

Где можно посмотреть диаграмму Mermaid, не устанавливая программ?

В онлайн-редакторе Mermaid Live, в Markdown на GitHub и GitLab и во многих вики. Блок-схему можно также вставить на доску NodePanel — она станет обычными блоками и связями.

Чем flowchart отличается от graph в Mermaid?

Это два названия одной и той же блок-схемы. Слово graph появилось раньше, flowchart — более новое и поддерживает больше возможностей, поэтому в новых схемах лучше писать flowchart.

Можно ли вставить в NodePanel диаграмму последовательности или ER-диаграмму?

Нет, окно вставки NodePanel понимает только блок-схемы flowchart и graph и сообщает об этом для остальных видов. Сюжет диаграммы последовательности можно переписать блок-схемой — шагами и стрелками.

Сохранятся ли цвета из classDef при вставке на доску?

Нет, оформление из текста NodePanel пропускает и один раз предупреждает об этом. Цвета блоков меняются в панели свойств после вставки.

Как сделать перенос строки в надписи блока Mermaid?

Поставьте в надпись тег br в угловых скобках и возьмите надпись в кавычки. Mermaid и окно вставки NodePanel покажут текст в две строки.

Процессы

Что такое блок-схема и как её правильно составить

Что такое блок-схема, что означают её фигуры по ГОСТ 19.701-90, какие бывают виды схем и как составить схему без ошибок: правила, примеры и чек-лист.10 мин чтения
Процессы

Как сделать блок-схему процесса: пошаговая инструкция с примером

Пошагово: границы процесса, участники, шаги, развилки, дорожки и проверка на реальном случае. Пример — возврат товара, типичные ошибки и чек-лист.10 мин чтения
Архитектура

Как нарисовать архитектуру приложения: схема, которую поймут все

Уровни детализации по модели C4, что показать на схеме, пошаговый план, обозначения и пример веб-сервиса. Как держать схему актуальной, ошибки и чек-лист.11 мин чтения