---
title: "tnotes vs Obsidian · tnotes"
description: "Obsidian or tnotes for Markdown notes? Desktop and mobile Markdown knowledge base built around [[links]], a graph and a large plugin ecosystem. Feature-by-featu"
canonical: https://tnotes.app/compare/tnotes-vs-obsidian
---

[compare](/compare) / obsidian

# tnotes vs Obsidian

Desktop and mobile Markdown knowledge base built around \[\[links\]\], a graph and a large plugin ecosystem.

tnotes

terminal app · macOS, Linux · MIT · free · v1.3.0

[Obsidian](https://obsidian.md)

desktop app · Windows, macOS, Linux, iOS, iPadOS, Android · Proprietary (free for personal and commercial use) · Free. Optional add-ons: Sync from $4/user/month billed annually, Publish from $8/site/month, Catalyst $25 one-time, Commercial $50/user/year.

Obsidian is a Markdown editor and knowledge base that runs on a local folder it calls a vault. Every note is a `.md` file, subfolders are folders, and vault-specific settings live in a hidden `.obsidian/` directory at the vault root. Because the data is plain files, Obsidian’s own docs list Dropbox, iCloud, OneDrive and git as valid ways to sync a vault, alongside the paid Obsidian Sync service.

The model is links first. `[[Note]]` links resolve by filename, can target headings (`[[Note#Heading]]`) and blocks (`[[Note#^id]]`), and are rewritten when a file is renamed. The Backlinks core plugin shows linked and unlinked mentions for the active note, Graph view draws the whole vault, and Bases turns frontmatter properties into database-style tables. Community plugins, themes and CSS snippets extend all of that.

Two recent additions matter for people who script their notes. Obsidian CLI (requires the 1.12.7 installer) exposes app commands from a shell, with `format=json` on some of them, but it controls a running desktop app rather than reading files on its own. Obsidian Headless (`ob`, open beta, needs a Sync subscription) syncs and publishes vaults from a server without the app.

## Feature comparison

| Feature | tnotes | Obsidian |
| --- | --- | --- |
| Storage format | ✓ plain .md files, folders are directories | ✓ Markdown files in a vault folder; per-vault settings in `.obsidian/` |
| Runs in the terminal | ✓ TUI (ratatui) plus a headless CLI | ~ Obsidian CLI (installer 1.12.7+) drives the running desktop app; no terminal editor |
| \[\[Wikilinks\]\] | ✓ \[\[Title\]\] with completion; rewritten on rename | ✓ \[\[Note\]\], \[\[Note#heading\]\], \[\[Note|alias\]\], \[\[Note#^block\]\]; updated on rename |
| Backlinks | ✓ overlay + `backlinks` in JSON | ✓ Backlinks core plugin: linked and unlinked mentions |
| #tags | ✓ #tag and nested #work/project, parsed from text | ✓ #tag and nested #inbox/to-read in text, or a `tags` property |
| Headless CLI | ✓ ls, search, cat, new, append, write, trash, restore | ~ `obsidian` CLI needs the app running; `ob` (Headless) only syncs and publishes |
| JSON output for scripts / agents | ✓ --json on every command | ~ `format=json` on some CLI commands (backlinks, links, tags, bases) |
| Live reload on external edits | ✓ file watcher; dirty tabs keep their text | ✓ refreshes the vault when files change on disk |
| Vim keys | ✓ vim or emacs keys (edtui) | ✓ Settings → Editor → Vim key bindings |
| Mouse support | ✓ click, double-click, right-click menus, drag | ✓ |
| Sync | ~ any file sync: git, Syncthing, iCloud, Dropbox | ✓ Obsidian Sync add-on, or any file sync (Dropbox, iCloud, git) |
| Encryption | ~ encrypt the folder: FileVault, gocryptfs | ~ Sync is end-to-end encrypted (AES-256-GCM); the local vault is not |
| Mobile app | ✗ files sync to any mobile Markdown editor | ✓ iOS, iPadOS, Android |
| Plugins | ✗ | ✓ core plugins, community plugins, themes, CSS snippets |
| Open source | ✓ MIT, Rust | ✗ closed source; JSON Canvas and Knap formats are MIT |

✓ yes · ~ partial or via the file system · ✗ no

## Choose Obsidian if

-   You want a GUI: graph view, canvas, Bases tables, PDF and image attachments, rendered previews.
-   You need a phone app; Obsidian ships native iOS and Android clients that open the same vault.
-   You depend on community plugins; the directory covers queries, templates, drawing and much more, and tnotes has no plugin system.
-   You want a hosted, end-to-end encrypted sync service with version history and shared vaults, and are fine paying for it.
-   You use heading, block and alias links; tnotes documents only `[[Title]]`.

## Choose tnotes if

-   You live in a terminal or over SSH. tnotes is a single Rust binary with a mouse-capable TUI; Obsidian is an Electron app.
-   Scripts and agents need a headless interface that works without a GUI process: `tnotes ls --json`, `search`, `cat`, `new`, `append`, `write` operate directly on files.
-   You want nothing written next to your notes. tnotes keeps its config in `~/.config/tnotes/` and only creates a `.Trash/` per root; Obsidian adds `.obsidian/` inside the vault.
-   You want the source: tnotes is MIT-licensed, Obsidian is closed.
-   Your notes should survive a two-way edit: a CLI `write` while the TUI has unsaved changes yields a conflict copy, never a silent overwrite.

## Using Obsidian and tnotes together

Point a tnotes root at an existing vault. Both tools read the same `.md` files, and tnotes ignores dot-prefixed entries, so `.obsidian/` never appears in its tree.

```
tnotes ~/Vaults/main            # adds the vault to roots in config.toml and opens it
tnotes ls --json --dir ~/Vaults/main | jq '.[] | {title, backlinks}'
```

Or set it permanently in `~/.config/tnotes/config.toml`:

```
roots = ["~/Vaults/main"]
```

What carries over unchanged: `[[Title]]` links, `#tags` including nested `#work/project`, folders, checkboxes. Obsidian resolves links by filename; tnotes resolves by note title (case-insensitive) and then by file stem, so a plain `[[Note]]` link that resolves in Obsidian also resolves in tnotes through the stem. Obsidian’s `[[Note#heading]]`, `[[Note|alias]]`, `[[folder/Note]]` and block references are not documented in tnotes.

Two things to know before editing. tnotes takes the note title from the first line and renames the file to a slug of it when that line changes, rewriting `[[links]]` in the other notes it manages. And tnotes has no documented frontmatter handling: a note that starts with a YAML block has `---` as its first line. Keep the Obsidian app open while you work in tnotes; both watch the folder and pick up each other’s saves. See [/for/obsidian-users](/for/obsidian-users) and [/docs/sync](/docs/sync).

## FAQ

? Can tnotes open an Obsidian vault?

Yes. A vault is a folder of Markdown files; run `tnotes ~/path/to/vault` or add it to `roots` in the config. `.obsidian/` is ignored because tnotes skips dot-prefixed entries. Links and tags use the same syntax in both.

? Does Obsidian have a command-line interface?

Since the 1.12.7 installer, Obsidian CLI lets you run app commands such as `obsidian search query=...` or `obsidian daily:append content=...` from a shell, with `format=json` on some commands. It requires the desktop app to be running. Obsidian Headless (`ob`) is a separate npm package that syncs and publishes without the app but does not read or search notes. tnotes’ CLI works on the files directly with no app process.

? Is Obsidian free and open source?

Obsidian is free for personal and commercial use since February 2025, but the app is closed source; only side projects like JSON Canvas and Knap are MIT. Sync ($4/user/month billed annually) and Publish are paid add-ons. tnotes is MIT.

## Sources

Obsidian facts checked on 2026-09-22 against:

-   [Obsidian Help: How Obsidian stores data](https://help.obsidian.md/data-storage)
-   [Obsidian Help: Internal links](https://help.obsidian.md/links)
-   [Obsidian Help: Obsidian CLI](https://help.obsidian.md/cli)
-   [Obsidian Help: Headless Sync](https://help.obsidian.md/sync/headless)
-   [Obsidian Help: Sync security and privacy](https://help.obsidian.md/sync/security)
-   [Obsidian pricing and license overview](https://obsidian.md/pricing)
-   [Obsidian license summary](https://obsidian.md/license)
-   [Obsidian Help: Settings (Vim key bindings)](https://help.obsidian.md/settings)

## Other comparisons

-   [tnotes vs Apple Notes](/compare/tnotes-vs-apple-notes)
-   [tnotes vs Dendron](/compare/tnotes-vs-dendron)
-   [tnotes vs Joplin](/compare/tnotes-vs-joplin)
-   [tnotes vs jrnl](/compare/tnotes-vs-jrnl)
-   [tnotes vs Logseq](/compare/tnotes-vs-logseq)
-   [tnotes vs nb](/compare/tnotes-vs-nb)
