Blume vs Docsify.Docsify's simplicity, with real pages.
Docsify renders your Markdown in the browser from a single index.html. Blume builds the same Markdown into static pages with real URLs, adds llms.txt, an MCP server, API references, and versioning, and keeps every old #/ link working.
npx blume migrate docsify --codex| Blume | Docsify | |
|---|---|---|
| You maintain | BlumeA folder of Markdown, plus one optional config file | DocsifyOne index.html with window.$docsify, plus _sidebar.md and plugin scripts |
| Rendering | BlumeStatic HTML at build time by default, or a server build | DocsifyIn the browser on each page load, with no build step |
| URLs and SEO | BlumeA real URL per page, with a sitemap and structured data | Docsify#/ hash URLs by default, which its docs call not search-engine friendly |
| License | BlumeFree and open source (MIT) | DocsifyFree and open source (MIT) |
| Search | BlumeLocal search with no keys, or Pagefind, Algolia, and more by adapter | DocsifyA bundled plugin that indexes pages in the browser |
| Agent features | Blumellms.txt, Markdown mirrors, and a JSON API by default; an opt-in MCP server | DocsifyNot built in; your .md files are served as they are |
| API references | BlumeOpenAPI, AsyncAPI, and GraphQL, with a Try it playground | DocsifyNot built in |
| Languages | Blumeblume translate fills in every locale with your coding agent | DocsifyLocale folders and navbar links, with per-page fallback |
Docsify details are from its own pages as of October 7, 2026: Quick start, Router mode, Search plugin, Languages, Server renderer, v5.0.0 release. Something out of date? Let us know
Your docs come with you.Your Markdown comes along, and every old link still lands.
- Pages are built ahead of time.
- Each page becomes static HTML at its own URL, so readers and search engines get the content without running any JavaScript.
- The sidebar becomes folders.
- Each
_sidebar.mdgroup becomes a folder with ameta.tsin sidebar order, the navbar becomes header tabs and links, and the cover page becomes the top of your home page. - Old #/ links still land.
- A small script sends every old
#/route and?id=anchor to its new page and heading, and old heading ids are pinned where Blume's differ. - Callouts, tabs, and includes convert.
- A codemod turns
!>and?>into directives, docsify-tabs into Tabs, and':include'links into includes, and search, copy-code, pagination, and zoom are built in.
Docsify
Blume
- window.$docsifyblume.config.ts
- _sidebar.mdmeta.ts
- README.mdindex.md
- !>:::warning
- <!-- tabs:start --><Tabs>
- ':include'<include>
- #/setup?id=install/setup#install
When Docsify might suit you better.Blume isn't the right fit for every team.
- You want no build step.
- Docsify is one
index.htmlthat loads from a CDN, so you edit Markdown, push, and any static host serves it, with no Node.js toolchain. Blume needs Node.js and a build. - You want Vue in your Markdown.
- Docsify runs Vue templates, data, and components straight from your Markdown pages with one script tag. Blume runs Vue as islands, with
@astrojs/vueinstalled. - Your pages pull content live.
- Docsify aliases and includes can fetch Markdown from another repository each time a page loads, so readers always see its latest version. Blume reads remote content at build time.
- 1
Run one command in your docs project.
Using Claude Code? Swap
--codexfor--claude. - 2
Review the agent's edits.
It follows Blume's migration playbook for MintlifyFumadocsDocusaurusStarlightNextraGitBookMkDocsReadMeVitePressFernRedoclyVuePressDocsifyDocusmdBookJekyllGitHub Wiki, rewriting your config and pages in place, so you review the whole move as one diff.
- 3
Preview the result.
Run
npx blume dev, then read the agent's summary of anything it dropped or approximated.
Questions, answered.About moving from Docsify to Blume.
What's the difference between Blume and Docsify?
Docsify fetches and renders your Markdown in the browser each time a page loads, from one index.html with no build. Blume builds every page into static HTML ahead of time, and adds llms.txt, an MCP server, API references, and versioning, none of which Docsify builds in.
Does rendering in the browser hurt SEO?
Docsify's own docs call its default hash URLs not so search-engine friendly, and suggest history mode with server rewrites instead. Its server renderer is deprecated on npm while the team investigates SSR and static generation. Blume serves every page as HTML at its own URL, with a sitemap.
Can I keep my Docsify Markdown?
Yes. npx blume migrate docsify --codex runs a codemod that converts !> and ?> callouts, docsify-tabs, and ':include' links, turns each page's first H1 into its title, and rebuilds _sidebar.md as folders.
Will my old #/ links still work?
Yes. A server never sees the part of a URL after #, so the agent adds a small script to every page that sends old #/ routes and ?id= anchors to the new page and heading. It also pins each old heading id where Blume's differs.
What doesn't the migration carry over?
Vue widgets and page scripts, comment plugins, custom marked renderers and breaks: true, dynamic virtual routes, the Docsify theme and cover background, and link attributes like :size. Remote aliases and includes become copies or a build-time content source, and the agent reports each one.
Upgrade your docs with Blume.
Install today and ship a production-grade docs site in minutes. Free and open source, forever.
npx blume init