Configuration hierarchy
Mermaid uses a layered configuration system:- Default configuration - Built-in defaults from the library
- Site configuration - Set via
initialize()orsetSiteConfig() - Directive configuration - Per-diagram using
%%{init: {}}%%syntax - Frontmatter configuration - Per-diagram using YAML frontmatter
Setting configuration
- Initialize (recommended)
- Frontmatter
- Directives
- Runtime API
The standard way to configure Mermaid at application startup:This should be called once before rendering any diagrams.
Global configuration options
Core options
Security configuration
Visual options
Layout and rendering
Diagram-specific configuration
Each diagram type has its own configuration section:- Flowchart
- Sequence diagram
- Gantt
- Class diagram
- State diagram
- ER diagram
Configuration API
Mermaid exposes several functions for working with configuration:Avoid calling
getConfig() repeatedly. Store the result in a variable and reuse it. The function creates a deep copy each time it’s called.Configuration best practices
1. Initialize once
Callinitialize() only once at application startup:
2. Use updateSiteConfig for runtime changes
3. Prefer frontmatter over directives
Frontmatter is more readable and maintainable: Versus:4. Secure user-generated content
When rendering untrusted diagrams:5. Validate configuration
Mermaid silently ignores invalid configuration keys. Use TypeScript for type safety:Common configuration patterns
- Dark mode
- High-contrast
- Compact diagrams
- Hand-drawn style
Deprecated options
Next steps
Theming
Customize colors and visual appearance
Initialization
Learn about initialization patterns
API reference
Complete configuration API reference
Security
Learn about security best practices