Rich Table

approved

by sdking

Rich tables with merges, styles, and choice columns, wikilinks inside fenced code blocks. - This plugin has not been manually reviewed by Obsidian staff.

โ˜… 12 starsโ†“ 1,222 downloadsUpdated 8d agoAGPL-3.0
Rich Table

๐Ÿ”€ Merge ย ยทย  ๐ŸŽจ Style ย ยทย  ๐Ÿท๏ธ Type ย ยทย  ๐Ÿ”— Wikilink ย ยทย  โ†•๏ธ Reorder ย ยทย  โ†”๏ธ Resize ย ยทย  ๐Ÿ“ Math ย ยทย  ๐Ÿ“‹ Lists

Latest release Total downloads License Obsidian community plugin Donate via PayPal

Why? ยท Demo ยท Format ยท Features ยท Install ยท ไธญๆ–‡

WeChat public account
Follow on WeChat for more Obsidian plugins & tools

Obsidian only. The rich-table fenced code block is rendered by the plugin โ€” it won't display in standard Markdown editors or GitHub previews.

Rich, interactive tables for Obsidian โ€” with cell merges, inline editing, wikilink autocomplete, typed columns, drag-to-reorder, math formulas, lists, images, and more.


Why Rich Table?

FeatureNative tablesRich Table
Cell mergingโœ—โœ“
Click-to-edit cells inlineโœ—โœ“
[[wikilink]] autocomplete in cellsโœ—โœ“
Math formulas (KaTeX) in cellsโœ—โœ“
Lists, bold, italic, links, images in cellsโœ—โœ“
Multi-line cell contentโœ—โœ“
Typed columns (status, priorityโ€ฆ)โœ—โœ“
Per-cell style (bg color, font sizeโ€ฆ)โœ—โœ“
Column alignment (left / center / right)โœ—โœ“
Table title & footer notesโœ—โœ“
Drag to reorder rows / columnsโœ—โœ“
Drag to resize column width / row heightโœ—โœ“
Insert / hide / delete rows & columnsโœ—โœ“
Row filtering by valueโœ—โœ“
Per-table lockโœ—โœ“

Demo

โฌ†๏ธ Upgrading from v0.x? โ€” v1 โ†’ v2 migration: the upgrade banner on old-format tables, converting in one click or keeping the old format read-only.

Upgrade 1 ยท Quick start from template โ€” or a blank table

