Jakimcikas70 downloadsSide-by-side columns you can edit directly in Live Preview.
Side-by-side columns in Obsidian that you can edit directly in Live Preview, not only in Reading mode.
Each column is shown as a rendered card. Click one (or arrow into it) and it turns into a real Obsidian editor, with formatting, links, autocomplete and hotkeys. Click away and it goes back to the rendered card.

The quickest way is the command palette:
An empty block is inserted, and the cursor goes into the first column so you can start typing. If the cursor was mid-line, the block starts on a new line, and selected text is replaced.
To insert columns without the palette, assign a shortcut in Settings → Hotkeys (search for "Insert columns").
The block is plain Markdown, so you can also type it yourself:
```columns
Left column with **markdown**, [[links]] and lists
+++
Right column
```
+++ on its own line separates the columns. Without the plugin installed, this is still a plain code block, so your notes stay readable.
Columns are borderless by default. To add borders:
Every note: Settings → Column Flow → Bordered columns.
One note: add cf-bordered to the note's cssclasses in the frontmatter:
---
cssclasses: cf-bordered
---
For anything else, add a CSS snippet: create a .css file in <vault>/.obsidian/snippets/ and enable it in Settings → Appearance → CSS snippets. These are the classes you can target:
| Class | Element |
|---|---|
.cf-columns |
The grid holding the columns |
.cf-column |
One column |
.cf-column.is-editing |
The column being edited |
.cf-bordered |
Added to the page when Bordered columns is on |
Examples:
/* More space between columns */
.cf-columns { gap: 2rem; }
/* First column twice as wide as the others */
.cf-columns { grid-template-columns: 2fr 1fr; }
/* A thin divider line between columns instead of borders */
.cf-column + .cf-column { border-left: 1px solid var(--background-modifier-border); border-radius: 0; }
/* No highlight on hover or while editing */
.cf-column:hover,
.cf-column.is-editing { background: none; }
To style only some notes, put a class of your own in front of the selector and add that class to those notes' cssclasses. For example, .wide-left .cf-columns { grid-template-columns: 2fr 1fr; } with cssclasses: wide-left.
If a rule doesn't take effect, put body in front of it (for example body .cf-columns { … }) so it overrides the plugin's own styles.
On narrow screens (under 600px wide), columns stack vertically.
Column Flow is JavaScript that runs inside Obsidian, like any other plugin. It doesn't start a separate process and doesn't use the network. It adds an extension to Obsidian's editor that listens for changes to the note you're editing:
columns block, the extension draws it as columns instead of a code block.From Obsidian: Settings → Community plugins → Browse, search for Column Flow, then install and enable it.
From GitHub:
main.js, manifest.json and styles.css from the latest release.<vault>/.obsidian/plugins/column-flow/.Alternatively, install the BRAT plugin and add Jakimcikas/obsidian-column-flow. BRAT also keeps the plugin updated.
Requires Obsidian 1.13 or later.
npm install
npm run dev # rebuild on change
node parse.test.ts # parser self-check
npm run lint # the same lint rules Obsidian's plugin directory checks
Releasing: bump version in manifest.json, package.json and versions.json, add release-notes/<version>.md, commit, then push a tag with the same version (git tag 0.1.2 && git push origin 0.1.2). GitHub Actions builds the plugin, attests the files and publishes the release.
The in-place column editors use Obsidian's internal markdown editor class (the same approach as the Kanban plugin). That API isn't public, so an Obsidian update could break it.
MIT