Skip to content

Tables in Obsidian and Notion: Formatting, Plugins and Formulas

By MarkdownTables.com editorial teamUpdated

On this page

How do I make a table in Obsidian?

Obsidian uses the GitHub-style pipe syntax described in the Markdown table syntax guide: a header row, a delimiter row of hyphens, then one line per row. You can also run Insert table from the command palette, or right-click in the editor and choose Insert → Table, to get an empty table to fill in.

A project tracker table for an Obsidian note
Markdown
| Project            | Owner   | Due        | Status      |
| :----------------- | :------ | :--------- | :---------- |
| Website redesign   | Priya   | 2026-11-03 | In progress |
| Q4 planning        | Marcus  | 2026-10-24 | Done        |
| Customer interviews| Lena    | 2026-12-01 | Not started |
Preview
ProjectOwnerDueStatus
Website redesignPriya2026-11-03In progress
Q4 planningMarcus2026-10-24Done
Customer interviewsLena2026-12-01Not started

Outer pipes are optional in Obsidian, but its help recommends them for readability. Its docs also ask for at least two hyphens per delimiter cell; three works everywhere.

Open in editor : A project tracker table for an Obsidian note

Editing tables in Live Preview

In Live Preview, the table renders as a grid you can type into. Right-click a cell to add or delete rows and columns, move them, sort by a column, and set a column's alignment. Obsidian rewrites the Markdown source for you, so the file stays a plain pipe table. Switch to Source mode when you need to see or fix the raw pipes.

For keyboard-driven editing in Source mode, the community plugin Advanced Tables pads the columns as you type, moves between cells with Tab / Shift+Tab, adds a row with Enter, and adds commands for sorting, moving columns, alignment, CSV export and formulas.

Internal links, embeds, tags and inline formatting all work in cells. The catch is the pipe that Obsidian uses for link aliases and image sizes: inside a table it ends the cell. Escape it with a backslash.

Broken: the alias pipe splits the cell
Markdown
| Note                              | Topic   |
| --------------------------------- | ------- |
| [[Meeting 2026-10-02|Kickoff]]    | Roadmap |
Preview
NoteTopicColumn 3
[[Meeting 2026-10-02Kickoff]]Roadmap

The row gets an extra cell: the link breaks, “Kickoff]]” lands in the Topic column and “Roadmap” is dropped.

Fixed: [[Note\|Alias]]
Markdown
| Note                               | Topic   |
| ---------------------------------- | ------- |
| [[Meeting 2026-10-02\|Kickoff]]    | Roadmap |
Preview
NoteTopic
[[Meeting 2026-10-02|Kickoff]]Roadmap

Obsidian renders the link as “Kickoff”. Use the same escape for image sizes: ![[diagram.png\|300]].

Open in editor : Fixed: [[Note\|Alias]]

Line breaks need <br>; a Markdown list or a second paragraph can't go in a cell. More options are in line breaks in tables and escaping pipes.

Bulleted lines in a cell with • and <br>
Markdown
| Meeting   | Action items                          |
| --------- | ------------------------------------- |
| Kickoff   | • Draft scope<br>• Book design review |
| Retro     | None                                  |
Preview
MeetingAction items
Kickoff• Draft scope
• Book design review
RetroNone

Obsidian table options compared

“Table” in Obsidian can mean four different things. Choose by whether you type the data or it comes from your notes' properties:

Ways to make a table in Obsidian
OptionWhat it isFormulasBest for
Markdown pipe tableBuilt-in; plain text in the noteNoSmall hand-written tables; portable to GitHub, VS Code, Notion
Advanced Tables pluginEditor helper for pipe tablesYes, TBLFM commentsFast editing; totals and simple calculations
Bases (core, 1.9+)Database-like table view over note propertiesYes, formula propertiesTracking many notes: projects, books, contacts
Dataview pluginQuery language that renders tables from metadataExpressions in the queryRead-only reports across a vault
HTML <table>Raw HTML in the noteNoMerged cells, captions

Obsidian table formulas (Advanced Tables)

Obsidian has no spreadsheet formulas in Markdown tables. The Advanced Tables plugin adds them: write the formula in an HTML comment on the line directly under the table, then run the formula command (or the formulas button in its toolbar). The result is written into the cells as plain text, so the note stays readable anywhere.

Sum a column: last row, column 2 = sum of the body rows above
Markdown
| Item              | Grams |
| ----------------- | ----: |
| Bread flour       |   500 |
| Water             |   350 |
| Salt              |    10 |
| Starter           |   100 |
| **Total**         |   960 |
<!-- TBLFM: @>$2=sum(@I..@-1) -->

The <!-- TBLFM --> comment is invisible in reading view. Other apps show the stored result, not the formula.

