Markdown Newsletters 2026: Substack, Beehiiv & Ghost
Substack, Beehiiv, and Ghost are the three platforms that pay newsletter writers actually pick in 2026. They look similar on the surface — each has a hosted composer, a paid tier, and an audience graph — but their treatment of Markdown is wildly different. Ghost stores your post as Markdown and renders it on the fly. Beehiiv accepts Markdown imports and parses pasted Markdown server-side. Substack accepts Markdown only through import, and the editor itself is a stripped-down rich-text composer that treats pasted Markdown as a one-time conversion. If you intend to write in Markdown and reuse the same source across platforms, this difference determines which platform becomes the canonical home of your writing.
The workflow that fits all three is the same on the writing side: a local Markdown file as the source of truth, md2rich to convert that Markdown into the rich text the platform composers accept, and a paste step into the destination. The platform-specific differences show up in what survives the round trip, what gets stripped on paste, and what the post-paste cleanup looks like. This guide compares the three on those axes and shows the workflow that works in each case without locking you into one platform's editor.
How each platform handles Markdown
Ghost is the most Markdown-native of the three because the editor is built on the same CommonMark pipeline that powers the publishing API. A post written in the Ghost editor is stored as Markdown in the database and rendered to HTML at request time. Round-tripping is lossless by construction: paste Markdown in, get Markdown out, paste Markdown in again, get the same Markdown out. This is the platform where the file-on-disk is genuinely the canonical record of the post.
Beehiiv is Markdown-friendly through two paths: the import endpoint accepts Markdown and HTML, and the AI Composer parses pasted Markdown server-side using a custom CommonMark variant. The Composer itself is a TipTap-based rich-text editor that does not expose the source Markdown to the writer once the post is converted. Round-tripping requires exporting the post and re-parsing, which Beehiiv does not expose through the Composer UI. For a paid writer who imports once and edits rarely inside the platform, Beehiiv's import fidelity is high enough that the Markdown source can stay canonical.
Substack is the weakest of the three for Markdown because the editor is a stripped-down rich-text composer and pasted Markdown is converted to HTML on the way in. Once the post is in Substack, the source Markdown is gone. Re-exporting the post gets HTML back, not Markdown. For writers who want their Markdown file to be the canonical record and Substack to be one of several publication surfaces, Substack has to be the last hop in the workflow, not the source of truth.
# Markdown source (canonical file)
# file: newsletter/2026-07-28-paid-edition.md
---
title: Why Substack, Beehiiv, Ghost handle Markdown differently
date: 2026-07-28
audience: paid
---
## The headline
The three platforms look similar but treat Markdown as **canonical**,
**import-only**, or **converted-on-paste** respectively.
| Platform | Markdown storage | Round-trip fidelity |
|----------|------------------|---------------------|
| Ghost | Canonical source | Lossless |
| Beehiiv | Import only | High (single import)|
| Substack | Converted to HTML | Lossy (HTML out) |
> Pick Ghost if Markdown is the canonical record. Pick Beehiiv if you
> import once and edit rarely inside the platform. Pick Substack if
> you treat it as a publication surface, not a writing tool.
The above source is what you would write in a local file or a Markdown editor like the ones compared here. The conversion step to rich text is the same regardless of which destination platform you pick — md2rich parses the Markdown and produces the HTML clipboard payload that the platform composers accept on paste.
The shared workflow
The 80% workflow that works for all three platforms looks the same. The differences are at the platform-specific cleanup step at the end.
- Write the draft in a local Markdown file. The file is the canonical record of the post.
- Open md2rich and paste the Markdown into the left pane.
- Click Convert. The right pane shows the rich-text HTML that all three platform composers accept on paste.
- Copy from the rich-pane, paste into the destination platform's composer.
- Run the platform-specific cleanup: Substack needs blockquote re-nesting, Beehiiv needs code-block re-style, Ghost usually needs nothing.
- Preview the post inside the platform, then publish or schedule.
This is the same workflow described in the Substack-focused guide and the broader Markdown → rich text guide, extended to all three platforms. The privacy angle is the same too: the draft stays on your machine until the moment you choose to publish, with no keystroke logging and no third-party content script running while you write.
Platform-by-platform cleanup
Substack strips nested blockquotes on paste and collapses tables with more than two columns into a flat list. The fix is to use single-level blockquotes and split wide tables into multiple smaller tables. Substack also does not preserve ```language code-block fences — the language hint is dropped and the block is rendered as plain monospace. For technical newsletters, this is the deal-breaker that pushes most writers toward Beehiiv or Ghost.
Beehiiv preserves tables, code blocks, and images cleanly through paste. The only cleanup step worth doing is re-applying the syntax highlighting to code blocks because Beehiiv strips the language hint and renders them as plain monospace by default. The fix is to select each code block inside the Composer and pick the language from the dropdown. This takes about 30 seconds per post and is worth doing once for technical content.
Ghost is the closest to "paste and forget." Code blocks keep their language hints, tables round-trip cleanly, nested blockquotes stay nested, and footnotes survive the round trip. The only thing Ghost strips on paste is the title frontmatter field, which is expected because the Composer has its own title field. For a writer who wants the Markdown file to be canonical and the platform to be a view into that file, Ghost is the cleanest fit.
# Cleanup checklist per platform
# Substack
- Flatten nested blockquotes (> > becomes >)
- Split wide tables into multiple tables
- Re-apply code-block language hints manually
# Beehiiv
- Re-apply code-block language hints in the Composer
- (everything else survives paste)
# Ghost
- Set the post title in the Composer title field
- (everything else survives paste)
The headless publish path
For writers who publish the same content to two or three platforms, the paste-into-composer workflow is fine for one or two posts a week. For higher cadence, the better path is a headless publish step that skips the Composer entirely.
Ghost has the cleanest headless path through its Admin API. You POST a Markdown body to /ghost/api/admin/posts/ with a content API key and the post is created in draft status. You can then schedule or publish from the dashboard, or use the API to publish directly. For a writer maintaining a Markdown file and publishing through a CI pipeline, Ghost's Admin API is the most scriptable of the three.
Beehiiv has a similar headless path through its bulk-import endpoint, which accepts a zip of HTML or Markdown files. The endpoint is rate-limited and the import goes into a draft state that you have to review and publish inside the dashboard. For writers who batch-import weekly editions, this works cleanly. For real-time publishing, the Composer paste path is faster.
Substack does not expose a public API for posts. Import is only available during onboarding as part of a platform migration, and there is no documented endpoint for ongoing imports. For a writer who treats Substack as the canonical home of their newsletter, this is fine. For a writer who treats their Markdown file as canonical and Substack as one of several publication surfaces, this is the limit that pushes them toward Ghost or Beehiiv for the canonical home and treats Substack as a manual re-paste surface.
The privacy floor
All three platforms require you to log into their Composer to publish. The privacy angle is therefore not about the platform itself — once you paste, the content lives on their infrastructure — but about the draft phase before the paste.
The md2rich pattern keeps the draft client-side: you write the Markdown in a local file or in an inline editor, you convert it through md2rich, and you paste the result into the platform. Nothing in that pipeline touches a server until the explicit publish step. Compared to a workflow that requires you to type into a cloud editor from the first keystroke, the md2rich pattern cuts the attack surface in half during the draft phase.
For newsletters specifically, the draft-phase privacy floor matters more than it does for social posts because the draft usually contains unpublished sources, personal notes, and unreleased information. A workflow that keeps the draft in a local Markdown file and treats the platform as a publication-only surface is the cleanest fit for that threat model.
When to pick which
The choice between Substack, Beehiiv, and Ghost comes down to three questions: how important is the Markdown file as the canonical record, how often do you cross-publish to other platforms, and how technical is your audience.
If the Markdown file is canonical and Ghost is the publication home, Ghost is the right pick. The round-trip fidelity is lossless, the headless API is scriptable, and the cleanup step is essentially zero. Beehiiv is the right pick if you want a larger built-in audience graph and a stronger monetization toolset, with the tradeoff that round-tripping requires re-importing. Substack is the right pick if the audience graph is your primary value and the Markdown file is a one-time source you are happy to leave behind in the platform after the first paste.
For most technical writers in 2026, the best fit is a Ghost primary with a Beehiiv secondary, and Substack reserved for occasional cross-posts where the audience graph matters more than the source fidelity. md2rich is the conversion step that makes this multi-platform pattern realistic — the rich-text paste works across all three composers with the same one-click flow, and the headless API path on Ghost means the high-cadence publish flow stays scriptable end to end.
Try the workflow: Write your next newsletter issue in a local Markdown file, run it through md2rich, paste the result into Substack, Beehiiv, or Ghost. The rich-text conversion is one click, the cleanup is at most a few seconds per post, and the draft stays on your machine until you publish. Client-side, zero upload, no metadata leak.
Open md2rich →