By Jody in Blogging platform, CMS, Markdown

Ghost CMS Alternative With a Markdown Editor: Which Platforms Still Keep Your Post as Markdown

Ghost used to be a markdown blogging app: markdown source in one pane, the rendered post in the pane beside it. That editor is gone, and if you are looking for a Ghost CMS alternative with a markdown editor, the usual "Ghost alternatives" pages will not help you. They compare pricing, newsletters and memberships. None of them compares the thing you asked about: whether you write in markdown, and whether the platform keeps what you wrote as markdown.

This post compares only that. It takes the platforms those pages keep recommending, adds Blognami (the platform this blog runs on), and puts all of them through the same four-point test. Every claim about a product links to that product's own docs, changelog or repo.

What the old Ghost editor was, and what replaced it

Ghost's own issue tracker called it the "Ghost Split Screen Editor": a markdown source panel and a rendered preview panel, kept in sync as you typed. That same 2013 issue already said that "long term, we will be replacing the editor with an entirely new component which will look and function very differently to the existing editor."

Ghost 1.0, in July 2017, kept the markdown editor and improved it, adding "support for Markdown tables, CommonMark, Github-flavoured Markdown and multiple view options depending on whether you prefer a focused single column or a side-by-side preview." The same announcement also revealed what was underneath: a block-based editor called Koenig, built on MobileDoc. In Ghost's words, "the upgraded Markdown editor is just a content block within the new Koenig editor."

Ghost 2.0, in August 2018, made the block editor the default: "For the first time since we started, Markdown is no longer the default way to write in Ghost." The old editor became "a card within the new editor."

The side-by-side preview did not survive the move. In a 2020 Ghost forum thread titled "Does the Split Editor still exist?", a user describes having to "click out/in of the card to see the preview", and a forum moderator replies: "You're correct, the Split Editor is gone."

Today, Ghost's help page on markdown says the editor "automatically parses any Markdown typed in directly", and that the Markdown card is for when you want to "keep your content formatted in Markdown for editing later". So markdown typed into the editor is converted to rich text, and only text inside a Markdown card stays markdown. The post itself is not stored as markdown either: the Admin API's create-a-post example sends the body as a lexical JSON document.

What a blogging platform like the old Ghost editor has to do

Plenty of tools accept markdown somewhere. To replace what Ghost had, a platform needs to pass four tests:

  1. Markdown is the stored source of truth. It is not a card inside a block document, and not shortcuts that turn into rich text as you type. What you typed is what is saved, and what you get back when you reopen the post.
  2. There is a live preview while you write. You see rendered output beside the source, or at least updating with it, without publishing or leaving the editor.
  3. It publishes a blog. It serves your posts at a URL. A markdown editor that leaves you holding a file is a different product.
  4. You can self-host it or leave. Either you can run the software yourself, or you can export your posts in a usable format.

How the usual Ghost alternatives do against the test

"Not documented" means I could not find a primary source either way, so I am not giving a verdict.

PlatformMarkdown is the sourceLive previewPublishes a blogSelf-host or leave
WordPressFailPartialPassPass
SubstackFailFailPassPartial
MediumFailFailPassPartial
HashnodePartialNot documentedPassPartial
WriteFreelyPassNot documentedPassPass
Bear BlogPassPartialPassPartial
BlognamiPassPassPassPass

WordPress: markdown is a block, the same arrangement Ghost has

WordPress has the arrangement you are trying to leave. Markdown exists as a block inside the block editor, and it comes from Jetpack rather than core: the Markdown block is "available on all Jetpack-connected sites". The preview is a toggle, not a second pane: the block "offers the Markdown and Preview tabs", and the Preview tab shows "an approximation".

It does well on the fourth test. You can download and install it yourself, and Tools → Export gives you your posts, pages, comments and tags as a WXR file. That export is XML, not markdown.

Substack: no markdown in the editor

Substack's help article on the question is one sentence long: "We do not currently support Markdown in the post editor." It does have markdown-like shortcuts, such as # followed by a space for a heading, but they convert to rich text as you type, so there is no markdown source to preview.

Its help centre documents no way to host it yourself, but you can leave. "Anything you publish on Substack is yours to own", and the Exports setting produces a zip of your publication's data.

Medium: a rich-text editor with a few shortcuts

