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

CapabilityMarksmanmarkdown-oxideIWE
Aimed atCorrect links, headings and references in any editorObsidian’s editing model inside a text editorNotes as a knowledge graph, with an editor, a CLI and AI agents on the same files
Link syntaxMarkdown inline and reference links, wiki linksObsidian-style wiki linksMarkdown links, [[wiki]], [[wiki|piped]] and inclusion links
Link targetsDocuments and headingsDocuments, headings and blocks ([[doc#^block]])Documents only; #fragment is dropped when resolving
DiagnosticsLive wiki-link diagnosticsUnresolved-reference diagnosticsNone from the language server; iwe stats reports broken links in batch
Reference countsPer heading, via code lensPer heading or block, via code lens (needs enabling in some clients)One backlink count per document, as an inlay hint
Daily notesNone:Today, :Daily next monday, relative prev / nextTemplate-based via attach; no date resolution
Tags–Tag completion and tag referencesFrontmatter tags are queryable; no inline #tag index
Table of contentsCode action generates and updates one–Not supported
Search rankingSubsequence matching, no relevance rankingNo ranking of its own; the editor sorts completionsFuzzy and BM25 fused with RRF
RestructuringNot a goalLinking and renameExtract and inline sections, section to list, attach, squash
Formatting–Basic formattingFull normalization of headers, lists, link titles and wrapping
Query languageNoneNoneMongoDB-style YAML over frontmatter and graph edges
CLINone (a check command is on the roadmap)Small CLI for daily notes and config filesFull CLI: find, retrieve, tree, stats, schema, normalize, bulk update and delete
AI agents (MCP)NoneNoneMCP server with 14 tools, prompts and resources
EditorsVS Code, Neovim, Vim, Emacs, Helix, Kakoune, Sublime Text, BBEdit, ZedNeovim, VS Code, Zed, Helix, KakouneVS Code, Neovim, Zed, Helix; any LSP client by hand
Written inF#/.NETRustRust
LicenseMITApache-2.0Open 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 #tags and 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 #tag index 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

PreviousCompareNextObsidian vs your editor

Search

Loading pages…