EmDash vs Contentful
Contentful has a real free tier and then a $300/mo one. There is nothing between them. EmDash is an open-source CMS you run on your own server for a flat $7/mo, with your content in a database file you own.
EmDash vs Contentful: The Verdict
Contentful is the better product today, and it is not close on maturity: a global delivery CDN, an app framework, enterprise governance, an uptime SLA, and years of production use behind it. What it does not have is a middle. The Free plan gives you 10 users, 100K API calls a month and one Starter Space, and the moment you need a fourth locale, scheduled publishing or more than 100K calls, the next step up is Lite at $300 a month. Adding a Lite Space to that is another $850 a month. EmDash is the other end of that curve: MIT-licensed, self-hosted, $7/mo flat on InstaPods with no call meter and no bandwidth meter, storing content as Portable Text in a SQLite file on your own pod. The honest catch is that EmDash calls itself a beta preview and ships releases roughly weekly, and its sandboxed plugin isolates are a Cloudflare Workers feature that does not exist on the Node runtime we run it on. If Contentful Free covers you, stay there. If you are staring at the $300 step, a $7 pod is worth a weekend.
Last updated: 2026-09-01Quick Comparison
| Feature | Contentful | EmDash |
|---|---|---|
| Entry price | Free plan, $0/forever | $7/mo flat (InstaPods Build plan) |
| Next tier up | Lite, $300/mo. Nothing exists between Free and Lite | Still $7/mo. There is no next tier to reach |
| Year on the first paid tier | $3,600/yr on Lite | $84/yr |
| API calls | 100K/mo on Free, 1M/mo on Lite, then $5 per extra 1M | Unmetered. Bounded by your pod, not by a counter |
| CDN bandwidth | 50 GB/mo on Free, 100 GB/mo on Lite | Unlimited bandwidth on the pod |
| Editors | 10 users on Free, 20 on Lite | Unlimited. There is no seat meter |
| Locales | 2 on Free, 3 on Lite, custom on Enterprise | Unlimited locales |
| A bigger content space | Lite Space add-on: +$850/mo on top of Lite | Raise the plan or the disk. No content-space SKU exists |
| Records in the included space | 10,000 in a Starter Space, 50,000 in a Lite Space | Whatever fits in 25 GB of SQLite |
| Content format | Contentful rich text JSON | Portable Text, an open structured JSON format |
| Where content lives | Contentful cloud | SQLite on a pod you own, in your daily backups |
| Front end | Headless. Bring your own, any framework | Ships an Astro site, plus a REST API if you want it headless |
| Delivery network | Global CDN, multi-region on Enterprise | One pod in the region you pick |
| Uptime SLA and support | Community on Free, 24/7 and up to 99.99% on Enterprise | Community for the software, InstaPods for the hosting |
| Maturity | Production-proven, years of enterprise use | Beta preview, releasing roughly weekly |
| License | Proprietary SaaS | MIT, about 12,000 GitHub stars |
Where Contentful Gets Expensive
Trade-offs to weigh before committing.
There Is No Middle Plan
Free is $0 and Lite is $300 a month. That is the whole ladder below Enterprise. A small marketing site that outgrows 100K API calls, or that just wants scheduled publishing, has one option and it costs $3,600 a year.
Spaces Are Their Own Bill
Your plan includes one Starter Space capped at 25 content types, 2 environments and 10,000 records. The larger Lite Space is a $850/mo add-on on top of the $300/mo plan. Two real projects can cost more than the plan itself.
Everything Is Metered
API calls, CDN bandwidth, users, roles and locales all have a number attached, and on Lite you pay $5 per extra million API calls. Traffic growth turns into an invoice you did not plan.
You Own the Model, Not the Data
Your entries live in Contentful. The Content Management API lets you export them, but the running system is theirs, and repricing or repackaging is theirs to do.
Why Self-Host with EmDash?
What you get when you pick this stack.
One Price, No Meters
$7/mo gets you 2 vCPUs, 2 GB RAM, 25 GB of disk and unlimited bandwidth. Nothing counts your API calls, your editors, your locales or your records, so a traffic spike is a good day rather than an invoice.
Structured Content You Can Take With You
EmDash stores rich text as Portable Text, an open JSON format, rather than serialized HTML. The same entry renders to a web page, an app screen, an email or an API response, and it is still readable if you leave.
Content Types Without a Deploy
The visual schema builder defines collections in the database from the admin UI, and each one becomes a real SQL table you can generate TypeScript types from. No content-type quota to run into at 25.
Your Database, On Your Pod
Content sits in an embedded SQLite database on the pod, included in the daily backups, reachable over SSH. No Cloudflare account, no D1 binding, no Workers plan.
Real Cost Comparison
A three-person team running one marketing site that has outgrown a free tier: a few locales, scheduled publishing, and traffic past 100K API calls a month.
- Contentful Free no longer fits: 2 locales, 100K API calls, no scheduled publishing
- Contentful Lite: $300/mo
- Overage past 1M API calls: $5 per additional 1M/mo
- A second, larger project needs a Lite Space: +$850/mo
- InstaPods Build plan: $7/mo
- EmDash: free (open source, MIT)
- Unlimited editors, locales, API calls and bandwidth
- HTTPS, custom domain, SSH and daily backups included
Frequently Asked Questions
How much does Contentful cost in 2026?
Contentful publishes three Platform plans. Free is $0 forever and includes 10 users, 2 roles, 2 locales, 100K API calls a month, 50 GB of CDN bandwidth and one Starter Space. Lite is $300 a month and raises that to 20 users, 3 roles, 3 locales, 1M API calls and 100 GB of bandwidth, plus comments, tasks and scheduled publishing. Enterprise is quote-only. A larger Lite Space is a separate $850/mo add-on, and API calls past the Lite allowance are $5 per additional million. Verified on contentful.com/pricing on 2026-09-01.
Is EmDash a real alternative to Contentful?
For a site or a small set of sites, yes. Both store structured content rather than HTML blobs, both expose a REST API, and both let non-developers define content types. Where they part company is scale and maturity: Contentful runs a global delivery network with an uptime SLA and enterprise governance, and EmDash is a single Node process with a SQLite database on one pod. If your requirement list has multi-region delivery, SSO, audit trails or a 99.99% SLA on it, Contentful is the answer and EmDash is not.
What does EmDash cost to host?
$7/mo on the InstaPods Build plan, which is 2 vCPUs, 2 GB RAM, 25 GB of storage, HTTPS, a custom domain, unlimited bandwidth, SSH and daily backups. Build is the floor rather than a preference: updating EmDash rebuilds the Astro site in place, and that build runs out of memory on a 512MB pod. New accounts get a $10 credit when they add a card, so the first month and a half is covered.
Is EmDash production-ready?
EmDash calls itself a beta preview and is shipping releases roughly weekly, so it is early software and worth choosing with that in mind. It is a good fit for a new blog, marketing site or portfolio you are happy to keep current, and a poor fit if you need a stack that never moves. Your pod takes daily backups and updates are one click from the dashboard.
Do I need a Cloudflare account to run EmDash?
No. EmDash runs best on Cloudflare Workers with D1 and R2, but the project ships a first-class Node.js path and that is what runs here: Node 22, an embedded SQLite database and local file storage. One honest consequence is that sandboxed plugin isolates depend on Cloudflare Dynamic Worker Loaders, so that specific feature is a Workers capability and is not available on the Node runtime.
Can I migrate my Contentful content into EmDash?
There is no one-click Contentful importer today. EmDash ships a WordPress import wizard, not a Contentful one, so a Contentful move means exporting through the Content Management API and writing entries in through the EmDash REST API or CLI. Both sides are structured JSON, so the mapping is mechanical rather than lossy, but it is a scripting job and you should budget for it.
Replace Contentful in 30 Seconds
Deploy EmDash on InstaPods and stop paying for features that should be free.
Deploy EmDash