We published daily on Ghost for 30 days — newsletters, paid memberships, and SEO content. Here's how it compares to Substack.
If you're building a publishing business and want to keep 100% of your subscription revenue, own your audience, and control your SEO — Ghost is the platform.
We ran Ghost 5.x (self-hosted) as a full publishing platform for 30 days. We tested: newsletter publishing (daily emails, segmentation, open rates), paid memberships (Stripe integration, tiered pricing, member portal), and SEO & content (meta tags, structured data, page speed, Google indexing). Compared with an active Substack publication running in parallel.
Keep 100% of subscription revenue (0% platform fee vs Substack's 10%), full SEO control (custom meta, structured data, canonical URLs), custom themes and branding, native membership portal, own your email list completely, and built-in website + blog + newsletter in one. No dependency on a platform that could change terms.
Built-in discovery network (Substack Notes, recommendations), zero-setup required, social features (comments, likes, restacks), Substack app for readers, and the powerful network effect of being on a known platform. Substack also handles all payment infrastructure — Ghost requires Stripe setup.
Scored 0–10 based on 30 days of daily publishing.
Feature-by-feature breakdown after 30 days of daily publishing.
| Feature | Ghost (Self-Hosted) | Substack |
|---|---|---|
| 💰 Platform Fee | 0% (Stripe only: 2.9%) | 10% of all paid subs |
| 🌐 Custom Domain | Full control | Custom domain available |
| 🎨 Design/Themes | Full custom themes | Limited to Substack layout |
| 🔍 SEO Control | Full (meta, schema, sitemap) | No customization |
| 📧 Newsletter | Built-in + segmentation | Built-in (simpler) |
| 👥 Discovery Network | None (drive own traffic) | Substack Network + Notes |
| 📱 Reader App | Web only | Substack App |
| 💳 Paid Memberships | Stripe (tiered) | Built-in (simple) |
| 📥 Data Export | Full JSON + members CSV | CSV export (limited) |
| 🔒 Audience Ownership | 100% yours | On Substack's platform |
| ⚡ Setup Effort | Moderate (self-host) | Zero (instant) |
| 🐧 Open Source | MIT License | Proprietary |
Based on 30 days of daily publishing and newsletter sending.
Honest answer based on 30 days of publishing.
The step-by-step process we used during our test.
Two options: Ghost(Pro) — managed hosting starting at $9/mo (recommended for non-technical users), or Self-hosted — install on any VPS via the official one-line installer: ghost install. A $12/mo DigitalOcean droplet (get $200 free credit) handles most publications easily.
In Substack Settings → Export, download your full archive. This gives you all posts, subscriber emails, and metadata. Ghost has a built-in Substack import tool in Labs → Import that processes this export automatically — posts, images, and subscriber list.
Point your custom domain to Ghost (DNS change). Connect Stripe for paid memberships — it takes 5 minutes. Set your membership tiers (free, monthly, annual). Import your paying subscribers' emails — they'll need to re-enter payment info via a migration email you send.
Send a newsletter to all subscribers announcing the move. Include a direct link to the new site. Pro tip: keep your Substack active for 2–4 weeks with redirect notices to catch stragglers. Set canonical URLs on Ghost to avoid duplicate content. Most Ghost migrations see 85–95% subscriber retention.
Real questions from writers considering the switch.
Other tools we've tested in 30-day audits.
If you're earning from subscriptions, Substack's 10% fee is a tax on your growth. Ghost gives you complete control — your brand, your SEO, your audience, your revenue. The only trade-off is Substack's discovery network, which matters less once you've built your own audience. Own your publishing stack.
Build Your Free Publishing Stack →