Obsidian logo

Obsidian

Free tier

The free and flexible private note-taking app that sharpens your thinking

Free tier available·All audiences·API available

Key strengths

Local-first storage with full privacy — notes never leave your device unless you chooseBidirectional linking and graph view to visualize knowledge connectionsThousands of community plugins and themes for deep customizationOpen file formats (plain-text Markdown) ensuring long-term data ownershipEnd-to-end encrypted sync and one-click publishing via Obsidian Publish
Free tier + paid plans
Founded 2020
Self-hostable
No ratings yet

Developer & Technical Documentation

Plugin Development

Obsidian exposes a public TypeScript/JavaScript API for building plugins. Scaffold a new plugin using the official template:

git clone https://github.com/obsidianmd/obsidian-sample-plugin
cd obsidian-sample-plugin
npm install && npm run dev

Copy the built plugin folder into <vault>/.obsidian/plugins/ and enable it in Settings → Community plugins.

Key API Concepts

  • Plugin class — entry point; register commands, views, and event listeners via this.addCommand(), this.registerView(), etc.
  • Vault API — read/write/delete Markdown files and attachments programmatically.
  • MetadataCache — access parsed frontmatter, tags, and backlinks across the entire vault without re-reading files.
  • Editor API — interact with the active CodeMirror 6 editor instance.

CLI & Automation

Obsidian URIs (obsidian://open?vault=MyVault&file=Note) allow external apps and scripts to open specific notes. The official CLI (obsidian-cli) can trigger vault actions from the terminal.

Obsidian Publish API

Publish sites are configured via publish.css and publish.js files placed in the vault root, enabling custom theming, JavaScript widgets, and domain mapping through the Obsidian dashboard.

File Format

All notes are plain UTF-8 Markdown files with optional YAML frontmatter:

---
tags: [evergreen, philosophy]
created: 2024-01-15
---
# My Note

This ensures compatibility with any text editor or version-control system (e.g., Git).