Archived
Published
4 min read

Trevor I. Lasn

Staff Software Engineer, Engineering Manager

Mermaid.js — Create Charts and Diagrams With Markdown-like Syntax

Mermaid.js is a simple markdown-like script language for generating charts from text via JavaScript

As developers, we often need to explain complex ideas visually. Whether it’s showing how an algorithm works or mapping out a project timeline, diagrams can be a lifesaver. That’s where Mermaid comes in. It’s a tool that lets you create charts and diagrams using a simple, Markdown-like syntax. Best part? It’s free, open-source, and works with just text.

What is Mermaid?

Mermaid allows you to generate charts directly from text using JavaScript. You don’t need to deal with heavy diagramming tools or drag-and-drop interfaces. Just write a few lines of text, and Mermaid turns it into a chart.

I personally love this tool because it keeps my documentation lightweight. No need to juggle different tools just to explain a flow or concept. Plus, since it’s open-source, you can easily integrate it into your own projects.

Examples

Here are some practical examples of what you can create with Mermaid. Note: Click on the charts to open them in Live Editor!

Flowchart

A flowchart is great for showing how processes or algorithms work. It’s a simple way to represent a sequence of steps.

graph TD;
A-->B;
A-->C;
B-->D;
C-->D;

This flowchart shows a basic process where “A” can lead to both “B” and “C”, and both “B” and “C” lead to “D”. With just a few lines of text, you’ve got a clear visual representation.

Sequence Diagram

If you’re working on a system with multiple interactions between components or people, a sequence diagram can help.

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!

This shows a conversation between Alice, Bob, and John. Sequence diagrams are perfect when you want to depict how different actors interact with each other in a specific order.

Gantt Chart

If you’re managing a project, Gantt charts help you visualize timelines and dependencies.

gantt
dateFormat YYYY-MM-DD
title Adding GANTT diagram to Mermaid
section A section
Completed task :done, des1, 2014-01-06,2014-01-08
Active task :active, des2, 2014-01-09, 3d
Future task : des3, after des2, 5d
Future task2 : des4, after des3, 5d

This chart shows tasks with start and end dates, as well as which tasks depend on others. It’s useful for project planning and tracking.

Class Diagram (Experimental)

If you work with object-oriented programming, a class diagram shows relationships between classes.

classDiagram
Class01 <|-- AveryLongClass : Cool
<<interface>> Class01
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 --> C2 : Where am i?
Class09 --* C3
Class09 --|> Class07
Class07 : equals()
Class07 : Object[] elementData
Class01 : size()
Class01 : int chimp
Class01 : int gorilla
Class08 <--> C2: Cool label
class Class10 {
<<service>>
int id
size()
}

This diagram shows how different classes relate to one another. You can visualize inheritance, composition, and method declarations.

Git Graph (Experimental)

Working on a Git project? A Git graph visualizes commits, merges, and branches in a clear and concise way.

---
title: Git diagram
---
gitGraph
commit
commit
branch develop
checkout develop
commit
commit
checkout main
merge develop
commit
commit

This graph makes it easy to track how branches and merges happen over time.

How to Install Mermaid

You can install Mermaid in a couple of ways:

  • For projects using npm or Yarn, just run:
Terminal window
npm i mermaid

Terminal window
yarn add mermaid
  • You can also include Mermaid in your project via a CDN:

Simple Usage on a Web Page

To use Mermaid on a webpage, include it like this:

Then, define a chart like this:

<div class="mermaid">
graph LR
A --- B
B-->C[fa:fa-ban forbidden]
B-->D(fa:fa-spinner);
</div>

When the page loads, Mermaid will automatically convert the chart definition into an SVG.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<div class="mermaid">
graph LR
A --- B
B-->C[fa:fa-ban forbidden]
B-->D(fa:fa-spinner);
</div>
</body>
</html>

Usage with Webpack

Mermaid fully supports Webpack. This allows you to bundle Mermaid into your existing projects easily. Just install it with npm and import it into your project.

Conclusion

Mermaid is a powerful tool for generating diagrams without leaving your code editor. Whether you’re explaining a workflow, modeling classes, or planning a project, Mermaid makes it simple. If you want to dive deeper, check out the official Mermaid documentation.


Found this article helpful? You might enjoy my free newsletter. I share dev tips and insights to help you grow your coding skills and advance your tech career.

Interested in supporting this blog in exchange for a shoutout? Get in touch.


Liked this post?

Check out these related articles that might be useful for you. They cover similar topics and provide additional insights.

Webdev
5 min read

SecretLint — A Linter for Preventing Committing Credentials

A guide to catching and preventing credential leaks in your code using Secretlint

Oct 22, 2024
Read article
Webdev
13 min read

10 Essential Terminal Commands Every Developer Should Know

List of useful Unix terminal commands to boost your productivity. Here are some of my favorites.

Aug 21, 2024
Read article
Webdev
3 min read

HTML Details Element: The Native Accordion You're Not Using

Discover how the HTML details element can replace your JavaScript accordions and why it might be better than your current solution

Dec 10, 2024
Read article
Webdev
4 min read

Optimize Your Astro Site's <head> with astro-capo

Automatically improve your Astro site's performance using astro-capo

Oct 19, 2024
Read article
Webdev
3 min read

CSS :has() - The Parent Selector We've Always Wanted

Transform your CSS with :has(), the game-changing selector that finally lets us style elements based on their children.

Dec 4, 2024
Read article
Webdev
5 min read

Add Auth to Astro 5 with Clerk in 5 Minutes

The simplest setup for adding Clerk authentication to your Astro project, with minimal code

Dec 18, 2024
Read article
Webdev
3 min read

Form Validation That Doesn't Annoy Users: CSS :user-valid and :user-invalid

The new pseudo-classes :user-valid and :user-invalid give us a smarter way to style form validation states based on user interaction

Dec 12, 2024
Read article
Webdev
7 min read

Tips for Reducing Cyclomatic Complexity

Cyclomatic complexity is like counting how many ways a car can go. More options make it harder to drive because you have to make more decisions, which can lead to confusion.

Sep 10, 2024
Read article
Webdev
6 min read

Micro Frontends: The LEGO Approach to Web Development

Explore the concept of micro frontends in web development, understand their benefits, and learn when this architectural approach is most effective for building scalable applications.

Oct 2, 2024
Read article

This article was originally published on https://www.trevorlasn.com/blog/mermaid-create-charts-and-diagrams-with-markdown. It was written by a human and polished using grammar tools for clarity.