Guia rápido de sintaxe mermaid

O mermaid tem uma referência extensa e um pequeno subconjunto que cobre quase tudo o que as pessoas desenham. Esta página é esse subconjunto: formas, setas, agrupamento, cores, e um exemplo de copiar-e-colar por tipo de diagrama. Cada trecho abaixo renderiza tal como está — cole-o no editor para o ver.

O diagrama mais curto que funciona

Um fluxograma precisa de uma linha de declaração e uma seta. TD significa de cima para baixo; use LR para da esquerda para a direita, que se adapta melhor a processos largos.

flowchart TD
  A[Start] --> B{Ready?}
  B -->|Yes| C[Ship it]
  B -->|No| A
Um fluxograma de três nós, de cima para baixo.

A, B e C são identificadores de nó — nomes internos, nunca desenhados. O texto entre colchetes é o rótulo, e o estilo dos colchetes é o que escolhe a forma.

Formas de nó

A forma é escolhida pelo par de delimitadores à volta do rótulo. Estas são as que vale a pena memorizar:

SintaxeFormaSignificado habitual
A[Text]RetânguloUm passo ou ação
A(Text)ArredondadoUm ponto de início ou fim
A([Text])PílulaUm terminador
A[[Text]]SubrotinaUma chamada para outro processo
A[(Text)]CilindroUma base de dados ou um repositório
A((Text))CírculoUma junção
A{Text}LosangoUma decisão
A{{Text}}HexágonoUm passo de preparação
A[/Text/]ParalelogramoEntrada ou saída
A[/Text\]TrapézioUma operação manual

Coloque o rótulo entre aspas quando contiver colchetes, dois pontos ou aspas: A["Load (raw) data"]. Sem aspas, o interpretador lê a sua pontuação como sintaxe.

Setas

SintaxeResultado
A --> BSeta
A --- BLinha, sem ponta de seta
A -.-> BSeta pontilhada
A ==> BSeta grossa
A -->|label| BSeta com um texto
A --> B --> CCadeia, escrita numa só linha
A --> B & CUma origem, dois destinos

O comprimento da seta também é significativo: --> é um nível, ---> empurra o destino mais um nível para baixo. É o controlo de esquema mais simples que o mermaid oferece.

Agrupar com subgráficos

Um subgraph desenha uma caixa com um rótulo à volta de nós. Os subgráficos podem aninhar-se, e as setas podem atravessar as suas fronteiras livremente.

flowchart LR
  subgraph api["API"]
    H[Handler] --> S[(Postgres)]
  end
  subgraph worker["Worker"]
    Q[Queue] --> W[Job]
  end
  H --> Q
Dois serviços, cada um com o seu próprio repositório.

Cor e estilo

style pinta um nó. classDef mais class pintam um conjunto deles, o que é o que se quer a partir de três ou quatro nós.

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

As cores fazem parte da fonte do diagrama, por isso sobrevivem à exportação e viajam com o ficheiro. Nada aqui depende de uma definição de tema na ferramenta que o renderiza.

Um exemplo por tipo de diagrama

Diagrama de sequência

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

Diagrama de classes

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

Diagrama de estados

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

Diagrama de entidade-relacionamento

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

Gráfico de Gantt

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

Onde o mermaid renderiza por conta própria

  • GitHub — um bloco ```mermaid delimitado renderiza em issues, pull requests, comentários e ficheiros README.
  • GitLab — o mesmo bloco delimitado, em issues, merge requests e na wiki.
  • Notion — um bloco de código com a linguagem definida como Mermaid renderiza junto da fonte.
  • Obsidian — um bloco mermaid delimitado renderiza no modo de pré-visualização.
  • Sites de documentação — Docusaurus, MkDocs Material e VitePress suportam todos blocos mermaid.

Essa é a verdadeira razão para manter os diagramas como mermaid em vez de como imagens: o diagrama vive no mesmo ficheiro de texto que a coisa que descreve, e uma revisão de código consegue ver o que mudou nele.

Experimente qualquer trecho desta página

Cole-o no separador de código e ele renderiza instantaneamente — ou construa o mesmo diagrama na tela e leia a sintaxe depois.

Perguntas frequentes

Como adiciono uma quebra de linha dentro do rótulo de um nó?

Use <br> dentro de um rótulo entre aspas: A["First line<br>Second line"]. O mermaid renderiza o rótulo como HTML, por isso a tag funciona mesmo que o resto da sintaxe não seja HTML.

Porque é que o meu rótulo estraga o diagrama?

Quase sempre é um colchete, parêntese, dois pontos ou aspas sem aspas à volta dentro do rótulo. Envolva o rótulo inteiro em aspas duplas e o interpretador deixa de tratar a sua pontuação como sintaxe.

Posso controlar o esquema?

Só indiretamente. Escolha a direção (TD, LR, BT, RL), use setas mais longas (--->) para afastar mais os nós, e agrupe nós relacionados em subgráficos. O mermaid calcula o resto — não há coordenadas.

Que versão do mermaid é que este editor usa?

Mermaid 11, a versão principal atual, por isso tudo o que está documentado para a sintaxe v10 e v11 renderiza aqui.

Mais guias

  1. Exportar mermaid para PNG ou SVG

    Quatro formas de sair de um diagrama mermaid — PNG, SVG, fonte .mmd e um bloco Markdown — e quando cada uma é a resposta certa.

  2. Diagramas de sequência mermaid

    Participantes, tipos de seta, barras de ativação, loops e blocos alt — toda a sintaxe do diagrama de sequência com exemplos executáveis.

Abra o editor. Grátis — sem cadastro.

Uma tela em branco, um separador de código e todas as opções de exportação — grátis, no seu navegador, agora mesmo.