InícioGuias › Gráfico de Gantt em Mermaid: sintaxe, armadilhas e ida e volta para um editor de verdade

Gráfico de Gantt em Mermaid: sintaxe, armadilhas e ida e volta para um editor de verdade

Blocos gantt do Mermaid são renderizados nativamente no GitHub, no GitLab, no Notion e no Obsidian, o que os torna a forma mais fácil de colocar um cronograma onde o trabalho já acontece — dentro do repositório, revisável num pull request. Também são penosos de editar: mude uma data e você recalcula na mão toda a corrente de after abaixo dela. Aqui estão a sintaxe campo a campo, um exemplo completo para colar num README, as armadilhas que renderizam perfeitamente estando erradas, e o passo que falta — editar visualmente e recuperar o texto.

Redação gantts.appAtualizado em 19 de julho de 202610 min de leitura

Nesta página
  1. A sintaxe de uma só passada
  2. Um exemplo completo para colar num README
  3. Referência da linha de tarefa
  4. Quatro coisas que vão te pegar
  5. Os limites de um formato de diagrama
  6. Editar visualmente e colar o texto de volta
O mesmo cronograma, como texto e como barras:
gantt section Fase Tarefa :a, 5d Tarefa :after a, 8dtextográfico

A sintaxe de uma só passada

Um bloco gantt abre com a palavra gantt e algumas linhas de cabeçalho; depois vêm os títulos de section com as linhas de tarefa embaixo. A indentação é convenção, não gramática — o Mermaid não se importa, mas quem lê o diff se importa muito.

Uma linha de tarefa é um nome, dois-pontos e então campos separados por vírgula:

Nome da tarefa :tag, id, início, duração

Linhas de cabeçalho que vale conhecer: dateFormat (como as datas do seu arquivo estão escritas), excludes weekends, title e axisFormat (como o eixo é rotulado, em códigos no estilo strftime). Os campos são classificados pelo formato, e não estritamente pela posição — é por isso que :done, aud, 2026-03-02, 5d e :aud, done, 2026-03-02, 5d funcionam igualmente bem.

Tarefa A:id a1:2026-03-02:5dTarefaidInícioDuração
Cada campo de uma linha de tarefa do Mermaid, e quais deles são opcionais.

Um exemplo completo para colar num README

Um bloco válido e inteiro, para trabalho de verdade: a migração de um gateway de cobrança para o Pix Automático. Ele usa seções, datas absolutas, correntes de after, todas as tags, um marco e fins de semana excluídos. Cole num bloco cercado mermaid em qualquer arquivo Markdown do GitHub e ele renderiza.

gantt
    title Migração para o Pix Automático
    dateFormat YYYY-MM-DD
    axisFormat %d/%m
    excludes weekends

    section Descoberta
    Auditoria dos fluxos atuais :done, aud, 2026-03-02, 5d
    Especificação OpenAPI       :done, esp, after aud, 4d
    Revisão da especificação    :active, rev, after esp, 2d

    section Construção
    Serviço de autenticação     :crit, auth, after rev, 10d
    Endpoints de cobrança       :cob, after auth, 12d
    Regerar o SDK do cliente    :sdk, after cob, 3d

    section Virada
    Homologação com o PSP       :hom, after sdk, 5d
    Beta público                :milestone, beta, 2026-05-04, 0d
    Descontinuar a v1           :desc, after beta, 2w

Lendo linha a linha:

  • dateFormat YYYY-MM-DD diz ao Mermaid como ler as datas que você digitou. É formato de entrada, não de saída — mexer nele não muda o eixo.
  • axisFormat %d/%m é o lado da saída, e é o que faz o eixo aparecer como "02/03" em vez de uma data ISO — a convenção de data que o leitor brasileiro espera. Use %V para número de semana em qualquer coisa maior que um trimestre.
  • excludes weekends faz todas as barras pularem sábado e domingo, no diagrama inteiro — não existe exceção por tarefa. A mesma diretiva aceita datas específicas, como excludes 2026-04-03 para a Sexta-feira Santa, e nomes de dias da semana. É o único lugar onde feriado brasileiro cabe neste formato.
  • Auditoria dos fluxos atuais :done, aud, 2026-03-02, 5d — tag, id, um início absoluto (uma segunda-feira) e cinco dias. As durações incluem o dia de início, então esta termina na sexta, 06/03.
  • after aud quer dizer "comece quando aud terminar" — com fins de semana excluídos, isso é segunda, 09/03, e não sábado, dia 07.
  • :crit, auth, ... pinta a barra com a cor de caminho crítico. Repare no verbo: pinta. Veja os limites mais abaixo.
  • Endpoints de cobrança :cob, after auth, 12d não tem tag nenhuma; o primeiro campo é só um id. Sem tag significa trabalho futuro.
  • Beta público :milestone, beta, 2026-05-04, 0d é um marcador de comprimento zero numa data fixa. Marcos ganham id como qualquer outra linha, então o after beta da última linha é perfeitamente legal.
  • 2w são duas semanas. O Mermaid também aceita h e m, raramente úteis aqui.

