Self-Hosting Ghost vs Substack: Real Costs Compared

Substack takes 10% of subscription revenue plus Stripe fees. Ghost(Pro) charges a flat platform fee instead. Self-hosting Ghost drops the platform fee to whatever your VPS costs. Here's the breakeven math, using this site's own numbers.

Share

This blog runs on self-hosted Ghost, so this comparison isn't hypothetical — it's the platform decision I actually made for this site. I get asked fairly often why I didn't just start a Substack, since it's free and takes two minutes to set up. The honest answer is: for a while, Substack would have been the right call. Past a certain point, it stops being one. Here's the actual math.

The three options

OptionMonthly platform costCut of paid subscription revenue
Substack$010% + Stripe fees (~2.9% + $0.30/transaction)
Ghost(Pro), Publisher plan$29 (billed annually)0% (Stripe fees only)
Self-hosted Ghost$12 (Vultr VPS)0% (Stripe fees only)

Substack charges nothing until you turn on paid subscriptions, then takes 10% of everything that comes in. Ghost, whether you pay them to host it (Ghost Pro) or host it yourself, doesn't take a percentage at all — you just pay a flat fee (or your own server bill) regardless of how much revenue you bring in. Stripe's cut applies no matter which platform you pick, so it's a wash and I'm leaving it out of the comparisons below.

The breakeven math

This site's paid tier is set at $5/month, so I'll use that as the example. At 10% + Stripe, Substack effectively costs you about $0.945 per $5 subscriber per month (10% platform cut plus Stripe's ~2.9% + $0.30). Self-hosted Ghost's flat $12/month cost, by contrast, doesn't move no matter how many subscribers you have.

Set the two equal and solve for revenue: $12 ÷ 10% = $120/month in paid subscription revenue, which at $5/subscriber is 24 paying subscribers. Below that, Substack's percentage-based fee is cheaper in raw dollars. Above it, self-hosting pulls ahead — and the gap keeps widening, because Substack's fee scales with your revenue while a VPS bill doesn't.

Paying subscribers ($5/mo each)Substack feeSelf-hosted Ghost fee
10$5.00 + Stripe$12.00
24$12.00 + Stripe$12.00
100$50.00 + Stripe$12.00
500$250.00 + Stripe$12.00 (maybe $28 if you size up the VPS)

At 500 paying subscribers, Substack is taking roughly $250/month before Stripe fees. My VPS bill for the same 500 subscribers is still $12, maybe a bit more if I bump the instance size for email volume. That's the entire argument for self-hosting a newsletter: the fee structure doesn't punish you for growing.

What Substack gives you that self-hosting doesn't

I don't think self-hosting is the right call for everyone, and I'd be lying if I said otherwise:

  • Zero setup, zero maintenance. Substack works the moment you sign up. Self-hosted Ghost means you're the one patching the server, managing backups, and fixing things when they break.
  • Built-in discovery. Substack's network effect — recommendations, the app, cross-promotion between newsletters — is real distribution that a self-hosted blog doesn't get for free. You have to build your own audience from scratch.
  • No upfront cost. If you have zero paying subscribers, Substack costs you nothing. Self-hosted Ghost costs $12/month whether anyone pays you or not, so don't do this before you have any signal that people will actually pay.

If you're starting from zero with no audience yet, start on Substack. Move only once the math above actually favors it for you — don't switch platforms on principle alone.

What self-hosting actually involves

For what it's worth, this isn't a weekend project the first time. Ghost needs Node.js and MySQL, a domain, TLS, and its own transactional email setup (I use a free-tier SMTP relay for account emails and notifications — Ghost doesn't send its own mail). Image uploads, backups, and the occasional Ghost version upgrade are all on you. None of it is hard, exactly, but it's not nothing either — budget a weekend for the first setup if you've never run a Node app on a VPS before.

I run this Ghost instance on its own small Vultr box, separate from the automation and monitoring stack I wrote about in the SaaS cost roll-up post — mail delivery and image uploads get their own resources instead of competing with everything else.

Disclosure: this post contains an affiliate link to Vultr. If you sign up through it, I may earn a commission at no extra cost to you. I only link to providers I actually use.