Text to Diagram Tools ComparisonCompareD2, Mermaid, PlantUML & Graphviz side-by-side



Which diagramming tool is right for you?
Compare the syntax and renders of various languages that produce diagrams from text.
Basic
Wiiu
Latex
Class
State
Containers
Shapes
Trees
Chess
Icons
Tables
Sequence
Text
Code
Basic: An example of the most basic diagramming functions: create a box, give it a label, connect it to another box, label that connection. It also demonstrates shorthand ID substitution, if it exists in the syntax.
1hello
2w: world
3
4hello -> w: there
1@startuml
2
3[hello]
4[world] as w
5
6[hello] -> w: there
7
8@enduml
Features
Open source
License
MPL 2.0
GPL 3.0
Downloadable CLI
Server-side execution
Container edges
Released in
2022
2009
Maintenance
Compiler language
Go
Java
Editor support
Creator-made extensions for VSCode and Vim
Community-made extensions for VSCode, Vim, Atom
Themes
Friendly error messages
Images & Icons
Any URL
Any URL
Sequence diagrams
SQL tables
Markdown
Code snippets
LaTeX
Accessibility
Autoformat
Native Github rendering
Responsive dark mode
PDF exports
With additional installs
| Features | ||
|---|---|---|
| Open source: The language is free and open-source.Open source | ||
| License: The license that governs terms of usage.License | MPL 2.0 | GPL 3.0 |
| Downloadable CLI: Is a runnable download available (if not, it requires building from source).Downloadable CLI | ||
| Server-side execution: Can the language render diagrams without a browser.Server-side execution | ||
| Container edges: Edges going from or to containers is very popular in software architecture diagrams.Container edges | ||
| Released in: First year of public releaseReleased in | 2022 | 2009 |
| Maintenance: Is the language actively maintainedMaintenance | ||
| Compiler language: The language it is implemented inCompiler language | Go | Java |
| Editor support: The state of editor support for the languageEditor support | Creator-made extensions for VSCode and Vim | Community-made extensions for VSCode, Vim, Atom |
| Themes: Configurable themes for diagramsThemes | ||
| Friendly error messages: Not just "syntax error"Friendly error messages | ||
| Images & Icons: What are the available options for including images and iconsImages & Icons | Any URL | Any URL |
| Sequence diagrams: The best part of UMLSequence diagrams | ||
| SQL tables: Support for Entity-Relational-Diagrams (ERD)SQL tables | ||
| Markdown: Use Markdown for text objects in the diagramMarkdown | ||
| Code snippets: Render syntax-highlighted code snippetsCode snippets | ||
| LaTeX: Render math equations suitable for academic usageLaTeX | ||
| Accessibility: Support for accessibility options like description tags for screen readersAccessibility | ||
| Autoformat: Language tooling to autoformat a fileAutoformat | ||
| Native Github rendering: Does it render natively on GithubNative Github rendering | ||
| Responsive dark mode: Can the diagram render with both light and dark mode, switching depending on user preferenceResponsive dark mode | ||
| PDF exports: Can the CLI export PDF outputPDF exports | With additional installs | |
Frequently asked questions
Where do the renders come from?
Where does the syntax-highlighting come from?
How up-to-date is this?
Who made this?
Why isn't [my favorite underground language] here?
Future plans?
I'd like to make a correction/addition.