Try / Mermaid in Y minutes

Mermaid lets you create diagrams and visualizations using text and code.

It is a JavaScript based diagramming and charting tool that renders Markdown-inspired text definitions to create and modify diagrams dynamically.

Let's see some of Mermaid's features in action! You can edit a diagram definition at any time and click the Run button to see the updated diagram.

Flowchart · Sequence diagram · Gantt chart · Class diagram · Git graph · Entity relationship diagram · User journey diagram · Quadrant chart · XY chart · Further reading

✨ This is an open source guide. Feel free to improve it!

Flowchart

A flowchart consists of nodes (geometric shapes) and edges (arrows or lines). It supports different arrow types, multidirectional arrows, and subgraphs.

flowchart TD

A[Start]-->B[Step 1];
A-->C[Step 2];
B-->D[Done];
C-->D;

A more complex example with subgraphs:

flowchart TB

c1-->a2
subgraph one
    a1-->a2
end
subgraph two
    b1-->b2
end
subgraph three
    c1-->c2
end

Sequence diagram

A sequence diagram is an interaction diagram that shows how processes interact with each other and in what order.

sequenceDiagram

Alice->>John: Hello John, how are you?
John-->>Alice: Great!
Alice-)John: See you later!

A more complex example with a loop and a note:

sequenceDiagram

participant Alice
participant Bob

Alice->>John: Hello John, how are you?
loop Healthcheck
    John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts <br/>prevail!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!

Gantt chart

A Gantt chart illustrates a project schedule and the time it will take to complete the project.

gantt

title A Gantt Diagram
dateFormat YYYY-MM-DD

section Section
    A task          :a1, 2014-01-01, 30d
    Another task    :after a1, 20d
section Another
    Task in Another :2014-01-12, 12d
    another task    :24d

Class diagram

A class diagram is the fundamental building block of object-oriented design. It is used to model the structure of an application. Class diagrams can also be used to model data.

classDiagram

class Student {
    idCard: IdCard
}

class IdCard{
    id: int
    name: string
}

class Bike{
    id: int
    name: string
}

Student "1" --o "1" IdCard : carries
Student "1" --o "1" Bike : rides

A more complex example with inheritance and methods:

classDiagram
note "From Duck till Zebra"

Animal <|-- Duck
note for Duck "can fly\ncan swim\ncan dive\ncan help in debugging"
Animal <|-- Fish
Animal <|-- Zebra

Animal: +int age
Animal: +String gender
Animal: +isMammal()
Animal: +mate()

class Duck{
    +String beakColor
    +swim()
    +quack()
}

class Fish{
    -int sizeInFeet
    -canEat()
}

class Zebra{
    +bool is_wild
    +run()
}

Git graph

A git graph is a pictorial representation of git commits and git actions (commands) on different branches.

gitGraph

commit
commit
branch develop
checkout develop
commit
commit
checkout main
merge develop
commit
commit

Entity relationship diagram

An entity-relationship (ER) diagram describes interrelated things of interest in a particular domain of knowledge. A basic ER model consists of entity types (which classify the things of interest) and specifies relationships that can exist between entities (instances of those entity types).

erDiagram

CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
CUSTOMER }|..|{ DELIVERY-ADDRESS : uses

A more complex example with attributes:

erDiagram

CUSTOMER {
    string name
    string custNumber
    string sector
}

ORDER {
    int orderNumber
    string deliveryAddress
}

LINE-ITEM {
    string productCode
    int quantity
    float pricePerUnit
}

CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains

User journey diagram

A user journey describes the steps a user takes to complete a specific task within a system, application, or website.

journey
title My working day

section Go to work
    Make tea: 5: Me
    Go upstairs: 3: Me
    Do work: 1: Me, Cat

section Go home
    Go downstairs: 5: Me
    Sit down: 5: Me

Quadrant chart

A quadrant chart is a visual representation of data that is divided into four quadrants. Quadrant charts are often used to identify patterns and trends in data, and to prioritize actions based on the position of data points within the chart.

quadrantChart
title Reach and engagement of campaigns

x-axis Low Reach --> High Reach
y-axis Low Engagement --> High Engagement

quadrant-1 We should expand
quadrant-2 Need to promote
quadrant-3 Re-evaluate
quadrant-4 May be improved

Campaign A: [0.3, 0.6]
Campaign B: [0.45, 0.23]
Campaign C: [0.57, 0.69]
Campaign D: [0.78, 0.34]
Campaign E: [0.40, 0.34]
Campaign F: [0.35, 0.78]

XY chart

An XY chart includes several types of charts that use both the x-axis and the y-axis to display data. Currently, it includes two basic chart types: the bar chart and the line chart. These charts are designed to visually display and analyze data involving two numerical variables.

xychart-beta
title "Sales Revenue"

x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
y-axis "Revenue (in $)" 4000 --> 11000

bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]

Further reading

Mermaid also supports other diagram types such as state diagrams, pie charts, mind maps, and timelines. See the documentation for details.

See the Getting started guide to start using Mermaid on your website or in your product.

Mermaid team + 1 others · original · CC-BY-SA-4.0 · 2024-02-23