Skip to content

A shared fenced Markdown format that renders as accessible, theme-native tabs in Obsidian and Quartz.

Obsidian API · Quartz · TypeScript · Markdown · CSS

About

Tabsdown turns fenced Markdown into tabs in Obsidian and Quartz. Both integrations share the same content format, so a vault can use interactive tabs while editing and publish those blocks without rewriting them for the website.

Tab bodies continue through each host's Markdown renderer. Links, embeds, callouts, math, diagrams, highlighted code, and compatible plugin blocks therefore behave like the same content outside a tab set.

Tabsdown in Obsidian with Overview, Timeline, and Resources tabs and a nested weekly tab set
Tabsdown demo with illustrative workspace content.

Highlights

  • Works in Obsidian Reading View and Live Preview on desktop and mobile.
  • Supports nested tab sets, Lucide icons, limited label formatting, four tab-list positions, wrapping, density, and appearance options.
  • Keeps the original source readable when the plugin is inactive or the note is opened elsewhere.
  • Quartz emits every labelled panel as readable HTML before JavaScript adds tab behavior.
  • Pointer, touch, arrow-key, Home, and End navigation are supported.

How it works

Each block needs at least two non-empty, unique tab: labels. Optional configuration appears before the first tab.

~~~tabsdown
tab: Notes
Plain Markdown content
 
tab: Example
`code` and other Markdown
~~~

In Obsidian, the plugin delegates bodies to Obsidian's renderer. In Quartz, the transformer runs before Obsidian Flavored Markdown, inserts each body into the syntax tree, and lets later transformers process it normally. Malformed blocks retain their source and show a diagnostic instead of silently dropping content.

Project details

  • Platforms: Obsidian and Quartz
  • Rendering: Reading View through Obsidian's Markdown renderer
  • License: MIT for the Obsidian plugin