zeit105 downloadsEdit and read Org-mode files with Obsidian-quality live preview and reading view.
English | 中文 · GitHub · Latest release
Org Live opens, edits and reads .org files natively in Obsidian, with the same live-preview feel as Obsidian's Markdown editor. It does not ship a separate design system: it reuses Obsidian's own Markdown/CM6 classes, so the active theme styles headings, code, tags, tables and links the same way.

.org file type — the plugin registers the extension itself. No UNITADE or other extension-owner plugin is required.#+KEYWORD metadata, tables, source/quote/example/center/verse blocks, comments, fixed-width text and rules.#+TODO: / #+SEQ_TODO: / #+TYP_TODO:. Fast-access declarations such as TODO(t), WAIT(w@/!) and DONE(d!) are supported. Built-in keywords remain available.$...$ / $$...$$, LaTeX \(...\) / \[...\], and bare display environments (\begin{align}, equation, gather, multline, alignat, eqnarray), including multi-line blocks. Edit the raw lines by placing the cursor inside; move away to render again.#+BEGIN_SRC / #+END_SRC and quote/example/center/verse/comment/export blocks from an inline chevron. Ctrl/Cmd-Shift-[ and ] also fold/unfold. Editing and undo never alter the document.isDesktopOnly: false, native selection on iOS, safe-area/toolbar padding, larger TODO badges, touch-sized checkboxes, horizontally scrollable tables and Markdown-style code wrapping.:中文:测试:), custom Chinese TODO keywords (#+TODO: 待办 | 完成), CJK emphasis boundaries.| Org | Reused Obsidian / Markdown structure |
|---|---|
| Headline level N | HyperMD-header-N, cm-header-N |
| Bold / italic / strike / inline code | cm-strong, cm-em, cm-strikethrough, cm-inline-code |
| Links | cm-hmd-internal-link, cm-link + cm-underline |
| Lists / checkboxes | HyperMD-list-line-N, cm-list-N, list-bullet, task-list-item-checkbox |
| Quote | HyperMD-quote, cm-quote |
| Source block | HyperMD-codeblock, code-block-flair, Prism token classes |
| Table | cm-embed-block cm-table-widget markdown-rendered |
| Tags | cm-hashtag / <a class="tag">#tag</a> in reading view |
| Math | Obsidian renderMath + MathJax |
| Reading view | .markdown-preview-view.markdown-rendered, inline-title |
Org-only concepts (TODO, priority, planning, drawers/metadata cards, timestamps, fixed-width, comments) use small styles built on theme variables.
.org files.The directory reads the latest GitHub release automatically. If the built-in browser has not synced yet, restart Obsidian or use BRAT/manual install below. Requires Obsidian 1.13.0+.
zzeitt/obsidian-org-live
On mobile you can also open this URI: obsidian://brat?plugin=zzeitt/obsidian-org-live.org files (for example Orgmode cm6). Only one plugin can own an extension; Org Live registers .org itself, so UNITADE is not needed.Requires Obsidian 1.13.0+ (declarative settings APIs). iOS/Android are supported.
Org Live is listed in the community directory:
https://community.obsidian.md/plugins/org-live. The directory page and
Obsidian's built-in browser can lag behind a new release; the listing updates
from GitHub releases. See
docs/community-submission.md for details.
Copy main.js, manifest.json and styles.css into:
<vault>/.obsidian/plugins/org-live/
Then enable Org Live and disable conflicting .org plugins.
The view is a TextFileView with an embedded CodeMirror 6 editor, which works on Obsidian mobile:
safe-area-inset-bottom and the mobile toolbar height.Verified with a 390×844 viewport emulation and mobile CSS. An actual iOS device check is still recommended; the screenshots are in shots/mobile-*.png.

Settings → Org Live → Interface language:
The whole settings page, the reading-view action label and the three commands are localized. Changing the language updates the current session immediately.
| English | 中文 |
|---|---|
![]() |
![]() |
.org file in the file explorer.Org Live: Toggle reading viewOrg Live: Cycle TODO stateOrg Live: Enter live previewactive1 active2 | done1 done2; file-level #+TODO: also works)#+KEYWORD metadataYou can bind Toggle reading view to the same shortcut you use for Markdown reading view (often Ctrl/Cmd+E).


The Outline bridge is a compatibility layer: the core outline view currently
filters out non-Markdown files, and there is no public API for injecting
headings. Org Live wraps getHeadings/update on the outline view instance,
only answers for .org files, delegates everything else to the original
methods, and restores them on unload. If a future Obsidian release changes
those internals, the bridge becomes a no-op rather than breaking Markdown
outlines.
test/writeup-redacted.org is a realistic engineering-review writeup with all hosts, tokens, people and customer names replaced by placeholders (example.com, <REDACTED_TOKEN>, <Team>, <Redacted>). It covers headings, TODO states, priorities, tags, property drawers, metadata, tables with column alignment, long URLs, long code lines, quotes, math, Chinese text, nested task lists and footnotes.

Rendering this writeup surfaced and fixed:
<l>|<c>|<r> column-alignment rows being treated as data rows.:tag:.#+INCLUDE, macros, agenda, or export backends.npm install
npm run check # TypeScript
npm run build # main.js
ORG_TEST_VAULT="/path/to/TestVault" npm run deploy
npm run deploy builds, copies the plugin into the test vault, enables only org-live, and copies the test corpora. It intentionally does not hard-code a vault path.
Visual verification uses Obsidian's Electron remote debugging:
# Start Obsidian with --remote-debugging-port=9222
node scripts/cdp.mjs --open org-live-demo.org --mode live --shot shots/out.png
node scripts/cdp.mjs --mode preview --shot shots/reading.png
node scripts/cdp.mjs --target Settings --shot shots/settings.png
node scripts/cdp.mjs --mobile --shot shots/mobile.png
node scripts/cdp.mjs --info
Test material:
test/org-live-demo.org — broad syntax corpus.test/markdown-reference.md — Markdown comparison note.test/writeup-redacted.org — sanitized writeup / regression corpus.docs/visual-verification.md — verification log and screenshots.docs/superpowers/specs/2026-10-23-org-live-design.md — architecture and design decisions.Implementation ideas were informed by existing Obsidian markup-language plugins:
TextFileView + embedded CM6 and patched-CodeMirror notes.MIT