Medium's story editor is driven by a toolbar: "just select the text you want to format and choose the relevant option from the toolbar". A handful of keyboard shortcuts look like markdown, such as backticks for inline code and 1. plus a space for a numbered list. Medium's help centre documents no markdown mode.

Its help centre documents no self-hosted option either. You can export your stories, and they arrive "as HTML files in a .zip archive".

Hashnode: markdown out, but the editor is undocumented

Hashnode is the hardest to judge, because I could not find a live Hashnode documentation page that describes its editor. Its changelog does say that "every article can now be read as raw Markdown" by adding .md to the article URL. Hashnode Pro adds a GitHub backup that syncs "every post and draft to a GitHub repository as Markdown". So markdown comes out of it.

That leaves two things without a verdict: whether the editor itself edits raw markdown or a rich-text document, and whether it has a live preview. It publishes a blog, and custom domains are part of Pro. I found no documented way to self-host it, and that same changelog entry lists the GitHub backup among the features a Pro subscription unlocks.

WriteFreely: plain markdown, no preview documented

WriteFreely passes the first test cleanly. It is "built on a plain, auto-saving editor", and formatting is markdown you type: "Just use Markdown (or even HTML) to get the look you want." Even the title is markdown: you "explicitly add a title by starting your post with a Markdown header".

Its features page, writer guide and README do not mention a preview of any kind, so if the side-by-side pane is what you miss, check that before committing. It passes the fourth test. It is AGPL-licensed and you can run your own instance. The codebase also exports your posts as CSV or a zip of text files.

Bear Blog: markdown in and out, but not self-hostable

In Bear Blog, "all the post content is written in markdown". Per the post docs, content "is written in Markdown or HTML and is rendered as HTML." A post preview exists, but the changelog describes it as a token-protected preview page. No live or side-by-side preview is documented.

The same changelog says that as of March 2026 backups export "as MD files instead of CSV". That is as good as an exit gets, because you get back the markdown you typed. The repo is public, but its README says "it isn't possible to individually self-host a Bear Blog": it is "more like Substack than Hugo".

Blognami: two-pane markdown editor, markdown export

You are reading this on Blognami's own blog, so weigh what follows with that in mind. It gets the same four tests.

A post's body is edited as markdown and stored as markdown: a plain text column, rendered to HTML only when the post is displayed. There is no block document in between. The editor puts a markdown textarea on the left and a live preview on the right. The preview is rendered by the same markdown renderer the published post uses.

This is not a clone of the old Ghost editor. It opens as a full-height overlay from the post's body field rather than as its own writing screen. Scrolling one pane does not scroll the other; the preview only jumps to the block you just changed. On a narrow screen they collapse into an Edit / Preview toggle, so side-by-side is a desktop-width behaviour.

It publishes a blog. You can use the hosted version, or self-host the same MIT-licensed open-source code. The quick start in the docs is four commands, from generate-project to start-server.

You can also leave. On the hosted version, an admin chooses Settings → Export content and downloads a zip with one markdown file per post and per page, drafts included. Each file has the title, slug, tags, meta fields and publish date as frontmatter, and beneath it the body exactly as you typed it. There are limits. Uploaded images are not in the zip, so image links keep pointing at your old blog. The export is part of the hosted product, not the open-source code: if you self-host, you own the database instead, and your markdown sits in it as text. There is no Ghost importer, so moving in is still copy and paste.

So which one is closest to the old Ghost editor?

Blognami is the only platform here that passes all four tests, and you are reading that on Blognami's blog. Two of its passes are things I checked in the product and its code rather than on a documentation page you can read, so test them yourself.

  • If the block editor was your complaint, rule out WordPress, Substack and Medium. Markdown is a block in WordPress and absent from the other two.
  • If you want plain markdown and a clean exit, look at WriteFreely and Bear Blog. WriteFreely can be self-hosted and Bear Blog cannot. Neither documents a live preview.
  • If the split screen is the part you miss, Blognami is the one here where I could confirm a side-by-side source-and-preview editor (it is in the open-source code), and you can self-host it. The hosted version exports your posts as markdown files.
  • Hashnode gives you markdown out. Try its editor yourself before deciding, because nothing current documents it.

Before you move, write one real post on the platform you are considering, close the editor and reopen the post. If you get back the markdown you typed, it passes the first test.