Standard Garden for Obsidian

Your vault is already beautiful. Now the world can see it too.


The idea

You open Obsidian. You choose a font. You pick your colors. You adjust the spacing until it feels right. The words sit on the page exactly the way you imagined them. This is your space — a place shaped by your taste, your rhythm, your eye.

Then you hit publish.

And the page that appears online looks… nothing like what you built.

We think that’s broken. So we fixed it.

Standard Garden’s Obsidian plugin bridges the gap between your vault and the web. The design tokens you set in Obsidian — fonts, colors, weights, spacing — are the same tokens that render your published page. What you see is what they see.

“The medium is the message.”
— Marshall McLuhan


What it does

The plugin turns your Obsidian vault into a living design system. Three layers of customization, all from within your notes:

1. Snippets as notes

CSS snippets are not hidden config files — they’re markdown notes. A note with a css code block is a stylesheet. Mark it global with stnd: true in frontmatter, or load it per-note via cssclasses. Your styles live next to your words.

---
stnd: my-base-theme
---

```css
body {
    --font-text: "Literata";
    --font-header: "Bricolage Grotesque";
    --font-header-weight: 800;
    --font-header-letter-spacing: -0.03em;
    --color-light-background: #faf8f4;
    --color-light-foreground: #2a2520;
    --color-light-accent: oklch(55% 0.18 30);
}
```

2. Frontmatter as design tokens

Frontmatter keys map directly to CSS custom properties. The key name is the variable name — no prefix, no translation. Just type and see.

font-header: "Playfair Display"
font-header-weight: 900
font-header-letter-spacing: -0.04em
color-light-background: "#fefcf7"
color-light-accent: "#b5432a"
optical-ratio: 1.4

font-header: "Playfair Display" in your frontmatter becomes --font-header: "Playfair Display" in CSS. That’s the whole system — the key minus --.

This is per-note theming. One note can be a Swiss poster. The next can be a quiet book page. The frontmatter is the lever.

3. Themes you compose

A theme is just a snippet — a note with colors, fonts, and rhythm defined in CSS variables. Apply it to any note with theme: my-theme in frontmatter. In Obsidian, you can also use cssclasses: [my-theme] for local preview — but only the theme: field carries over to the web.

We ship over 30 built-in themes to start from — forestbookkernelswisseditorialbaroquemonoavantgarde, and many more. Each one a different voice for your words.


The tokens

The Standard design system uses CSS custom properties as its backbone. These tokens are shared between Obsidian and the web — same names, same behavior, same result.

Typography

Token What it controls Example
--font-text Body typeface "Literata"
--font-header Heading typeface "Inter"
--font-monospace Code blocks "Berkeley Mono"
--font-interface UI elements "System-UI"
--font-header-weight Heading boldness 800
--font-header-letter-spacing Heading tracking -0.02em
--font-header-line-height Heading leading 1.1em
--font-weight Body text weight 400
--font-weight-bold Bold text weight 700
--font-feature OpenType features "liga", "kern"
--optical-ratio Modular type scale 1.33
--font-density Line height multiplier 1.5

Colors

Light and dark palettes are defined separately — the system switches automatically based on the reader’s preference.

Token What it controls
--color-light-background Page background (light)
--color-light-foreground Text color (light)
--color-light-accent Links, emphasis (light)
--color-dark-background Page background (dark)
--color-dark-foreground Text color (dark)
--color-dark-accent Links, emphasis (dark)
--color-bold Bold text color
--color-italic Italic text color
--color-header Heading color

Plus a full chromatic palette — redorangeyellowgreencyanbluepurplepink — in both light and dark variants.


Publish what you see

When you publish a note to Standard Garden, the plugin doesn’t just send your markdown. It sends your intent — the frontmatter tokens, the theme, the CSS you composed. The web renderer reads the same variables and produces the same result.

Obsidian (your vault)                Standard Garden (the web)
━━━━━━━━━━━━━━━━━━━                  ━━━━━━━━━━━━━━━━━━━━━━━━
font-header: "Inter"     ──────►     style="--font-header: Inter"
theme: forest            ──────►     data-theme="forest"
cssclasses: [apex]       ──────►     (local only — Obsidian snippet loader)
@stnd design system      ──────►     @stnd design system

Three layers, same cascade:

  1. @stnd/styles — The base design tokens (:root defaults)
  2. Theme — A named set of overrides ([data-theme="forest"])
  3. Frontmatter — Per-note inline overrides (highest specificity)

Your frontmatter says font-header: "Bricolage Grotesque". Your vault renders --font-header: "Bricolage Grotesque". The published page renders --font-header: "Bricolage Grotesque". Same key. Same value. No translation layer. No surprises.


Making a theme

A theme starts as a note. Open a new file. Add a CSS code block. Start setting variables.

Here’s a complete theme in 20 lines:

---
stnd: true
cssclasses: []
---

```css
body {
    --color-light-foreground: oklch(0.39 0.05 67);
    --color-light-background: #f7f3ee;
    --color-light-accent: var(--color-yellow);
    --color-dark-background: #231e1a;
    --color-dark-foreground: #dcc7b2;
    --color-dark-accent: var(--color-yellow);

    --font-text: "Forrest";
    --font-header: "Forrest";
    --font-header-weight: 800;
    --font-header-letter-spacing: 0em;
    --optical-ratio: 1.5;
    --font-density: 1.8;
}
```

Apply it by adding theme: your-theme-name to any note’s frontmatter. You can also add cssclasses: [your-theme-name] to preview it locally in Obsidian. Iterate in real time — change a value, see it instantly. When it feels right, publish. The theme: field ensures the web version inherits everything.

You don’t need to be a developer. You need taste.


Getting started

Install

Copy the plugin files into your vault:

.obsidian/plugins/standard/
├── main.js
├── manifest.json
└── styles.css

Enable it in Settings → Community Plugins.

Connect

  1. Get your API key from your Standard Garden account
  2. Paste it in Settings → Standard → API Key
  3. The plugin verifies it and shows your username

Publish

Use the command palette or the ribbon icons:

Wiki-links and local images are resolved and uploaded automatically. Your note goes live at:

standard.garden/@username/your-note-title

Set a theme

Add theme: forest to your frontmatter — or any of the 30+ built-in themes. Or build your own. The choice is always yours.


Philosophy

Most publishing tools treat the writing tool and the publishing tool as separate worlds. You write in one place, you configure the look somewhere else, and you hope the output matches.

We think that’s backwards.

Your vault is not a drafting table. It is the publication. The fonts you chose, the colors you picked, the spacing you adjusted — that’s not decoration. That’s voice. And voice should survive the journey from your screen to your reader’s screen.

Standard Garden exists so that the web can look like the thing you already made. Nothing more. Nothing less.

Write beautifully. Publish faithfully.

Are you absolutely sure?

This action cannot be undone.