New in 1.1 accessibility checks in the theme report

Theme Lab — build Obsidian themes from inside the app.

Theme Lab: build Obsidian themes from inside the app — the inspector panel with scratch CSS and variables

Four tools, one panel

Everything a theme author does by hand, done by the plugin — and written into your vault as notes and images.

Inspect element

Click anything. Get the DOM path, the pruned HTML, the computed values, and every matching rule with specificity and origin — with a ★ on the declaration that actually won each property. "Why didn't my rule apply?" in one click.

Screenshot matrix

Dark and light × Reading, Live Preview, Source × sidebars open and closed, at the top of the note and every H2, paging through long sections. Then fourteen chrome captures per scheme: settings, palette, switcher, menus, tooltips, hover, preview, search, sidebar, graph, notice.

Contact sheets

A hundred captures become a dozen labelled sheets you can actually review — one per combination, an overview, one for the chrome. Each capture also gets a 1200×800 listing crop and a 1920-wide hero.

Showcase note

Every Markdown feature a theme has to style: properties, inline formatting, six headings, lists and tasks with custom states, all thirteen callouts plus the odd ones, code, tables, embeds, math, Mermaid, footnotes — and a checklist of the chrome.

Theme report

The lint the community review runs, WCAG contrast for both schemes side by side, every declared variable with its dark and light value, variables set in one scheme only, and the Obsidian classes on screen the theme never mentions.

Scratch CSS and diffs

Try CSS live in the panel. Run the matrix with Scratch A/B to get a pixel-diff sheet of what changed, or compare any two runs. Then append it to theme.css with one button.

What it looks like

Built with Obsidian's own components, so it follows whatever theme is active — including the one you're building.

The Theme Lab panel: toolbar, inspector, scratch CSS, variables, runs
The panel — inspector, scratch CSS, variable watch, runs.
The capture matrix dialog with presets and toggles
The matrix dialog — presets, toggles, a live estimate.
A theme report note
A theme report — summary, lint, contrast side by side.
An overview contact sheet: the same note in dark and light

Workflow

The loop, without the reloading and squinting.

  1. Showcase Create the showcase note and read it once in each view. It's the checklist.
  2. Capture Run the matrix with a preset. Open Matrix.md in the run folder and look at the sheets.
  3. Inspect When something's wrong, click it. The panel shows which rule won and why.
  4. Fix Write the change in Scratch CSS, watch it apply, re-run with Scratch A/B to see the diff, append to theme.css.
  5. Report Before a release, write the report and clear the Lint section.
Reviewing with someone else? Send the contact sheets, never individual shots. Fourteen sheets cover a full review.
Open panel
Create or open the showcase note
Capture screenshot matrixpresets: Full review · Quick check · Editor pass · Chrome only · Artwork
Inspect elementclick to copy a CSS report
Write theme reportvariables, contrast, lint
Compare latest matrix run with the previous one
Capture one screenshot now
Toggle dark/light scheme

Install

From the community list, or three files by hand.

  1. Community plugins Settings → Community plugins → Browse → search "Theme Lab".
  2. Manual Download main.js, styles.css and manifest.json from the latest release into .obsidian/plugins/theme-lab/, then enable it.
Desktop only. Screenshots use Electron's capturePage, and real pointer and right-click events make hover states and menus appear. Nothing leaves your machine.
.obsidian/
  plugins/
    theme-lab/
      main.js
      styles.css
      manifest.json

Theme Lab/                 in your vault
  Glow/
    2026-09-12 194652/
      Matrix.md
      sheets/
      shots/
    Report 2026-09-12 …md

Changelog

Bare version numbers as tags; releases are built by the workflow.

1.0.12026-09-13
  • Review fixes: manifest description reworded, no !important in the stylesheet.
1.0.02026-09-12
  • Inspect element with the winning declaration per property.
  • Screenshot matrix with section paging, fourteen chrome captures per scheme, and labelled contact sheets.
  • Showcase note covering every Markdown feature and the chrome checklist.
  • Theme report: lint, side-by-side contrast, variables in both schemes, unreferenced classes.
  • Panel with Scratch CSS, Scratch A/B diffs and run comparison.

More from Real-Fruit-Snacks

The themes were built with this plugin.