I Run My Newsletter for $8/mo. The Self-Hosted Alternative to Beehiiv, Kit, and MailerLite.
The self-hosted alternative to Beehiiv, Kit (ConvertKit), MailerLite, Substack, and Resend. My newsletter runs on Listmonk + AWS SES for $8/mo with a cost comparison at 1k/5k/10k/50k subscribers.
Pricing verified 2026-05-10. Newsletter platforms update their tiers every few months. Re-check before quoting these numbers in 2027.
At 1,000 subscribers, Resend charges $49 a month. AWS SES charges around $5 to send the same volume.
That gap is what newsletter platforms are pricing into your subscription. Some of it pays for software (admin UI, automation, analytics, support). Most of it is margin.
I ran my newsletter on Resend for few months since I started this blog. Last week I migrated to a self hosted Listmonk on Fly.io with AWS SES as the SMTP backend. My monthly bill went from $49 to $8. Every platform I checked got worse the higher I scaled, sometimes brutally so.
This post is the side by side comparison and the honest reality check on whether you should actually do this.
The cost comparison: Resend, Beehiiv, Kit, MailerLite, Buttondown, Substack
Here is what each platform charges to send to a list of N subscribers, assuming roughly 4 sends per month.
| Subscribers | Resend | Beehiiv | Kit | Buttondown | MailerLite | Listmonk + SES |
|---|---|---|---|---|---|---|
| 1,000 | $49 | $0 | $33 | $9 | $10 | $8 |
| 5,000 | $69 | $42 | $66 | $35 | $32 | $8 |
| 10,000 | $90 | $99 | $99 | $59 | $73 | $10 |
| 50,000 | n/a | $499 | $300 | n/a | $360 | $15 |
I checked Beehiiv pricing, Kit pricing (formerly ConvertKit pricing), MailerLite pricing, and Resend pricing every quarter for nearly a year before I migrated. They all scale per subscriber, and the gap between hosted and self hosted only widens as your list grows. This stack stays nearly flat.
Substack is missing because Substack is a 10% revenue share, not a flat fee. If you monetise at $20k/month it costs you $2,000/month to send the email.
The Listmonk + SES line creeps up at scale because AWS SES bills per email sent ($0.10 per 1,000 emails after the free tier). At 50,000 subscribers sending 4 emails a month, that is 200,000 emails for $20. Plus around $8/mo for the Listmonk infrastructure. Maybe another dollar or two for storage and bandwidth. The economics flatten almost completely.
Why platforms price per subscriber
It is not entirely cynical. Hosted newsletter services give you:
- A working admin UI that your non technical co founder can use
- Subscriber management with segmentation, tagging, automation
- Deliverability tooling (warmups, IP rotation, bounce handling)
- Analytics and reporting
- Support when something breaks
- Sometimes a built in audience network (Substack, Beehiiv recommendations)
For a non technical creator who values their time and ships content faster than they want to think about email infrastructure, the per subscriber price often earns its place. Especially at small scale, where free tiers cover you.
The problem is that the per subscriber model scales viciously against power users. Your costs grow with your list, but the marginal cost of sending one more email is almost zero on the wholesale layer. AWS SES, SendGrid, Mailgun all charge fractions of a cent per email. Newsletter platforms repackage that wholesale infrastructure with a UI and charge per subscriber.
Some of it pays for the UI. A lot of it is margin.
The alternative stack
Three components, each does one thing.
Listmonk is the open source newsletter platform. Admin UI, subscriber management, campaign builder, automation, bounce handling, double opt in flows. I run it on Fly.io for around $8 a month. Shared CPU 1x VM (256MB RAM is plenty), 1GB Postgres, 1GB persistent volume.
AWS SES is the SMTP backend. The actual sending. After the free tier (62,000 emails a month if you send from EC2, 200 a day otherwise), it is $0.10 per 1,000 emails. My current monthly SES bill is under a dollar.
Cloudflare Workers is optional. I use it for my custom signup form integration so the form on this site talks to Listmonk’s API rather than embedding their hosted form. The free tier covers it comfortably.
Listmonk handles double opt in, transactional welcome emails, bounce handling via SNS webhooks, and campaign sends. It is feature complete for what I need. The admin UI is fine, not beautiful, but I am the only person using it.
The complexity reality check
I will not pretend this is easy.
The migration took me about 12 hours of focused work spread across 3 days. Most of that was AWS SES setup. Domain verification (DKIM, SPF, DMARC), getting out of sandbox mode, configuring SNS for bounce and complaint handling. AWS documentation is comprehensive but assumes you know what every acronym means.
Listmonk on Fly.io was 30 minutes. The fly.toml config, secrets, Postgres attach, single command deploy. The Listmonk admin wizard handles initial setup.
The pain point in my migration was the custom domain. I wanted lists.suganthan.com to host the Listmonk admin and unsubscribe pages, but Fly’s Let’s Encrypt validation kept failing. Cloudflare in front of Fly broke in two different ways depending on SSL mode. After a few hours I gave up and used the default suganthan-listmonk.fly.dev hostname. Functional impact: zero. Cosmetic impact: the unsubscribe link in your email footers shows a .fly.dev domain instead of yours.
This is not a 30 minute migration. If your time is worth $200 an hour and the migration takes 12 hours, that is $2,400 in opportunity cost. At the savings of around $40/month I am seeing now, payback is about 5 years.
But the savings get worse for the hosted platform the higher I grow. At 5k subscribers I would be saving around $60/month. At 10k, around $90. The payback math improves with every milestone.
Things that surprised me
Mail tester score: 9.3/10 on the first send. Authentication is fully solved if you follow AWS SES’s documentation. DKIM, SPF, and DMARC all PASS without me having to debug anything.

