Mermaid Diagram Templates for System Design Interviews
Copy-paste Mermaid templates for the four diagrams every system-design interview expects: high-level flowchart, request sequence, ER data model, and state machine.
Every system-design interview expects four diagrams: high-level architecture, request flow, data model, and (sometimes) state machine. Drawing them on a whiteboard mid-interview is slow and error-prone. If you have an AI tool that renders Mermaid (Interview Helpers does this inline), here are the templates that cover 80% of design questions.
1. High-level architecture (flowchart)
Use this whenever you're sketching the overall system. Client → CDN/WAF → API gateway → services → caches → datastores.
flowchart LR
Client["Client (web/mobile)"] -->|HTTPS| CDN
CDN -->|cache miss| Gateway[API Gateway]
Gateway --> Auth[Auth Service]
Gateway --> Service[Core Service]
Service --> Cache[(Redis)]
Service --> DB[(Primary DB)]
Service --> Queue[/Message Queue/]
Queue --> Worker[Background Worker]
Worker --> DB2. Request sequence (sequenceDiagram)
For walking through a specific user action — login, post, search. Shows the time-ordered message exchange between components.
sequenceDiagram
participant C as Client
participant G as API Gateway
participant S as Service
participant Ca as Cache
participant D as Database
C->>G: GET /resource/123 (Bearer token)
G->>G: Verify JWT
G->>S: forward request
S->>Ca: GET resource:123
alt cache hit
Ca-->>S: payload
else cache miss
S->>D: SELECT * WHERE id=123
D-->>S: row
S->>Ca: SET resource:123 (TTL 60s)
end
S-->>G: response
G-->>C: 200 OK + payload3. Data model (erDiagram)
For showing tables, columns, primary/foreign keys, and relationships. Mermaid's parser is picky here — stick to the simple types (string, int, uuid, timestamp, bool, json) and avoid length annotations like varchar(255).
erDiagram
USER {
uuid id PK
string email UK
string display_name
timestamp created_at
}
POST {
uuid id PK
uuid user_id FK
string title
string body
timestamp created_at
}
COMMENT {
uuid id PK
uuid post_id FK
uuid user_id FK
string body
timestamp created_at
}
USER ||--o{ POST : authors
USER ||--o{ COMMENT : writes
POST ||--o{ COMMENT : hasCardinalities to remember: ||--o{ = one-to-many, ||--|| = one-to-one, }o--o{ = many-to-many.
4. State machine (stateDiagram-v2)
For order/payment/job status flows, where you need to show valid transitions explicitly.
stateDiagram-v2
[*] --> Pending
Pending --> Processing: charge
Processing --> Completed: success
Processing --> Failed: gateway error
Failed --> Pending: retry
Completed --> Refunded: refund
Refunded --> [*]
Completed --> [*]How to actually use these
- Memorize the shape of each (you don't need exact syntax — just the structure)
- In a real interview, when you need to draw a diagram, use System Design Mode: Ctrl+Shift+S → Ctrl+1 screenshot of the question
- The AI returns a diagram inline based on the actual question — usually a refined version of one of these templates
- Read it, paraphrase it aloud to the interviewer, drill into specifics they ask about
Pitfalls to avoid
- Unicode arrows. Mermaid does NOT render →, ⟶, or ⇒ — only ASCII
-->. - Long node labels. Keep them under ~25 chars or the diagram gets unreadable.
- Comments inside entity blocks. Mermaid's erDiagram parser breaks. Put indexes / shard keys in prose below the diagram.
- Special characters in entity names. Use
UPPER_SNAKEonly — no hyphens, no spaces.
See the System Design Mode docs for how Interview Helpers auto-fixes most of these mistakes when an AI strays.
Try Interview Helpers free
The AI interview copilot built for tech rounds. 10 free messages, no credit card.