As linhas em branco entre as seções são decorativas — o Mermaid as ignora, e o nosso importador também. Mantenha assim mesmo: um bloco de quarenta tarefas sem elas é ilegível num diff.

Referência da linha de tarefa

Cada campo e modificador, o que ele faz e como aparece na prática.

Campo ou modificadorExemploO que faz
idaudUma palavra simples que nomeia a tarefa para que after possa se referir a ela. Sem espaços nem pontuação. Opcional, a menos que algo dependa da tarefa.
afterafter audComeça quando a tarefa nomeada termina. Só término-início, sem defasagem. Aceita vários ids — after a b espera pelo que terminar mais tarde.
done:done, aud, …Desenha a barra como concluída. Sem percentual: 100% e "praticamente pronto" ficam idênticos.
active:active, rev, …Desenha a barra como em andamento. De novo, sem número por trás.
crit:crit, auth, …Colore a barra como crítica. É uma afirmação que você digita, não algo que o Mermaid deduza — nada confere isso contra a cadeia de precedências.
milestone:milestone, beta, …Desenha um losango no lugar da barra. Use junto com 0d.
Unidades de duração5d · 2w · 8hDias, semanas, horas (também m). Incluem o dia de início: 5d a partir de segunda termina na sexta.
Data de término2026-03-02, 2026-03-06Uma segunda data no lugar da duração, para um término fixado por fora.
dateFormatdateFormat YYYY-MM-DDComo as datas do arquivo são interpretadas. Linha de cabeçalho, uma vez por diagrama.
axisFormataxisFormat %d/%mComo o eixo é rotulado, em códigos strftime. Puramente cosmético.
excludesexcludes weekendsDias não trabalhados. Aceita também datas específicas (excludes 2026-04-03) e nomes de dias da semana. Vale para o diagrama inteiro.

Quatro coisas que vão te pegar

1. As durações incluem o dia de início. 5d a partir de segunda, dia 5, vai até sexta, dia 9, e não até o dia 10. Um erro de um dia aqui desloca todas as tarefas do arquivo e mesmo assim ele renderiza perfeitamente — que é o pior modo de falha possível, porque nada parece quebrado.

2. after junto com excludes weekends é onde moram os bugs de verdade. Se uma antecessora termina numa sexta, a sucessora começa na segunda — não no sábado. Qualquer ferramenta que resolva o after somando um dia de calendário vai colocar tarefas em fins de semana num arquivo que os proíbe explicitamente, e todas as datas seguintes derivam a partir dali. A nossa fazia isso, por pouco tempo. A correção passa a aritmética pelo calendário útil, para que a importação concorde com o que o Mermaid desenha, e o teste que protege isso afirma a propriedade em vez de datas específicas: nenhum início ou término derivado pode cair num dia excluído. Datas que você digitou à mão ficam onde você as pôs, fim de semana ou não — mover em silêncio a data explícita de um autor é o tipo errado de ajuda.

3. Não existe escape. Os dois-pontos iniciam a lista de campos e a vírgula separa campos, então uma tarefa chamada Fase 2: projeto, revisão vira uma tarefa "Fase 2" com campos sem sentido. Mantenha dois-pontos, vírgulas e ponto e vírgula fora dos nomes; na exportação nós trocamos esses caracteres por espaço em vez de emitir uma linha que não vai ser interpretada.

4. Uma duração ilegível vira zero em silêncio. Escreva 3dd e você recebe uma barra de comprimento zero em vez de um erro. Depois de uma edição em massa, procure tarefas invisíveis.

Fim → InícioABB espera AInício → InícioABB espera AFim → FimABB espera AInício → FimABB espera A
"after" é término-início com defasagem zero — o único tipo de ligação que o formato tem.

Os limites de um formato de diagrama

O gantt do Mermaid é uma linguagem de desenho, não um motor de cronograma, e a diferença aparece no instante em que você quer que o gráfico responda a uma pergunta em vez de ilustrar uma resposta já conhecida.

Nada disso faz dele um formato ruim. Faz dele um formato de publicação: ótimo para mostrar um cronograma, inútil para derivar um. É exatamente por isso que a ida e volta importa.

Editar visualmente e colar o texto de volta