AWS SES sandbox approval was fast. I expected weeks based on horror stories online. It took about 8 hours. They asked one follow up question (use case, opt in mechanism, bounce handling plan), I replied, they approved. Production access at 50,000 emails per day, 14 per second.

11% of my Resend list were bots. I exported the audience as CSV before importing to Listmonk. A short Python filter flagged obvious bot signups: titles as first names (“Dr. Pauline Feil”), disposable email domains (sigismail.com and similar), name and email mismatches. Out of 1,247 contacts, 141 were filtered out. The 1,107 clean subscribers are what got imported. If I had imported all 1,247, those bots would have tanked my bounce rate on the first send and damaged my domain reputation immediately.
Listmonk imports CSV subscribers as unconfirmed by default, even on a single opt in list. I spent 20 minutes debugging why my first test campaign returned “no subscribers to target” before finding this in the Listmonk source. Fix is a single bulk API call to flip them to confirmed. Worth flagging if you migrate.
The first broadcast had 71 hard bounces. Out of 988 sends, 71 came back as hard bounces and got auto blocklisted via the SNS webhook chain. This was expected. Resend had been sitting on these dead addresses for years, and Listmonk is now self cleaning. Future sends will have a much lower bounce rate.
Who this is NOT for
Be honest with yourself.
- If you have under 500 subscribers, every platform’s free tier covers you. The complexity is not worth it yet. Stay where you are until you have actual scale to justify the engineering time.
- If you are not technical, this stack will eat you alive. You need to be comfortable with terminals, AWS console navigation, Docker basics, DNS records, and reading log files when something breaks. If reading the previous sentence felt stressful, do not do this.
- If you want monetisation built in, Substack and Beehiiv handle paid subscriptions, Stripe integration, paywall logic. You can add Stripe to a self hosted setup but it is a different project.
- If you rely on platform discovery (Substack network, Beehiiv recommendations, Buttondown’s Discovery feed), self hosting cuts you off from that. You become responsible for your own growth channel.
- If you hate operational overhead, you will hate having a small Fly app to monitor. Mine has been up for 5 days with zero issues, but eventually something will break and you will need to ssh in or read logs.
Who this IS for
- You are looking for an alternative to Beehiiv, Kit (ConvertKit), MailerLite, Substack, or Resend because your monthly bill keeps climbing and you can read the pricing page well enough to know it is only going to get worse.
- You have over 1,000 subscribers and you are paying $20 to $100 a month for a hosted newsletter.
- You are growing, and the savings compound massively as you add subscribers. At 10k you save around $90 a month. At 50k you save around $300 a month. The difference at scale is real money over a year.
- You are comfortable with the terminal and basic AWS. You have done at least one weekend project that involved deploying something and understanding bounce handling does not scare you.
- You would rather own your infrastructure than rent it. You like the idea of a stack you can poke at, modify, run scripts against, and not be at the mercy of pricing changes from a vendor.
- You are not relying on the platform’s discovery network. You bring your own subscribers, through your own channels.
The savings calculator (one line takeaway)
At 5,000 subscribers, this stack saves you around $700 a year compared to most hosted platforms. At 10,000, around $1,000. At 50,000, around $5,000+. Payback on the 12 hours of setup is roughly 2 to 4 months at any reasonable subscriber count.
The wider point
Email is one of the cheapest things on the internet to send. The infrastructure that powers it (SMTP, SES, SendGrid, Postmark) costs pennies per thousand emails at the wholesale layer. The technical hard work of deliverability, authentication, bounce handling, and IP reputation is largely solved.
Newsletter platforms repackage that wholesale infrastructure with a UI and charge per subscriber. That is a legitimate business when the UI delivers genuine value to a writer who would not otherwise ship.
It is also a model that scales viciously against power users. If you are growing, the maths stops favouring you somewhere between 5k and 10k subscribers. After that point, every additional subscriber costs you more than it should.
Self hosting is one answer. It will not be everyone’s answer. But you should know it exists.
I migrated last week. The math kept making more sense the more I ran it. If you are sitting at the same point on the curve, run your own numbers. They might surprise you.
If you are curious about the migration itself (the AWS SES setup, Listmonk on Fly.io, the bounce handler webhook chain, the bot filter script), let me know in the comments below or on LinkedIn. If there is enough interest I will write up the technical walkthrough as a separate post.
You might also like
Stay in the loop
I'll email you when I publish something new. No spam. No fluff.
Join other readers. Unsubscribe anytime.
Entrepreneur & Search Journey Optimisation Consultant. Co-founder of Keyword Insights and Snippet Digital.