Beauty Diagram46 downloadsBeautify Mermaid and PlantUML diagrams with 9 polished themes. Dark-mode friendly, per-block theme override, portable image output. No setup.
Make your Mermaid and PlantUML diagrams look like deck slides — without leaving your vault.
Beautify every ```mermaid and ```plantuml block in your Obsidian notes with 9 polished themes, in Reading View, with zero setup.
The same flowchart LR source, three different themes — rendered by Beauty Diagram:
| Modern | Obsidian | Memphis (Premium) |
|---|---|---|
<img> references that render anywhere (GitHub, Notion paste, blog static sites).| Classic | Modern | Slate |
|---|---|---|
| Atlas (Pro) | Obsidian (Pro) | Brutalist (Pro) |
|---|---|---|
| Atelier (Pro) | Blueprint (Premium) | Memphis (Premium) |
|---|---|---|
Sequence diagrams get the same treatment:
And PlantUML:
```mermaid or ```plantuml block in Reading View.If you want to test pre-release builds ahead of the Community Plugins
listing, install BRAT,
then Add Beta plugin → paste beauty-diagram/obsidian-beauty-diagram.
Every ```mermaid and ```plantuml block in Reading View is rendered through Beauty Diagram automatically. Live Preview shows Obsidian's built-in renderer; switch to Reading View to see the beautified version.
Want Classic on one block and the default on the rest? Put a directive on the first line:
```mermaid
%% bd:theme=classic
flowchart LR
A --> B
```
For PlantUML use ' bd:theme=classic instead.
You can stack directives — one per line. bg=transparent keeps the diagram's canvas transparent for overlay on colored backgrounds:
```mermaid
%% bd:theme=classic
%% bd:bg=transparent
flowchart LR
A --> B
```
Supported keys: theme (any of the 9 themes), bg (transparent only). Directive lines are consumed by the plugin and stripped before rendering.
By default every diagram renders via the anonymous endpoint /v1/beautify.svg — fast, no quota, always watermarked. This applies to everyone including Pro users.
If you have a Pro or Premium plan, you can opt in per page to render diagrams without watermark:
Open the page in any view.
Command Palette → Beauty Diagram: Toggle share mode for this page.
The plugin adds a marker to the page's YAML front-matter:
---
# Beauty Diagram: share-mode (watermark-free preview, consumes share quota per unique diagram).
bd-share: true
---
Switch to Reading View — diagrams now render via /v1/share/<id>.svg. Pro/Premium owners get no watermark; the source is saved as a share on your account so it can also be referenced from a public URL.
Quota model: each unique diagram source consumes 1 share quota (Pro: 100/month) on its first preview. Subsequent previews of the same source hit the local cache for free. Editing a diagram counts as a new unique source.
Run the toggle command again to disable share mode — the marker is removed and the page reverts to anonymous render.
Free users see an upgrade prompt and no marker is written, so no quota is consumed by mistake.
If you publish your vault (Obsidian Publish, paste to Notion, blog export, etc.), run Cmd+P → Beauty Diagram: Inject embed URLs in current note. The plugin walks every mermaid/plantuml fence and injects an idempotent <img> reference below it that renders anywhere markdown is read.
Cleanup: Beauty Diagram: Clean orphan embed URLs in vault removes injected references whose source fence has been deleted.
| Setting | Default | Notes |
|---|---|---|
| API key | empty | Optional. Required for share mode and source injection. Without one, preview renders anonymously (watermark, 5 KB source cap). Get one at beauty-diagram.com/account/api-keys. |
| Default theme | Classic | One of 9. Per-block directive overrides. |
| Replace built-in mermaid render | on | Off lets Obsidian render mermaid blocks itself. |
| Handle plantuml fences | on | Obsidian has no built-in plantuml renderer. |
| Auto-inject on save | off | When on, every Markdown save runs source injection. |
The Verify button next to the API key field surfaces your current plan and this month's share quota usage — use it before / after enabling share mode to confirm the gating.
| Beauty Diagram | Obsidian built-in mermaid | obsidian-plantuml | |
|---|---|---|---|
| Mermaid support | ✓ | ✓ | — |
| PlantUML support | ✓ (no local setup) | — | ✓ (needs local Java or PUML server) |
| Themes | 9 | 1 | 1 |
| Dark-mode contrast | ✓ | depends on vault theme | depends |
| Source-injection (portable) | ✓ | — | — |
| Mobile-friendly | ✓ | ✓ | depends |
Q: Does the plugin work in Live Preview? A: Not yet — render runs in Reading View only. Live Preview falls back to Obsidian's built-in. Roadmap.
Q: Where do my diagrams go? A: Anonymous renders (default) are stateless — the source is encoded directly into the embed URL and rendered on demand. The server doesn't persist anything. Share mode (Pro+ opt-in) saves the source to your Beauty Diagram account so it can be served watermark-free and shared via public URL — that's why it consumes share quota.
Q: My Pro key isn't removing the watermark.
A: API key alone doesn't auto-enable watermark-free preview — that would silently consume your monthly share quota. Watermark-free is an explicit per-page opt-in: run Beauty Diagram: Toggle share mode for this page from the Command Palette. The plugin adds bd-share: true to the front-matter and renders that page via the share endpoint. See the Share mode section above.
Q: Mobile support?
A: Yes. The plugin uses Obsidian's requestUrl API which works on iOS / Android. Image cache size is smaller on mobile (200 entries vs 1000 desktop).
Q: I want to edit the diagram in a richer editor. A: Hover any rendered diagram — a small ↗ Open in editor badge appears in the bottom-right corner. Click it to open the Beauty Diagram editor with the source prefilled. Edits there don't sync back to your Obsidian note — use Obsidian's source mode for that.
Q: I see "Couldn't render this diagram".
A: Common causes: source > 5 KB without an API key, or your network is blocking api.beauty-diagram.com. For mermaid blocks, click "Use Obsidian's built-in renderer" in the error UI to disable Beauty Diagram for mermaid and let Obsidian render them itself. PlantUML has no built-in fallback — re-enable network access or restore connectivity.
This plugin makes HTTP requests to api.beauty-diagram.com by default to render diagrams. Disclosure:
```mermaid / ```plantuml block in Reading View triggers a GET to /v1/beautify.svg with the block's source base64url-encoded into the URL query string. The server uses the source to render the SVG and does not persist it.bd-share: true in front-matter send their diagrams via POST to /v1/share using your API key. The server saves these to your Beauty Diagram account so they can be served as embed URLs (see privacy policy). Without the front-matter marker the share endpoint is not called./v1/share path as share mode but writes the resulting URLs into the markdown file so the diagrams render anywhere markdown is read.X-Bd-Client: obsidian request header so we can see in aggregate which clients are healthy. No personal data, no telemetry endpoints beyond standard request logs.Two levels of opt-out:
If you run your own Beauty Diagram server (the project is self-hostable), set Settings → Beauty Diagram → Advanced → API base URL to your instance. The plugin will hit only that origin, never the hosted SaaS.
MIT. See LICENSE.