IWE vs markdown-oxide vs Marksman: Markdown LSPs compared
Checked on 2026-11-07 for project status and stars. Features checked on 2026-09-03 against marksman’s feature documentation and its 2026-02-08 release, oxide.md and markdown-oxide release v0.25.12, and IWE 0.23.0.
markdown-oxide vs Marksman: the short answer
Pick Marksman if you want correct links, headings and references in almost any editor with the least setup. It covers the most editors, including Vim, Emacs, Sublime Text and BBEdit, and Helix ships it as a default.
Pick markdown-oxide if you are coming from Obsidian and want its editing model in your editor: daily notes with natural-language dates, block references ([[doc#^block]]) and tags.
Pick IWE if you also want to query your notes, restructure them, and let an AI agent work on them through a CLI and an MCP server, not only from the editor.
One thing to know before you choose: Marksman’s last push was on 2026-02-08, and it has had no release since. It remains the most-starred of the three, with about 3,390 GitHub stars on 2026-11-07. markdown-oxide is actively maintained, with about 2,340 stars on the same date.
Feature comparison
| Capability | Marksman | markdown-oxide | IWE |
|---|---|---|---|
| Aimed at | Correct links, headings and references in any editor | Obsidian’s editing model inside a text editor | Notes as a knowledge graph, with an editor, a CLI and AI agents on the same files |
| Link syntax | Markdown inline and reference links, wiki links | Obsidian-style wiki links | Markdown links, [[wiki]], [[wiki|piped]] and inclusion links |
| Link targets | Documents and headings | Documents, headings and blocks ([[doc#^block]]) | Documents only; #fragment is dropped when resolving |
| Diagnostics | Live wiki-link diagnostics | Unresolved-reference diagnostics | None from the language server; iwe stats reports broken links in batch |
| Reference counts | Per heading, via code lens | Per heading or block, via code lens (needs enabling in some clients) | One backlink count per document, as an inlay hint |
| Daily notes | None | :Today, :Daily next monday, relative prev / next | Template-based via attach; no date resolution |
| Tags | – | Tag completion and tag references | Frontmatter tags are queryable; no inline #tag index |
| Table of contents | Code action generates and updates one | – | Not supported |
| Search ranking | Subsequence matching, no relevance ranking | No ranking of its own; the editor sorts completions | Fuzzy and BM25 fused with RRF |
| Restructuring | Not a goal | Linking and rename | Extract and inline sections, section to list, attach, squash |
| Formatting | – | Basic formatting | Full normalization of headers, lists, link titles and wrapping |
| Query language | None | None | MongoDB-style YAML over frontmatter and graph edges |
| CLI | None (a check command is on the roadmap) | Small CLI for daily notes and config files | Full CLI: find, retrieve, tree, stats, schema, normalize, bulk update and delete |
| AI agents (MCP) | None | None | MCP server with 14 tools, prompts and resources |
| Editors | VS Code, Neovim, Vim, Emacs, Helix, Kakoune, Sublime Text, BBEdit, Zed | Neovim, VS Code, Zed, Helix, Kakoune | VS Code, Neovim, Zed, Helix; any LSP client by hand |
| Written in | F#/.NET | Rust | Rust |
| License | MIT | Apache-2.0 | Open source |
A dash means the sources did not cover that capability for that tool. The table compresses a lot. The full comparison has a separate table for each tool, with links to the source behind each claim.
When to pick each
Marksman
Marksman is the long-standing general-purpose Markdown language server. Its job ends at making links, headings and references work correctly in the editor, and it does that job well.
Choose it if:
- you use Vim, Emacs, Sublime Text or BBEdit, which neither markdown-oxide nor IWE lists
- you want live diagnostics for broken links as you type
- you link to headings, not only to whole notes
- you want a generated table of contents
markdown-oxide
markdown-oxide brings Obsidian’s model into a text editor. On Obsidian compatibility it is ahead of both other tools.
Choose it if:
- you keep daily notes and want to open them by date, including phrases like “next monday”
- you link to individual blocks without moving them
- you use inline
#tagsand want them completed and indexed - you are moving from an Obsidian vault and want its conventions to keep working
markdown-oxide parses with regular expressions, a deliberate tradeoff for indexing speed. IWE builds a full syntax tree. Both work; they fail on different edge cases. The full comparison explains the difference.
IWE
IWE treats the notes as a graph, and the language server is one view of it. The iwe CLI and the MCP server are two more views of the same model, so an AI agent such as Claude Code or Codex can search, read and edit the notes you write in your editor.
Choose it if:
- you want to split a long note into several, or merge notes back, with links rewritten for you
- you want to query notes by frontmatter and by links, from the editor or the command line
- you want an AI agent to work on your notes with structured, guarded edits
- you want bulk updates across the whole folder, filtered by a query
Where IWE is weaker
IWE is not the best pick for everyone. Compared with these two:
- No live diagnostics. Broken links show up only in batch, through
iwe stats. - No heading or block link targets. IWE resolves links to whole documents. Its answer is to extract a section into its own note, which is a different answer, not a strictly better one.
- Weaker daily notes. Templates only, with no natural-language dates and no weekly, monthly or yearly periods.
- One reference count per document, not per heading.
- No inline
#tagindex and no aliases. - Fewer documented editors. Marksman also covers Emacs, Vim, Sublime Text, BBEdit and Kakoune; markdown-oxide also covers Kakoune.
- No table of contents action.
Set up IWE in your editor
Each guide covers install, shortcuts and troubleshooting:
- VS Code: extension from the Marketplace
- Neovim: the iwe.nvim plugin with Telescope
- Zed: extension from Zed Extensions
- Helix: plain LSP configuration, no plugin
Any other editor with Language Server Protocol support works too: run iwes as the language server for Markdown files.
Next steps
- Get started to install IWE
- How IWE compares for every tool, including zk, telekasten.nvim and mdbase
- Obsidian vs your editor if you are also weighing Obsidian