Mermaid: Create Beautiful Diagrams with Markdown

5 min read
mermaid diagrams documentation visualization

Introduction to Mermaid

Mermaid is a JavaScript-based diagramming and charting tool that uses Markdown-inspired text definitions to create and modify diagrams dynamically. It enables you to create diagrams and visualizations using a simple, intuitive syntax without needing special diagramming software.

Installation & Setup

For Hugo sites, you typically need to:

  1. Include the Mermaid library in your layout
  2. Enable the mermaid: true parameter in your post’s front matter
  3. Use \``mermaid` code blocks in your markdown

Diagram Types & Examples

1. Flowcharts

Flowcharts are great for visualizing processes and decision flows:

flowchart TD
    A[Start] --> B{Is it working?}
    B -->|Yes| C[Deploy to Production]
    B -->|No| D[Debug the Code]
    D --> B
    C --> E[End]
flowchart TD
    A[Start] --> B{Is it working?}
    B -->|Yes| C[Deploy to Production]
    B -->|No| D[Debug the Code]
    D --> B
    C --> E[End]

2. Sequence Diagrams

Sequence diagrams show interactions between objects or actors over time:

sequenceDiagram
    participant User
    participant Browser
    participant Server
    User->>Browser: Click Button
    Browser->>Server: Send Request
    Server->>Server: Process Data
    Server-->>Browser: Return Response
    Browser-->>User: Display Result
sequenceDiagram
    participant User
    participant Browser
    participant Server
    User->>Browser: Click Button
    Browser->>Server: Send Request
    Server->>Server: Process Data
    Server-->>Browser: Return Response
    Browser-->>User: Display Result

3. Class Diagrams

Class diagrams are essential for object-oriented design:

classDiagram
    class Animal {
        -String name
        -int age
        +eat()
        +sleep()
    }
    class Dog {
        +bark()
    }
    class Cat {
        +meow()
    }
    Animal <|-- Dog
    Animal <|-- Cat
classDiagram
    class Animal {
        -String name
        -int age
        +eat()
        +sleep()
    }
    class Dog {
        +bark()
    }
    class Cat {
        +meow()
    }
    Animal <|-- Dog
    Animal <|-- Cat

4. State Diagrams

State diagrams show state transitions in systems:

stateDiagram-v2
    [*] --> Idle
    Idle --> Running: Start
    Running --> Paused: Pause
    Paused --> Running: Resume
    Running --> Idle: Stop
    Idle --> [*]
stateDiagram-v2
    [*] --> Idle
    Idle --> Running: Start
    Running --> Paused: Pause
    Paused --> Running: Resume
    Running --> Idle: Stop
    Idle --> [*]

5. Gantt Charts

Gantt charts are useful for project timeline visualization:

gantt
    title Project Timeline
    dateFormat YYYY-MM-DD
    section Frontend
    Design :des1, 2025-01-01, 30d
    Development :dev1, after des1, 45d
    Testing :test1, after dev1, 15d
    section Backend
    API Design :des2, 2025-01-01, 20d
    Development :dev2, after des2, 50d
    Testing :test2, after dev2, 20d
gantt
    title Project Timeline
    dateFormat YYYY-MM-DD
    section Frontend
    Design :des1, 2025-01-01, 30d
    Development :dev1, after des1, 45d
    Testing :test1, after dev1, 15d
    section Backend
    API Design :des2, 2025-01-01, 20d
    Development :dev2, after des2, 50d
    Testing :test2, after dev2, 20d

6. Entity Relationship Diagram (ERD)

ERDs are used for database design:

erDiagram
    CUSTOMER ||--o{ ORDER : places
    ORDER ||--|{ LINE-ITEM : contains
    PRODUCT ||--o{ LINE-ITEM : "ordered in"
    CUSTOMER {
        int id PK
        string name
        string email
    }
    ORDER {
        int id PK
        int customer_id FK
        date order_date
    }
    PRODUCT {
        int id PK
        string name
        decimal price
    }
erDiagram
    CUSTOMER ||--o{ ORDER : places
    ORDER ||--|{ LINE-ITEM : contains
    PRODUCT ||--o{ LINE-ITEM : "ordered in"
    CUSTOMER {
        int id PK
        string name
        string email
    }
    ORDER {
        int id PK
        int customer_id FK
        date order_date
    }
    PRODUCT {
        int id PK
        string name
        decimal price
    }

7. Pie Charts

Pie charts for showing proportions:

pie title Programming Language Distribution
    "JavaScript" : 35
    "Python" : 25
    "C++" : 20
    "Java" : 15
    "Other" : 5
pie title Programming Language Distribution
    "JavaScript" : 35
    "Python" : 25
    "C++" : 20
    "Java" : 15
    "Other" : 5

8. Git Graph

Git graphs for visualizing branch workflows:

gitGraph
    commit id: "Initial commit"
    commit id: "Add features"
    branch develop
    checkout develop
    commit id: "Feature A"
    commit id: "Feature B"
    checkout main
    merge develop
    commit id: "Version 1.0"
gitGraph
    commit id: "Initial commit"
    commit id: "Add features"
    branch develop
    checkout develop
    commit id: "Feature A"
    commit id: "Feature B"
    checkout main
    merge develop
    commit id: "Version 1.0"

9. Mind Maps

Mind maps for brainstorming and planning:

mindmap
  root((Development))
    Frontend
      HTML
      CSS
      JavaScript
    Backend
      Node
      Python
      Databases
    DevOps
      Docker
      Automation
      Cloud
mindmap
  root((Development))
    Frontend
      HTML
      CSS
      JavaScript
    Backend
      Node
      Python
      Databases
    DevOps
      Docker
      Automation
      Cloud

Benefits of Using Mermaid

  • Easy Syntax: Write diagrams using simple text-based syntax
  • Version Control: Diagrams can be tracked in Git like regular code
  • No External Tools: No need for expensive diagramming software
  • Responsive: Diagrams scale to different screen sizes
  • Fast: Instant rendering with JavaScript
  • Accessibility: Text-based definitions are accessible and searchable

Best Practices

  1. Keep it Simple: Don’t overcomplicate diagrams with too many elements
  2. Use Descriptive Labels: Make labels clear and concise
  3. Consistent Styling: Use consistent naming conventions
  4. Test Syntax: Validate your mermaid syntax as you write
  5. Organize Complex Diagrams: Break large diagrams into smaller ones

Resources

For complete documentation and advanced features, visit the official Mermaid documentation:

Mermaid Official Documentation

You’ll find:

  • Comprehensive syntax guides for each diagram type
  • Interactive examples you can edit and run
  • Advanced configuration options
  • Integration guides for various platforms
  • Community contributions and extensions

Conclusion

Mermaid is a powerful tool that brings diagramming to the developer’s workflow. Whether you’re documenting system architecture, visualizing algorithms, or planning projects, Mermaid provides an elegant solution with its text-based approach.

Start exploring Mermaid today and enhance your documentation with beautiful, maintainable diagrams!