Mermaid Diagramming
Create professional software diagrams using Mermaid's text-based syntax. Mermaid renders diagrams from simple text definitions, making diagrams version-controllable, easy to update, and maintainable alongside code.
Core Syntax Structure
All Mermaid diagrams follow this pattern:
diagramType
definition content
Key principles:
- First line declares diagram type (e.g.,
classDiagram, sequenceDiagram, flowchart)
- Use
%% for comments
- Line breaks and indentation improve readability but aren't required
- Unknown words break diagrams; parameters fail silently
Diagram Type Selection Guide
Choose the right diagram type:
Class Diagrams - Domain modeling, OOP design, entity relationships
- Domain-driven design documentation
- Object-oriented class structures
- Entity relationships and dependencies
Sequence Diagrams - Temporal interactions, message flows
- API request/response flows
- User authentication flows
- System component interactions
- Method call sequences
Flowcharts - Processes, algorithms, decision trees
- User journeys and workflows
- Business processes
- Algorithm logic
- Deployment pipelines
Entity Relationship Diagrams (ERD) - Database schemas
- Table relationships
- Data modeling
- Schema design
C4 Diagrams - Software architecture at multiple levels
- System Context (systems and users)
- Container (applications, databases, services)
- Component (internal structure)
- Code (class/interface level)
State Diagrams - State machines, lifecycle states
Git Graphs - Version control branching strategies
Gantt Charts - Project timelines, scheduling
Pie/Bar Charts - Data visualization
Detailed References
Copy-paste starting points for the four most common types live in
references/quick-start-examples.md. For in-depth guidance
on specific diagram types, see:
- references/class-diagrams.md - Domain modeling, relationships (association, composition, aggregation, inheritance), multiplicity, methods/properties
- references/sequence-diagrams.md - Actors, participants, messages (sync/async), activations, loops, alt/opt/par blocks, notes
- references/flowcharts.md - Node shapes, connections, decision logic, subgraphs, styling
- references/erd-diagrams.md - Entities, relationships, cardinality, keys, attributes
- references/c4-diagrams.md - System context, container, component diagrams, boundaries
- references/architecture-diagrams.md - Cloud services, infrastructure, CI/CD deployments
- references/advanced-features.md - Themes, styling, configuration, layout options
Best Practices
- Start Simple - Begin with core entities/components, add details incrementally
- Use Meaningful Names - Clear labels make diagrams self-documenting
- Comment Extensively - Use
%% comments to explain complex relationships
- Keep Focused - One diagram per concept; split large diagrams into multiple focused views
- Version Control - Store
.mmd files alongside code for easy updates
- Add Context - Include titles and notes to explain diagram purpose
- Iterate - Refine diagrams as understanding evolves
Configuration and Theming
Configure diagrams using frontmatter:
---
config:
theme: base
themeVariables:
primaryColor: "#ff6b6b"
---
flowchart LR
A --> B
Available themes: default, forest, dark, neutral, base
Layout options:
layout: dagre (default) - Classic balanced layout
layout: elk - Advanced layout for complex diagrams (requires integration)
Look options:
look: classic - Traditional Mermaid style
look: handDrawn - Sketch-like appearance
Exporting and Rendering
Native support in:
- GitHub/GitLab - Automatically renders in Markdown
- VS Code - With Markdown Mermaid extension
- Notion, Obsidian, Confluence - Built-in support
Export options:
- Mermaid Live Editor - Online editor with PNG/SVG export
- Mermaid CLI -
npm install -g @mermaid-js/mermaid-cli then mmdc -i input.mmd -o output.png
- Docker -
docker run --rm -v $(pwd):/data minlag/mermaid-cli -i /data/input.mmd -o /data/output.png
Common Pitfalls
- Breaking characters - Avoid
{} in comments, use proper escape sequences for special characters
- Syntax errors - Misspellings break diagrams; validate syntax in Mermaid Live
- Overcomplexity - Split complex diagrams into multiple focused views
- Missing relationships - Document all important connections between entities
1---2name: mermaid-diagrams3description: Create software diagrams in Mermaid — class, sequence, flowchart, ERD, C4, state, gitgraph, gantt. Use to "diagram", "visualize", "map out", or "show the flow" of architecture, database schemas, code structure, or user/app flows.4---56# Mermaid Diagramming78Create professional software diagrams using Mermaid's text-based syntax. Mermaid renders diagrams from simple text definitions, making diagrams version-controllable, easy to update, and maintainable alongside code.910## Core Syntax Structure1112All Mermaid diagrams follow this pattern:1314```mermaid15diagramType16 definition content17```1819**Key principles:**20- First line declares diagram type (e.g., `classDiagram`, `sequenceDiagram`, `flowchart`)21- Use `%%` for comments22- Line breaks and indentation improve readability but aren't required23- Unknown words break diagrams; parameters fail silently2425## Diagram Type Selection Guide2627**Choose the right diagram type:**28291. **Class Diagrams** - Domain modeling, OOP design, entity relationships30 - Domain-driven design documentation31 - Object-oriented class structures32 - Entity relationships and dependencies33342. **Sequence Diagrams** - Temporal interactions, message flows35 - API request/response flows36 - User authentication flows37 - System component interactions38 - Method call sequences39403. **Flowcharts** - Processes, algorithms, decision trees41 - User journeys and workflows42 - Business processes43 - Algorithm logic44 - Deployment pipelines45464. **Entity Relationship Diagrams (ERD)** - Database schemas47 - Table relationships48 - Data modeling49 - Schema design50515. **C4 Diagrams** - Software architecture at multiple levels52 - System Context (systems and users)53 - Container (applications, databases, services)54 - Component (internal structure)55 - Code (class/interface level)56576. **State Diagrams** - State machines, lifecycle states587. **Git Graphs** - Version control branching strategies598. **Gantt Charts** - Project timelines, scheduling609. **Pie/Bar Charts** - Data visualization6162## Detailed References6364Copy-paste starting points for the four most common types live in65**[references/quick-start-examples.md](references/quick-start-examples.md)**. For in-depth guidance66on specific diagram types, see:6768- **[references/class-diagrams.md](references/class-diagrams.md)** - Domain modeling, relationships (association, composition, aggregation, inheritance), multiplicity, methods/properties69- **[references/sequence-diagrams.md](references/sequence-diagrams.md)** - Actors, participants, messages (sync/async), activations, loops, alt/opt/par blocks, notes70- **[references/flowcharts.md](references/flowcharts.md)** - Node shapes, connections, decision logic, subgraphs, styling71- **[references/erd-diagrams.md](references/erd-diagrams.md)** - Entities, relationships, cardinality, keys, attributes72- **[references/c4-diagrams.md](references/c4-diagrams.md)** - System context, container, component diagrams, boundaries73- **[references/architecture-diagrams.md](references/architecture-diagrams.md)** - Cloud services, infrastructure, CI/CD deployments74- **[references/advanced-features.md](references/advanced-features.md)** - Themes, styling, configuration, layout options7576## Best Practices77781. **Start Simple** - Begin with core entities/components, add details incrementally792. **Use Meaningful Names** - Clear labels make diagrams self-documenting803. **Comment Extensively** - Use `%%` comments to explain complex relationships814. **Keep Focused** - One diagram per concept; split large diagrams into multiple focused views825. **Version Control** - Store `.mmd` files alongside code for easy updates836. **Add Context** - Include titles and notes to explain diagram purpose847. **Iterate** - Refine diagrams as understanding evolves8586## Configuration and Theming8788Configure diagrams using frontmatter:8990```mermaid91---92config:93 theme: base94 themeVariables:95 primaryColor: "#ff6b6b"96---97flowchart LR98 A --> B99```100101**Available themes:** default, forest, dark, neutral, base102103**Layout options:**104- `layout: dagre` (default) - Classic balanced layout105- `layout: elk` - Advanced layout for complex diagrams (requires integration)106107**Look options:**108- `look: classic` - Traditional Mermaid style109- `look: handDrawn` - Sketch-like appearance110111## Exporting and Rendering112113**Native support in:**114- GitHub/GitLab - Automatically renders in Markdown115- VS Code - With Markdown Mermaid extension116- Notion, Obsidian, Confluence - Built-in support117118**Export options:**119- [Mermaid Live Editor](https://mermaid.live) - Online editor with PNG/SVG export120- Mermaid CLI - `npm install -g @mermaid-js/mermaid-cli` then `mmdc -i input.mmd -o output.png`121- Docker - `docker run --rm -v $(pwd):/data minlag/mermaid-cli -i /data/input.mmd -o /data/output.png`122123## Common Pitfalls124125- **Breaking characters** - Avoid `{}` in comments, use proper escape sequences for special characters126- **Syntax errors** - Misspellings break diagrams; validate syntax in Mermaid Live127- **Overcomplexity** - Split complex diagrams into multiple focused views128- **Missing relationships** - Document all important connections between entities