Open in editor : Sum a column: last row, column 2 = sum of the body rows above
Advanced Tables formula references
ReferenceMeaning
@3 / $2Row 3 / column 2 (in the current column or row)
@3$2The single cell at row 3, column 2
@<, @>, $<, $>First row, last row, first column, last column
@IThe first body row under the header
@-1, $+2Relative: one row up, two columns right
@I..@-1Range from the first body row to the row above
sum(…), mean(…)Built-in functions; arithmetic goes in parentheses: ($2*$3)
;%.2fFormat the result with two decimals
Per-row arithmetic: column 4 = quantity × price
Markdown
| Item    | Qty | Price | Line total |
| ------- | --: | ----: | ---------: |
| Cables  |   3 |  4.50 |      13.50 |
| Adapter |   2 | 12.00 |      24.00 |
<!-- TBLFM: $4=($2*$3);%.2f -->
Preview
ItemQtyPriceLine total
Cables34.5013.50
Adapter212.0024.00

Formula syntax follows org-mode. See the plugin's formula docs for if() and multiple formulas joined with ::.

Open in editor : Per-row arithmetic: column 4 = quantity × price

Merging cells in Obsidian

Native Obsidian tables can't merge cells. You have two workable options:

  • HTML. Obsidian renders raw <table> markup with colspan and rowspan. It is reliable but you lose Live Preview table editing for that table.
  • Table Extended plugin. Put -tx- on the line before a table to use MultiMarkdown syntax: an empty cell marked with || joins the cell to its left, and ^^ joins a cell to the one above. It also supports captions and headerless tables. Its README notes a conflict with Advanced Tables auto-formatting, and it is a community plugin, so check it still loads in your Obsidian version.
Table Extended: column spans with ||Markdown
-tx-
|             | Q3 results               ||
| Region      | Revenue     | Growth     |
| ----------- | ----------: | ---------: |
| EMEA        | 1.2M        | 8%         |
| APAC        | Not reported            ||
The same table in HTMLHTML
<table>
  <tr><th>Region</th><th colspan="2">Q3 results</th></tr>
  <tr><td>EMEA</td><td>1.2M</td><td>8%</td></tr>
  <tr><td>APAC</td><td colspan="2">Not reported</td></tr>
</table>

More approaches, including Pandoc grid tables, are in the merged cells guide.

Tables from note properties: Bases and Dataview

If each row is really a note (a book, a project, a person), don't maintain a pipe table by hand. Put the values in each note's properties and let Obsidian build the table.

Bases is a core plugin (Obsidian 1.9 and later). A base is a .base file or a base code block that filters notes and shows them in a table view where each row is a note and each column a property. You can edit properties directly in cells, sort, group, add per-column summaries (sum, average, min, max, earliest date and more by right-clicking a header), and define formulas. Create one with Bases: Create new base in the command palette, or embed an existing base with ![[Projects.base]].

A base embedded in a noteYAML
```base
filters:
  and:
    - file.hasTag("project")
formulas:
  budget_left: '(budget - spent).toFixed(2)'
views:
  - type: table
    name: Active projects
    order:
      - file.name
      - note.status
      - note.due
      - formula.budget_left
```

Dataview is the older community-plugin approach. It reads frontmatter and inline fields and renders a read-only table from a query. Use it when you need its query language or already rely on it; prefer Bases when you want to edit values in the table.

Dataview TABLE queryDataview
```dataview
TABLE status, due, owner
FROM "Projects"
WHERE status != "done"
SORT due ASC
```

Neither Bases nor Dataview output is stored as a Markdown table, so it won't show up if you open the note on GitHub or in VS Code. To publish a snapshot, copy the rendered table and run it through HTML table to Markdown.

How do I import a Markdown table into Notion?