Muitas ferramentas renderizam Mermaid. O que faltava era o caminho inverso — arrastar barras e recuperar a sintaxe.

  1. Cole o diagrama em ✨ Colar no Gantt, ou use 📂 Abrir para carregar um arquivo .mmd ou um .md com bloco cercado. A detecção é pelo conteúdo, não pela extensão.
  2. Confira o aviso de importação: ele diz quantas tarefas entraram e o que foi adivinhado no caminho.
  3. Arraste, ligue e reprograme como em qualquer outro gráfico. O excludes weekends liga o Calendário de trabalho, de modo que as datas geradas concordam com o arquivo de origem.
  4. Ative Reprogramar se quiser que as precedências acomodem tudo sozinhas ao mover uma barra.
  5. Ligue Caminho crítico para ver a cadeia que o Mermaid nunca calculou.
  6. Vá em ⬇ Exportar ▸ 🧜 Mermaid gantt (texto) e escolha Copiar para a área de transferência ou Baixar .mmd.
  7. Cole de volta no seu README e faça o commit do diff.

A ida e volta perde informação de um jeito conhecido e sem surpresas. O avanço mapeia 100% para done e de 1% a 99% para active na saída; active volta como 50% na entrada — um palpite sobre o qual você é avisado, em vez de descobrir num relatório de status. As ligações que não conseguem ser escritas como after — qualquer uma com defasagem, e qualquer SS, FF ou SF — viram datas absolutas, que continuam corretas mesmo deixando de ser fáceis de manter.

Uma assimetria deliberada, e não um defeito: crit é escrito na exportação e nunca lido na importação. Na saída ele é derivado — o editor calculou o caminho crítico a partir do grafo de precedências, então a tag é verdadeira no momento em que é escrita. Na entrada, ele é uma palavra que alguém digitou num arquivo que pode estar semanas desatualizado, e confiar nela permitiria que um diagrama velho pintasse de vermelho uma cadeia que não é crítica. Então ele é escrito e depois ignorado: o caminho crítico que você vê depois de uma importação foi recalculado, não afirmado.

Vale lembrar como esse recálculo funciona aqui: o caminho crítico é "como posicionado". Uma precedência só consegue empurrar uma tarefa para a frente, nunca puxá-la para trás — então uma barra que você arrastou para uma data mais tardia fica onde você a colocou, e a criticidade é calculada em cima do desenho real e não de um plano ideal que ninguém aprovou.

Há também um efeito colateral simpático para quem usa um LLM para rascunhar cronogramas: peça a sintaxe gantt do Mermaid, cole a resposta e você tem um gráfico editável de verdade, com caminho crítico calculado — sem chave de API e sem servidor no meio.

undefined

Perguntas frequentes

Como faço um gráfico de Gantt no Mermaid?

Inicie o bloco com gantt, acrescente dateFormat YYYY-MM-DD e então títulos de section com linhas de tarefa embaixo, no formato "Nome :tag, id, início, duração" — por exemplo "Auditoria :done, aud, 2026-03-02, 5d".

O 5d do Mermaid inclui o dia de início?

Sim. Uma tarefa de 5d começando na segunda, dia 2, termina na sexta, dia 6. Essa contagem inclusiva é a fonte mais comum de erros de um dia, e produz um diagrama que renderiza perfeitamente com todas as datas erradas em um dia por tarefa.

Como funcionam as precedências no gantt do Mermaid?

Use "after algumId" no campo de início. É sempre término-início sem defasagem — início-início, término-término e defasagens não podem ser expressos. Dá para nomear várias antecessoras, como em "after a b", e a tarefa espera pela que terminar mais tarde.

O after pula os fins de semana?

Pula quando o diagrama declara "excludes weekends". A sucessora de uma tarefa que termina na sexta começa na segunda, e a duração é contada em dias úteis. Ferramentas que resolvem o after somando um dia de calendário acabam colocando tarefas no sábado num arquivo que proíbe sábado.

O Mermaid calcula o caminho crítico?

Não. A tag crit é uma cor que você aplica na mão; nada no Mermaid percorre o grafo de precedências nem calcula folga. É por isso que o gantts.app exporta crit e o ignora na importação — a criticidade é recalculada a partir das precedências em vez de ser aceita de um arquivo possivelmente desatualizado.

Dá para converter um gantt do Mermaid em gráfico editável?

Dá. Abra o arquivo .mmd ou o Markdown no gantts.app, edite visualmente e use ⬇ Exportar ▸ 🧜 Mermaid gantt (texto) para copiar a sintaxe atualizada de volta.

Modelos que usam isso

Este artigo também está disponível em inglês.

Crie seu gráfico de Gantt — grátis

No navegador, sem cadastro. Seus dados ficam no seu aparelho.

Abrir o editor