Last updated 2023-05-08 09:21:54

Mermaid Tutorial (flowchart)

Table of contents

flowchart TD
    start(START) -->
    input[/Get l,b/] -->
    process[A = l*b] -->
    decision{is A < 12}
    decision --> |Yes| input
    decision --> |No| output 
    output[/print A/] -->

In this short tutorial, we will look at a few useful nodes and syntax needed to prepare a flowchart using the Mermaid diagram library.

The diagram above is produced using the syntax below:

01: flowchart TD 02: start(START) --> 03: input[/Get l,b/] --> 04: process[A = l*b] --> 05: 06: decision --> |Yes| input 07: decision --> |No| output 08: output[/print A/] --> 09: stop(STOP)

Diagram type

The Mermaid Diagram library supports several diagram types.

Here are some of the diagram types supported by Mermaid:

  • Flowchart: We will be looking at this in the tutorial
  • Sequence Diagram
  • Class Diagram
  • State Diagram
  • Gantt Diagram
  • Pie Charts
  • User Journey Diagram
  • Entity Relationship Diagram

To create a flowchart diagram you have to specify this as the first instruction set (As shown on line 01 in the example above).

This is immediately followed by the direction of the diagram. In the case of our example, this is set to TD (top to bottom). This will cause the diagram to flow horizontally.

flowchart TD

You may also use RL (right to left) to cause the diagram to flow vertically.


Nodes are the individual components within our diagram. These components are then connected by directional arrows to mark the flow from one to the other.

Start-End Node

flowchart TD

Typically an oval shape is used to mark the start or end of a flow chat. You can create one by typing out its name and then enclosing a description within brackets i.e.: start(START).

Input-Output Node

flowchart TD
    input[/Get l,b/]

A rhomboid is used to denote an input or output within a flow this takes the same syntax as the start node but with square brackets with forward slashes within them instead of normal brackets. i.e: input[/Get l,b/]

Process Node

flowchart TD
    process[A = l*b]

A process node is used to document the internal processing within a system flow. This is denoted by a label and then a description housed within square brackets. i.e: process[A = l*b].


A forward-pointing arrow --> should be placed between two nodes to create a connection between them.

For example :

01: flowchart TD 02: A(First Node) --> C 03: B(Second Node) 04: C(Third Node) --> A
flowchart TD
    A(First Node) --> C
    B(Second Node)
    C(Third Node) --> A

Notice how in the above example we connect A directly to C and then C back to A leaving out B by using the arrow to direct which nodes we will like to connect.


Most flow chats have an element of decision-making within them. Mermaid provides us with the syntax to achieve this.

flowchart TD
    input[/Get A/] -->
    decision{is A < 12}
    decision --> |Yes| positiveOutput
    decision --> |No| negativeOutput
    positiveOutput[/print yes/] --> stop
    negativeOutput[/print no/] --> stop
01: flowchart TD 02: input[/Get A/] --> 03: decision{is A > 12} 04: decision --> |Yes| positiveOutput 05: decision --> |No| negativeOutput 06: positiveOutput[/print yes/] --> stop 07: negativeOutput[/print no/] --> stop 08: stop(STOP)

In the above example, we introduce a new syntax decision{is A < 12} right after our input.

This is the syntax for branching based on a decision. The different options are mapped to other nodes using a directional arrow. In the above example, if the input A is greater than 12 the diagram flows to the positiveOutput node and to the negativeOutput node if it's less than 12.

Here is another article for you 😊 "Mermaid Tutorial (setup)"