A node is the most basic building block in a flow chart.

Node definitions consist of a name followed by an optional set of properties. For example, Start is the name of below node and it has an shape property which is set to oval.

Start [shape: oval]

Node names are required to be unique.

Nodes support shape, icon, color, and label properties. More on properties below.


A group is a container that can encapsulate nodes and groups.

Group definitions consist of a name followed by { }. For example, Loop is the name of the below group and it contains Issue1, Issue2, and Issue3 nodes.

Loop {
  Issue1, Issue2, Issue3

Nodes (or groups) inside a group can be enumerated either with , or new lines as separators. Below results in the same but uses new lines to separate each node.

Loop {

Group names are required to be unique.

Groups can be nested. In the below example, the Outer Loop group contains the Inner Loop group.

Outer Loop {
	Inner Loop {

Groups support icon, color, and label properties.


Properties are key-value pairs enclosed in [ ] brackets that can be appended to definitions of nodes and groups. Properties are optional.

Here are the properties that are allowed:

PropertyDescriptionValueDefault Value
shapeShape of nodeShape names (e.g. diamond or oval).rectangle
iconIconIcon names (e.g. aws-ec2). See Icons page for full list.
colorStroke and fill colorColor name (e.g. blue) or hex code (e.g. #000000)
labelText labelAny string.Name of node

Here is the list of shapes:

  • rectangle (default), cylinder, diamond, document, ellipse, hexagon, oval, parallelogram, star, trapezoid, triangle

Here are the lists of icon names:

The label property is useful if you want the node's (or group's) label and name to be distinct. By default, the label is set as the node name. But because node names are required to be distinct, you will need to use the label property if you have two nodes with the exact same label.

// Names need to be distinct, but labels can overlap
Start_A [label: start]
Start_B [label: start]

It is possible to set multiple properties by separating them using , like shown below:

Start [shape: oval, icon: flag]


Connections represent relationships between nodes and groups. They can be created between nodes, between groups, and between nodes and groups.

Here is an example of a connection between two nodes:

Issue > Bug

Here are the types of connectors:

Connector Syntax Description
> Left-to-right arrow
< Right-to-left arrow
<> Bi-directional arrow
- Line
-- Dotted line
--> Dotted arrow

Branching relationships

It is possible to create it is possible to create one-to-many connections in a single statement. Here is an example:

Issue > Bug, Feature

Chained relationships

It is also possible to "chain" a sequence of relationship statements in a single statement

Issue > Bug > Duplicate?

If a connection statement contains a name that has not been previously defined as a node or a group, a blank node with that name will be created.


Here's a list of all the icons you can use with diagram-as-code.