An empty rich-table code block shows one button per built-in template (currently a full-featured Demo and a Cornell Notes layout) plus Insert blank table, which opens a Word/Sheets-style size picker โ€” hover an 8ร—6 grid to preview and click to confirm a row/column count, or type exact numbers for anything past the visible grid. Hovering any button live-previews that option below; with nothing hovered, the default template previews. Templates are auto-discovered from src/templates/*.yaml (same pattern as themes) โ€” no code changes needed to add one.

Quick start demo

2 ยท Merge cells โ€” drag-select โ†’ Merge in popup

Merge cells demo

3 ยท Typed columns & cell style โ€” click to pick value, double-click to set style

Typed columns and style demo

4 ยท Drag to reorder & row/column ops โ€” โ ฟ handle + double-click menu

Reorder and ops demo

5 ยท Drag to resize โ€” column header right edge ยท row bottom edge

Resize demo

6 ยท Title & footer โ€” click to edit, Shift+Enter for multi-line

Title and footer demo

7 ยท Column filtering โ€” filter rows to focus on what matters

Column filtering demo

8 ยท Rich cell content โ€” math ยท bold/italic ยท links ยท images ยท lists ยท multi-line

๐ŸŽฌ Demo GIF coming soon

9 ยท Copy/paste interop with Excel & Markdown โ€” paste values pasted from Excel/Sheets straight into a cell (detected via clipboard HTML); copy a selection out as an Excel-compatible table or as a Markdown table, from the selection/cell/header menus

๐ŸŽฌ Demo GIF coming soon

10 ยท Row sorting โ€” column selector popup: one-time sort or live auto-sort with a header indicator

่กŒๆŽ’ๅบ

11 ยท Summary/aggregate rows โ€” Sum/Average/Min/Max/Count via the ฮฃ icon or column selector popup; per-row remove and reorder

ๆฑ‡ๆ€ป่กŒ

12 ยท Collapse/expand table โ€” fold-icon button hides/shows the body while keeping the title and header row visible

่กจๆ ผๆŠ˜ๅ /ๅฑ•ๅผ€

13 ยท Table lock โ€” ๐Ÿ”’ icon disables all graphical editing for that table

่กจๆ ผ้”ๅฎš

14 ยท Auto-fit all โ€” โŠž icon fits every column width and row height to its content in one click

ไธ€้”ฎ่‡ช้€‚ๅบ”

15 ยท Theme picker โ€” ๐ŸŽจ icon switches between built-in themes (academic, grid, plain)

ไธป้ข˜ๅˆ‡ๆข

16 ยท Split cell โ€” double-click a plain cell โ†’ split into 2 rows/columns; other cells in that row/column keep their current shape

๐ŸŽฌ Demo GIF coming soon


Format

```rich-table
---
version: 2
title: Project tracker
columns:
  - id: c_000000
    name: Task
    width: 200
  - id: c_000001
    name: Status
    type: task-status
    width: 110
rows:
  - id: r_000000
    cells:
      c_000000: "**Design** โ€” architecture review"
      c_000001: done
  - id: r_000001
    cells:
      c_000000: Build
      c_000001: pending
  - id: r_000002
    cells:
      c_000000: |-
        - Write tests
        - Fix edge cases
      c_000001: todo
merges:
  - anchor: r_000000.c_000000
    end: r_000001.c_000000
styles:
  - target: header
    bold: true
    bg: "#e8f0fe"
  - target: r_000000.c_000001
    bg: "#f0fdf4"
footer: "Updated weekly ยท click any cell to edit"
---
<!-- Generated by Rich Table. Do not edit below โ€” data source is the YAML front-matter above. -->
| Task                          | Status  |
| ----------------------------- | ------- |
| **Design** โ€” architecture ... | done    |
| Build                         | pending |
| - Write tests<br>- Fix edge.. | todo    |
```

The YAML front-matter is the only data source. The pipe table below the <!-- Generated โ€ฆ --> comment is a read-only mirror regenerated on every write-back and can be safely ignored.

Cell content supports full Obsidian Markdown: **bold**, *italic*, [[wikilinks]], [links](url), ![images](url), - lists, $math$, <br> for line breaks.

Style targets (v2 ID-based):

TargetMeaning
headerEntire header row
header.c_xxxSingle header cell
r_xxxEntire data row
c_xxxEntire column (including header)
r_aaa:r_bbbRow range
c_aaa:c_bbbColumn range
r_aaa.c_aaa:r_bbb.c_bbbRectangle range
r_xxx.c_yyySingle data cell

Upgrading from v0.x? Tables written in the old format automatically show an upgrade banner. Click Convert to new format for one-click migration, or Keep old format to continue reading without converting.


Themes

Add theme: to the YAML front-matter to apply a built-in visual theme:

theme: academic   # LaTeX booktabs style โ€” three horizontal rules, no grid lines
theme: grid       # Excel "All Borders" style โ€” full grid, bold outer frame + header rule
theme: plain      # Colorful gradient header + animated border
ThemeDescription
(none)Default โ€” no special styling
academic ๐Ÿ“Inspired by LaTeX's booktabs package: toprule / midrule / bottomrule, no vertical lines, no cell backgrounds
grid ๐Ÿ”ฒFull grid on every cell, a bolder outer frame, and a bolder rule separating the header from the data
plain ๐Ÿ™‚Animated rainbow border, gradient header with breathing effect, cursor-reactive row glow

Themes are purely visual โ€” they never affect data or layout.

Quick customization without a theme: for a small tweak (not a full theme), set one of these CSS variables on .bt-render-root in an Obsidian CSS snippet โ€” no selectors needed:

VariableControlsDefault
--bt-border-outerTable's outer edgenone
--bt-cell-border (+ -top/-right/-bottom/-left)Gridlines between cellsnone
--bt-cell-bgData cell backgroundtransparent
--bt-header-bgHeader cell backgroundtheme default
.bt-render-root {
  --bt-header-bg: #223;
  --bt-cell-bg: #fafafa;
  --bt-border-outer: 2px solid #888;
}

A manually-set per-cell style (via the style panel) always wins over both themes and these variables.


Features & Roadmap

Feature
Editing
Single-click any cell to edit โ€” text, [[wikilinks]], bold, italicโœ…
[[ triggers Obsidian's native file & heading autocompleteโœ…
Shift+Enter for line breaks inside the cell editorโœ…
Double-click / right-click menu โ€” insert, delete, hide rows & columns; merge cells; set style; change column typeโœ…
Column alignment (left / center / right) โ€” in the double-click header menuโœ…
Keyboard navigation โ€” arrow keys between cells, Tab to advance๐Ÿ”œ
Paste values from Excel / Sheets โ€” Ctrl+V into a cell, detected via clipboard HTMLโœ…
Rich cell content
Math formulas โ€” inline KaTeX: $E=mc^2$โœ…
Full Markdown: bold, italic, ==highlight==, [[wikilinks]], external linksโœ…
Images โ€” inline ![](url) or ![[local.png]]; drag image edge to resizeโœ…
Lists โ€” lines starting with - render as compact bullet listsโœ…
Multi-line โ€” <br> tag or Shift+Enter in the editorโœ…
Typed columns
Colored pill badges; single-click to pick value from dropdownโœ…
Built-in types: task-status ยท priority ยท boolean ยท rating ยท effort ยท approvalโœ…
Custom types defined in Settings โ†’ Rich Tableโœ…
Row filtering โ€” funnel icon on each column header; click to open a checkbox panel and filter by valueโœ…
Filter status bar โ€” "Showing X of Y ยท Clear" unified with sort / aggregate info๐Ÿ”œ
Row sorting โ€” via the column selector's popup menu: one-time (reorders rows once) or live (auto-sorts, shown by an indicator until cleared)โœ…
Summary rows โ€” Sum / Average / Min / Max / Count, table-wide (toggle via the ฮฃ icon in the left control column, or the column selector's popup menu); one row per active statistic at the table's bottom, computed over currently-visible rows, columns without meaningful data left blank. Each summary row gets its own selector cell (remove) and drag grip (reorder)โœ…
Custom formulas โ€” type Excel-style syntax (=SUM(A1:B3)); cell references get converted to this table's own stable row/column IDs on entry, so they survive inserts/reorders instead of drifting like raw A1 coordinates would. Same-sheet first; cross-sheet references are a separate, later phase๐Ÿ”œ
Styles
Per-cell bg color, text color, and font size โ€” via panel or YAMLโœ…
Row / column selector strips โ€” hover to reveal, click or drag to style entire rows/columnsโœ…
Per-table lock โ€” click the ๐Ÿ”’ icon at the top-left corner to disable / re-enable all editingโœ…
Themes โ€” set theme: academic (booktabs), theme: grid (full grid + bold outer/header rules), theme: plain (colorful gradient + animated border)โœ…
Custom cell padding (top / bottom / left / right)๐Ÿ”œ
Collapsible table โ€” fold-icon button in the top-left corner shows/hides the table body, keeping the title and header row visibleโœ…
Conditional formatting โ€” auto-apply styles based on cell value rules๐Ÿ”œ
Progress bar column type๐Ÿ”œ
Merges
Cell merging โ€” drag-select โ†’ Merge in popup, or declare in YAMLโœ…
Split a plain cell into 2 rows or 2 columns โ€” double-click menu; other cells in that row/column keep their current shape (merged or not)โœ…
Copy selection to Excel / Sheets or as a Markdown table โ€” selection/cell/header menusโœ…
Merge / style state preserved when copying to Excel๐Ÿ”œ
Table structure
Hover selector strips to reveal โ ฟ drag grips; drag to reorder rows / columnsโœ…
Hover selector strips to reveal resize seams; drag to resize, double-click to auto-fitโœ…
Auto-fit-all button (top-left โŠž) โ€” one click to auto-fit every column and rowโœ…
Hover bottom / right edge โ†’ + strips to append rows / columnsโœ…
Hide and show rows / columnsโœ…
Freeze header row / first N columns๐Ÿ”œ
Row grouping โ€” collapsible groups๐Ÿ”œ
Views โ€” alternate ways to browse the same rows/columns, switched via the layout-grid icon (or a Kanban/Calendar board's own icon column)
Kanban board โ€” group rows into lanes by any choice-typed column; drag a card to another lane to change its valueโœ…
Calendar โ€” place rows on a month grid by any date-typed column; drag an event to reschedule it, undated rows list in an Unscheduled tray belowโœ…
Multi-sheet โ€” Excel-style tab bar at the bottom once a table has 2+ sheets
Left-toolbar button converts a single-sheet table into a multi-sheet workbook; each sheet has its own columns/rows/merges/styles/viewsโœ…
Tabs: click to switch, click-again/double-click to rename, drag to reorder, right-click for rename / tab color / deleteโœ…
Title & annotations
Table title above, footer notes below โ€” click to edit inlineโœ…
Cell comments โ€” floating notes shown on hover๐Ÿ”œ
Excel interop
Open/edit an external .xlsx file directly (e.g. excel: path/to/file.xlsx in the front matter) โ€” same editing UI as a normal code-block table, backed by the actual spreadsheet file๐Ÿ”œ

Known Issues

IssueWorkaround
Reading mode: v2 tables remain interactive โ€” In Obsidian reading view, v2-format tables still show hover strips and allow editing. The allowReadingViewEdit setting has no effect on v2 tables. v1 tables (awaiting upgrade) are correctly read-only.Use the ๐Ÿ”’ lock button to prevent accidental edits in reading mode.

Installation

Community plugin browser (recommended):

  1. Open Settings โ†’ Community plugins โ†’ Browse
  2. Search for Rich Table and install
  3. Enable the plugin

Or: Open in Obsidian

Manual: copy main.js, manifest.json, styles.css to <vault>/.obsidian/plugins/rich-table/

Minimum Obsidian version: 1.8.7


Settings

Open Settings โ†’ Rich Table to configure the plugin.

SettingDefaultDescription
Allow editing in reading viewOffWhen off, all interactive behaviour (hover strips, click-to-edit, panels, dropdowns) is disabled in Obsidian's reading view. Live preview / source mode is always interactive.
Single-click to editOffWhen on, a single click on a cell enters edit mode immediately (no delay), and the style panel opens with Ctrl/Cmd+click instead of double-click. When off (default), single click enters edit after a short delay and double click opens the style panel.
Custom typesโ€”Define custom choice-column types with labels and colors.

Claude Code Skill

A SKILL.md is included for use with Claude Code. Once installed, Claude agents can create and modify rich-table blocks directly in your vault โ€” adding rows, applying styles, defining merges โ€” without you having to remember the syntax.

cp SKILL.md ~/.claude/skills/rich-table/SKILL.md

Then ask Claude: "Create a project tracker table in my note using rich-table".


License

AGPL-3.0 โ€” derivatives must be open-sourced under the same license.

For commercial licensing: sdkxyx@gmail.com

Support the Project

Rich Table is free and open-source under the AGPL-3.0 license. If this plugin has improved your workflow, you can support its ongoing development with a voluntary donation. Every contribution helps fix bugs, add new features, and maintain compatibility with future Obsidian updates.

๐Ÿ’ณ PayPal

Donate via PayPal

๐Ÿงง WeChat Pay / Alipay

WeChat PayAlipay
WeChat Pay donation QR codeAlipay donation QR code

Thank you for your support! ๐Ÿ™

Feedback

Issues and feature requests: GitHub Issues


Star History Chart

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.