Creating Organizational Charts with Mermaid
Organizational charts are essential for visualizing company structures, team hierarchies, and reporting relationships. Mermaid provides a powerful, text-based approach to creating these diagrams that can be easily maintained, version-controlled, and integrated into documentation systems.
This guide demonstrates how to create comprehensive organizational charts using Mermaid syntax, from simple team structures to complex enterprise hierarchies.
Table of Contents
Introduction to Mermaid
Mermaid is a diagramming and charting tool that uses markdown-inspired syntax to create diagrams dynamically. It’s particularly useful for:
- Documentation: Embedding charts directly in markdown files
- Version Control: Text-based diagrams that track changes easily
- Automation: Generating charts programmatically
- Integration: Working seamlessly with platforms like GitHub, GitLab, and documentation sites
Basic Organizational Chart Structure
Simple Hierarchy Example
graph TD CEO["Chief Executive Officer"] CTO["Chief Technology Officer"] CFO["Chief Financial Officer"]
CEO --> CTO CEO --> CFO
This creates a basic three-level hierarchy showing the CEO at the top with two direct reports.
Department-Level Organization
graph TD CEO["Chief Executive Officer"] CTO["Chief Technology Officer"] CFO["Chief Financial Officer"] COO["Chief Operating Officer"]
DevLead["Development Team Lead"] QALead["QA Team Lead"] DevOpsLead["DevOps Team Lead"]
CEO --> CTO CEO --> CFO CEO --> COO
CTO --> DevLead CTO --> QALead CTO --> DevOpsLead
Enterprise-Level Organizational Chart
Here’s a comprehensive example of a complete enterprise organizational structure:
graph TD CEO["Chief Executive Officer"] COO["Chief Operating Officer"] CTO["Chief Technology Officer"] CFO["Chief Financial Officer"] CISO["Chief Information Security Officer"]
PM["Project Manager"] Arch["Lead Architect"] SecArch["Security Architect"]
DevLead["Development Team Lead"] Dev1["Senior Developer"] Dev2["Mid-level Developer"] Dev3["Junior Developer"]
QA["Quality Assurance Lead"] QA1["QA Engineer"] QA2["QA Tester"]
DevOpsLead["DevOps Team Lead"] DevOps1["DevOps Engineer"] DevOps2["System Administrator"]
UXLead["UX/UI Lead Designer"] UX1["UX Researcher"] UX2["UI Designer"]
SecAnalystLead["Security Analysis Lead"] SecAnalyst1["Security Analyst"] SecAnalyst2["Incident Responder"]
SecEngLead["Security Engineering Lead"] SecEng1["Security Engineer"] SecEng2["Penetration Tester"]
CommsLead["Communications Lead"] Comms1["Technical Writer"] Comms2["Community Manager"]
Legal["Legal Advisor"] HR["Human Resources Manager"] FinAnalyst["Financial Analyst"]
SalesLead["Sales Director"] Sales1["Account Manager"] Sales2["Sales Representative"]
CustSuppLead["Customer Support Lead"] CustSupp1["Support Specialist"] CustSupp2["Support Technician"]
CEO -->|Oversees| COO CEO -->|Oversees| CTO CEO -->|Oversees| CFO CEO -->|Oversees| CISO
COO -->|Manages| PM CTO -->|Leads| Arch Arch -->|Collaborates with| SecArch Arch -->|Supervises| DevLead
DevLead -->|Guides| Dev1 DevLead -->|Guides| Dev2 DevLead -->|Guides| Dev3
PM -->|Coordinates| QA QA -->|Oversees| QA1 QA -->|Oversees| QA2
CTO -->|Manages| DevOpsLead DevOpsLead -->|Supervises| DevOps1 DevOpsLead -->|Supervises| DevOps2
PM -->|Works with| UXLead UXLead -->|Directs| UX1 UXLead -->|Directs| UX2
CISO -->|Heads| SecAnalystLead SecAnalystLead -->|Manages| SecAnalyst1 SecAnalystLead -->|Manages| SecAnalyst2
CISO -->|Oversees| SecEngLead SecEngLead -->|Leads| SecEng1 SecEngLead -->|Leads| SecEng2
COO -->|Oversees| CommsLead CommsLead -->|Manages| Comms1 CommsLead -->|Manages| Comms2
COO -->|Supervises| Legal COO -->|Supervises| HR
CFO -->|Manages| FinAnalyst CFO -->|Oversees| SalesLead SalesLead -->|Supervises| Sales1 SalesLead -->|Supervises| Sales2
COO -->|Oversees| CustSuppLead CustSuppLead -->|Manages| CustSupp1 CustSuppLead -->|Manages| CustSupp2
Advanced Mermaid Features for Org Charts
Styling and Customization
Adding Colors and Styles
graph TD CEO["Chief Executive Officer"] CTO["Chief Technology Officer"] CFO["Chief Financial Officer"]
CEO --> CTO CEO --> CFO
classDef executive fill:#ff9999,stroke:#333,stroke-width:4px classDef management fill:#99ccff,stroke:#333,stroke-width:2px
class CEO executive class CTO,CFO management
Custom Node Shapes
graph TD CEO("Chief Executive Officer") CTO["Chief Technology Officer"] CFO{{"Chief Financial Officer"}} COO[("Chief Operating Officer")]
CEO --> CTO CEO --> CFO CEO --> COO
Different Chart Orientations
Left-to-Right Hierarchy
graph LR CEO["CEO"] --> CTO["CTO"] CEO --> CFO["CFO"] CTO --> DevLead["Dev Lead"] CTO --> QALead["QA Lead"]
Top-Down with Subgraphs
graph TD subgraph "Executive Team" CEO["Chief Executive Officer"] COO["Chief Operating Officer"] CTO["Chief Technology Officer"] CFO["Chief Financial Officer"] end
subgraph "Technology Division" Arch["Lead Architect"] DevLead["Development Lead"] QALead["QA Lead"] end
subgraph "Development Team" Dev1["Senior Developer"] Dev2["Mid-level Developer"] Dev3["Junior Developer"] end
CEO --> COO CEO --> CTO CEO --> CFO CTO --> Arch CTO --> DevLead CTO --> QALead DevLead --> Dev1 DevLead --> Dev2 DevLead --> Dev3
Practical Implementation Examples
Technology Team Structure
graph TD CTO["Chief Technology Officer<br/>Strategic Technology Leadership"]
subgraph "Architecture Team" SolArch["Solutions Architect"] EntArch["Enterprise Architect"] SecArch["Security Architect"] end
subgraph "Development Teams" FELead["Frontend Team Lead"] BELead["Backend Team Lead"] MobLead["Mobile Team Lead"]
FEDev1["Senior Frontend Developer"] FEDev2["Frontend Developer"]
BEDev1["Senior Backend Developer"] BEDev2["Backend Developer"]
MobDev1["Senior Mobile Developer"] MobDev2["Mobile Developer"] end
subgraph "Quality & Operations" QALead["QA Lead"] DevOpsLead["DevOps Lead"]
QAEng["QA Engineer"] QATest["QA Tester"]
DevOpsEng["DevOps Engineer"] SysAdmin["System Administrator"] end
CTO --> SolArch CTO --> EntArch CTO --> SecArch
CTO --> FELead CTO --> BELead CTO --> MobLead CTO --> QALead CTO --> DevOpsLead
FELead --> FEDev1 FELead --> FEDev2
BELead --> BEDev1 BELead --> BEDev2
MobLead --> MobDev1 MobLead --> MobDev2
QALead --> QAEng QALead --> QATest
DevOpsLead --> DevOpsEng DevOpsLead --> SysAdmin
classDef cto fill:#ff6b6b,stroke:#333,stroke-width:3px,color:#fff classDef lead fill:#4ecdc4,stroke:#333,stroke-width:2px,color:#fff classDef senior fill:#45b7d1,stroke:#333,stroke-width:2px,color:#fff classDef regular fill:#96ceb4,stroke:#333,stroke-width:1px
class CTO cto class SolArch,EntArch,SecArch,FELead,BELead,MobLead,QALead,DevOpsLead lead class FEDev1,BEDev1,MobDev1 senior class FEDev2,BEDev2,MobDev2,QAEng,QATest,DevOpsEng,SysAdmin regular
Security Team Organization
graph TD CISO["Chief Information Security Officer<br/>Security Strategy & Governance"]
subgraph "Security Operations" SOCLead["SOC Lead"] SOCAnalyst1["Senior SOC Analyst"] SOCAnalyst2["SOC Analyst"] IncidentResp["Incident Response Specialist"] end
subgraph "Security Engineering" SecEngLead["Security Engineering Lead"] SecEng1["Senior Security Engineer"] SecEng2["Security Engineer"] PenTester["Penetration Tester"] end
subgraph "Governance & Compliance" CompLead["Compliance Lead"] RiskAnalyst["Risk Analyst"] PolicyAnalyst["Policy Analyst"] end
subgraph "Identity & Access" IAMLead["IAM Lead"] IAMEng["IAM Engineer"] PrivAccess["Privileged Access Specialist"] end
CISO --> SOCLead CISO --> SecEngLead CISO --> CompLead CISO --> IAMLead
SOCLead --> SOCAnalyst1 SOCLead --> SOCAnalyst2 SOCLead --> IncidentResp
SecEngLead --> SecEng1 SecEngLead --> SecEng2 SecEngLead --> PenTester
CompLead --> RiskAnalyst CompLead --> PolicyAnalyst
IAMLead --> IAMEng IAMLead --> PrivAccess
classDef ciso fill:#dc3545,stroke:#333,stroke-width:3px,color:#fff classDef lead fill:#fd7e14,stroke:#333,stroke-width:2px,color:#fff classDef senior fill:#ffc107,stroke:#333,stroke-width:2px classDef specialist fill:#28a745,stroke:#333,stroke-width:1px,color:#fff
class CISO ciso class SOCLead,SecEngLead,CompLead,IAMLead lead class SOCAnalyst1,SecEng1 senior class SOCAnalyst2,IncidentResp,SecEng2,PenTester,RiskAnalyst,PolicyAnalyst,IAMEng,PrivAccess specialist
Integration with Documentation Systems
GitHub/GitLab Integration
Mermaid diagrams can be embedded directly in GitHub and GitLab markdown files:
```mermaidgraph TD CEO["Chief Executive Officer"] CTO["Chief Technology Officer"] CFO["Chief Financial Officer"]
CEO --> CTO CEO --> CFO```
Documentation Platforms
Gitiles Integration
<div class="mermaid"> graph TD CEO["Chief Executive Officer"] CTO["Chief Technology Officer"] CFO["Chief Financial Officer"] CEO --> CTO CEO --> CFO</div>
Confluence Integration
Use the Mermaid macro in Confluence:
{mermaid}graph TD CEO["Chief Executive Officer"] CTO["Chief Technology Officer"] CFO["Chief Financial Officer"]
CEO --> CTO CEO --> CFO{mermaid}
Best Practices for Organizational Charts
Design Principles
- Clarity: Use clear, descriptive titles for roles
- Consistency: Maintain consistent styling throughout
- Hierarchy: Make reporting relationships obvious
- Readability: Avoid overcrowding with too many connections
Maintenance Tips
Version Control
name: Update Org Charton: push: paths: - "docs/org-chart.mmd"jobs: generate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Generate SVG uses: mermaidjs/mermaid-cli-action@v1 with: files: "docs/org-chart.mmd"
Automated Updates
const fs = require("fs");const employees = require("./employees.json");
function generateOrgChart(employees) { let mermaidCode = "graph TD\n";
employees.forEach(emp => { if (emp.manager) { mermaidCode += ` ${emp.manager}["${emp.managerTitle}"] --> ${emp.id}["${emp.title}"]\n`; } });
return mermaidCode;}
const chart = generateOrgChart(employees);fs.writeFileSync("org-chart.mmd", chart);
Accessibility Considerations
Alt Text and Descriptions
graph TD CEO["Chief Executive Officer<br/>Responsible for overall strategy"] CTO["Chief Technology Officer<br/>Leads technology initiatives"] CFO["Chief Financial Officer<br/>Manages financial operations"]
CEO --> CTO CEO --> CFO
Color-Blind Friendly Palettes
graph TD CEO["Chief Executive Officer"] CTO["Chief Technology Officer"] CFO["Chief Financial Officer"]
CEO --> CTO CEO --> CFO
classDef executive fill:#2166ac,stroke:#333,stroke-width:2px,color:#fff classDef management fill:#762a83,stroke:#333,stroke-width:2px,color:#fff
class CEO executive class CTO,CFO management
Advanced Use Cases
Matrix Organizations
graph TD CEO["Chief Executive Officer"]
subgraph "Functional Managers" CTO["Chief Technology Officer"] CPO["Chief Product Officer"] CMO["Chief Marketing Officer"] end
subgraph "Project Teams" PM1["Project Manager A"] PM2["Project Manager B"] end
subgraph "Resources" Dev1["Developer 1"] Dev2["Developer 2"] Designer["Designer"] Marketer["Marketing Specialist"] end
CEO --> CTO CEO --> CPO CEO --> CMO
CTO -.-> Dev1 CTO -.-> Dev2 CPO -.-> Designer CMO -.-> Marketer
PM1 --> Dev1 PM1 --> Designer
PM2 --> Dev2 PM2 --> Marketer
classDef dotted stroke-dasharray: 5 5
Cross-Functional Teams
graph TD subgraph "Product Team Alpha" PO1["Product Owner"] SM1["Scrum Master"] Dev1["Developer"] QA1["QA Engineer"] UX1["UX Designer"] end
subgraph "Product Team Beta" PO2["Product Owner"] SM2["Scrum Master"] Dev2["Developer"] QA2["QA Engineer"] UX2["UX Designer"] end
subgraph "Shared Services" DevOps["DevOps Engineer"] SecEng["Security Engineer"] DataEng["Data Engineer"] end
PO1 --> SM1 SM1 --> Dev1 SM1 --> QA1 SM1 --> UX1
PO2 --> SM2 SM2 --> Dev2 SM2 --> QA2 SM2 --> UX2
Dev1 -.-> DevOps Dev2 -.-> DevOps Dev1 -.-> SecEng Dev2 -.-> SecEng QA1 -.-> DataEng QA2 -.-> DataEng
Conclusion
Mermaid provides a powerful and flexible way to create organizational charts that are:
- Maintainable: Text-based format that’s easy to update
- Version-controlled: Track changes over time
- Scalable: Handle everything from small teams to enterprise structures
- Integrable: Work seamlessly with documentation platforms
By following the patterns and best practices outlined in this guide, you can create professional organizational charts that effectively communicate your company’s structure and help stakeholders understand reporting relationships and team dynamics.
Whether you’re documenting a small startup or a large enterprise, Mermaid’s syntax provides the flexibility to represent complex organizational structures while maintaining clarity and readability.