Notion is a block editor, not a Markdown editor, so it never keeps your pipes. There are two ways in:

  1. Paste. Copy the Markdown table (from Obsidian's Source mode, VS Code or this site) and paste it into a Notion page. Notion converts it to a simple table. If the first row isn't styled as a header, turn on Header row in the table's Options.
  2. Import. Go to Settings → Import → Text & Markdown and upload the .md file. Tables in the file become simple tables on the new page.

If a paste lands as plain text with pipes, the table usually isn't valid: check that the delimiter row has the same number of cells as the header with the table validator. If your data is in a spreadsheet, import it as CSV instead; Notion creates a database from a CSV.

Notion simple table vs. database

Notion simple table vs. database
FeatureSimple table (`/table`)Database (table view)
Created fromMarkdown paste or import, /tableCSV import, /table view, Turn into database
CellsRich textTyped properties (number, date, select, person…)
Merge cellsYes (select cells, Merge cells)No
Sort and filterNoYes, saved per view
Formulas and totalsNoFormula properties; calculations under each column
Each row is a pageNoYes
Export (Markdown & CSV)With the page’s Markdown fileCSV file, plus a Markdown file per row page

To upgrade, open the simple table's menu and choose Turn into database. Converting a database back to a simple table may be refused when it uses things a simple table can't hold, such as formula or relation properties.

Notion table formulas

Formulas exist only in databases. Add a property of type Formula and reference other columns with prop("Name"):

Line total with a guard for empty quantitiesNotion formula
if(prop("Qty") > 0, prop("Qty") * prop("Price"), 0)

For a column total, use the calculation menu at the bottom of a table view column (Sum, Average, Min, Max and more) rather than a formula. Simple tables have neither, which is the most common reason to convert one.

Getting tables out of Notion as Markdown

Use Export → Markdown & CSV on the page. Notion's docs say full-page databases export as a CSV file with a Markdown file for each row page; turn the CSV into a pipe table with the CSV to Markdown converter. Merged cells, colors and header toggles have no Markdown equivalent, so check exported tables before committing them anywhere. For a quick one-off, copy the table in Notion and paste it into the HTML to Markdown converter.

Obsidian vs. Notion table features

Table features in Obsidian and Notion
PlatformMarkdown pipe tablesVisual editingFormulasMerged cellsSort and filter
ObsidianPlain .md files; the table source is what you see in Source mode.Yes: NativeYes: Live Preview context menuPartly: Advanced Tables plugin; Bases formulasPartly: HTML or Table Extended pluginPartly: Sort in context menu; Bases, Dataview
NotionBlock editor; Markdown is converted on paste or import.Partly: Converted to a simple tableYes: NativePartly: Databases onlyYes: Simple tables: Merge cellsPartly: Databases only

✅ supported · ⚠️ partly or with a workaround · ❌ not supported · Last verified October 2026

Obsidian features marked as plugins need a community plugin; Bases is a core plugin in Obsidian 1.9+.

If notes move between the two apps, keep tables simple: no merged cells, no colors, one line per cell. Those survive in both directions and also render on GitHub and in VS Code.

Common mistakes and fixes

  • Unescaped alias pipes. [[Note|Alias]] in a cell adds a column. Write [[Note\|Alias]].
  • No blank line before the table. A table directly under a paragraph or list may not render. Leave an empty line above it.
  • Formulas that don't update. Advanced Tables formulas run only when you evaluate them; they are not live like a spreadsheet. Re-run the formula command after editing values.
  • Table Extended plus Advanced Tables. Auto-formatting can rewrite -tx- tables. Turn formatting off for those notes or use HTML.
  • Expecting formulas in a Notion simple table. Convert it to a database first.
  • Pasting Notion tables into Obsidian. The clipboard may hold HTML or tab-separated text rather than Markdown. Convert it with the table to Markdown converter, then tidy the source with the table formatter.

Build a table for Obsidian or Notion

Frequently asked questions

How do I format a table in Obsidian?

Type a pipe table: | Name | Status |, then | --- | --- |, then one row per line. In Live Preview, right-click the table to add, delete, move or sort rows and columns and to set alignment. Install the Advanced Tables plugin if you want the source auto-padded as you type.

How do I put a wikilink with an alias in an Obsidian table?

Escape the pipe in the alias: [[Note name\|Alias]]. The same applies to resized image embeds: ![[photo.png\|200]]. Without the backslash, the pipe splits the cell and the link breaks.

Can you merge cells in an Obsidian table?

Not with native pipe tables. Use an HTML <table> with colspan or rowspan, or a community plugin such as Table Extended, which adds MultiMarkdown-style spans (||) to tables that start with a -tx- line.

Does Obsidian support formulas in tables?

Not natively in Markdown tables. The Advanced Tables plugin evaluates formulas written in a <!-- TBLFM: ... --> comment under the table, such as @>$2=sum(@I..@-1). Bases (Obsidian 1.9+) supports formulas over note properties in its table view.

How do I import a Markdown table into Notion?

Paste the Markdown table into a page, or import the .md file under Settings, then Import, then Text & Markdown. Notion turns it into a simple table. To sort, filter or use formulas, open the table menu and choose Turn into database.

What is the difference between a Notion table and a database?

A simple table (/table) is plain text in a grid, with optional header row and column and merged cells. A database adds typed properties, sorting, filtering, multiple views, a page per row, relations, rollups and formulas.

Can I use formulas in a Notion table?

Only in a database. Add a Formula property and write an expression such as prop("Qty") * prop("Price"). Simple tables have no formulas or totals; convert one with Turn into database first.

How do I export a Notion table to Markdown?

Export the page as Markdown & CSV. Full-page databases come out as CSV files with a Markdown file per row page; convert the CSV with a CSV to Markdown converter. Merged cells and colors have no Markdown equivalent and are lost.

Related guides: GitHub README tables, tables in VS Code and fixing a table that won't render.