Skip to main content
Mermaid provides extensive configuration options to control diagram rendering, appearance, and behavior. Configuration can be applied globally, per-site, or per-diagram.

Configuration hierarchy

Mermaid uses a layered configuration system:
  1. Default configuration - Built-in defaults from the library
  2. Site configuration - Set via initialize() or setSiteConfig()
  3. Directive configuration - Per-diagram using %%{init: {}}%% syntax
  4. Frontmatter configuration - Per-diagram using YAML frontmatter
Later configurations override earlier ones, with frontmatter having the highest priority.

Setting configuration

Global configuration options

Core options

Security configuration

The securityLevel option has important security implications when rendering user-generated content.

Visual options

Layout and rendering

Diagram-specific configuration

Each diagram type has its own configuration section:

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

Call initialize() 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

Deprecated options

Some configuration options have been deprecated. Mermaid will log warnings when these are used.

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