Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

MarkCalc

Levis-CodeLevis-Code188 downloads

Spreadsheet-style formulas in Markdown tables. Results live as plain, portable text, not a rendered view. Aggregates, lookups, dates, custom functions, and cross-note references with automatic recalculation.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates1

Spreadsheet-style formulas in Markdown tables — where the results stay as plain, portable text.

Compute inside your notes (budgets, ledgers, trackers, data tables) without leaving Obsidian, and without locking the results into a plugin. Values are written into the cells as real Markdown, so the note stays readable — and the numbers stay there — even if you move the .md to GitHub, another editor, or another vault.

Why MarkCalc

MarkCalc Dataview Static tables
Results as plain, portable Markdown ✅ ❌ (rendered view) —
Survives without the plugin / in Git ✅ ❌ ✅
Computes (formulas, aggregates, lookups) ✅ ✅ ❌
Cross-note references with auto-recalc ✅ partial ❌
  • Portable results. The computed value is written into the cell. Versionable in Git, printable, readable without the plugin. Dataview renders an ephemeral view that disappears without it — MarkCalc doesn't.
  • Cross-note, like a multi-sheet workbook over your vault. A note can read a table in another note (xcell, xcol, xlookup, xfm); editing the source cascades the recalculation to dependent notes via a padres dependency graph, without scanning the whole vault.
  • Context-aware autocomplete. Inside the <!-- calc: --> comment, the editor suggests functions (with signature, description and example), table columns, @name tables and note names — derived from the formula itself.
  • Bilingual (EN / ES). Interface and editor helpers in English or Spanish, with a selector in settings (or automatic, following Obsidian's language).
  • Zero dependencies. The engine evaluates with native JavaScript. User functions (calc-functions / calc-js) are embedded in the note itself.

Example

| Product | Qty | Price | Total |
|---------|----:|------:|------:|
| Coffee  | 2   | 3.5   |       |
| Tea     | 4   | 2.0   |       |
<!-- calc: $Total = $Qty * $Price -->

On recalculation, the Total column is filled in. The formula stays in the comment (the source of truth — idempotent).

Cross-note in action

A Ledger note names its table @name = accounts; a Balance Sheet note pulls totals from it with xcol + sumIf, and a check row stays at 0 only if the books balance. Change a number in the ledger and the balance updates on its own. Neither Dataview nor a static table can do that in plain Markdown.

Installation

From the Community Plugins store (once approved): Settings → Community plugins → Browse → search MarkCalc.

Manual: download main.js, manifest.json and styles.css from the latest release, drop them in <your-vault>/.obsidian/plugins/markcalc/, then enable MarkCalc in Settings.

Documentation

Full reference (every function, cross-note, security, editor helpers) in MarkCalc-docs.md — Spanish: MarkCalc-docs.es.md. Ready-to-run examples in the demo/ folder.

Development

main.js is a generated artifact — never edit it by hand. Edit the sources in src/ and rebuild:

node src/build.js        # concatenates src/engine.js + src/wrapper.js -> main.js
node src/test/run.js     # engine test suite (~42 assertions, no dependencies)
node src/test/i18n.js    # bilingual catalog integrity
  • src/engine.js — pure engine (no dependencies, testable with Node).
  • src/wrapper.js — Obsidian glue (Plugin, EditorSuggest, settings).

Tagging a release (git tag 0.10.0 && git push --tags) triggers a CI workflow that builds, tests, and publishes the release assets automatically.

Security

MarkCalc evaluates note content as trusted code (same model as DataviewJS / Templater): formulas and calc-js blocks run via new Function. Use it only in notes you write yourself. Details in the docs, §7.

Support

If MarkCalc saves you time and you'd like to support its development:

☕ Buy me a coffee

License

MIT © 2026 Levis-Code

HealthExcellent
ReviewPassed
About
Compute spreadsheet-style formulas directly inside Markdown tables and write results as plain Markdown so values stay readable, versionable and usable outside Obsidian. Reference tables across notes with auto-recalculation, embed in-note functions and get context-aware autocomplete for formulas.
TablesAutomationAutocomplete
Details
Current version
0.10.0
Last updated
2 months ago
Created
2 months ago
Updates
1 release
Downloads
188
Compatible with
Obsidian 0.12.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Sponsor
Buy Me a Coffee
Author
Levis-CodeLevis-Codelevis-code
GitHublevis-code
  1. Community
  2. Plugins
  3. Tables
  4. MarkCalc

Related plugins

Advanced Tables

Improved table navigation, formatting, and manipulation.

BRAT

Easily install a beta version of a plugin for testing.

Homepage

Open a note, base, or workspace on startup, or set it for quick access later.

Advanced URI

Control everything with URI.

Lazy Loader

Load plugins with a delay on startup, so that you can get your app startup down into the sub-second loading time.

Hot Reload

Automatically reload in-development plugins when their files are changed

Templater

Create and use dynamic templates.

Numerals

Turn any code block into an advanced calculator. Evaluate math expressions on each line of a code block, including units, currency, and optional TeX rendering.

QuickAdd

Quickly add new notes or content to your vault.

Readwise Official

Sync highlights from Readwise to your vault.