EmDash on Cloudflare Workers vs. AWS: What Hosting It Yourself Actually Costs

Editorial Team

If you're setting up an EmDash site and someone told you to "just host it on Cloudflare," that's actually good advice. But it's worth understanding why, especially if you've been looking at AWS and wondering whether the extra complexity is worth it. For most sites, Cloudflare Workers is cheaper, faster, and much simpler to manage.


What Is EmDash?

EmDash is an open-source CMS built by Cloudflare. It stores your content in a database at the edge rather than on a PHP stack on a shared server, which is a different model from most CMSes. It's written in TypeScript, built on Astro, and designed to run on Cloudflare Workers. It also supports Node.js, so you can run it on AWS, but that's the secondary path.

Most hosting comparisons ignore three pricing quirks that actually matter here: Cloudflare's zero egress fees, D1's generous read limits, and Workers' scale-to-zero billing.


What Does It Cost to Host EmDash?

On Cloudflare Workers, most sites pay between $0 and $30/month. On AWS, the same sites typically run $30 to $150/month or more, depending on which services you stack. The gap is widest for small and medium sites — at very high traffic, AWS gets more competitive, especially if you're already deep in that ecosystem.


Cost Breakdown by Traffic Level

Site Type Monthly Requests Cloudflare Workers AWS (ECS/Lambda)
Personal blog ~300K $0 (free tier) $12–$30
Small business ~3M ~$6–$11 $30–$60
Mid-sized publisher ~10M ~$15–$30 $50–$120
High-traffic media ~100M+ ~$50–$100 $120–$300+

Estimates include compute, database, and storage. AWS figures include a baseline Application Load Balancer fee of ~$16/month that many people don't factor in.

Cloudflare's free tier is free, not a trial that expires after 12 months like AWS's. A personal blog with moderate traffic pays nothing. A small business site stays well under $15/month.


Why Cloudflare Workers Costs Less

The biggest factor is egress fees. AWS charges around $0.09 per GB every time data leaves their servers. Cloudflare charges nothing. A media-heavy site serving images and videos to a global audience can easily rack up $50–$100/month in AWS egress charges that simply don't exist on Cloudflare. If your site is quiet at night or on weekends, AWS ECS keeps a server running 24/7 regardless. You pay the same rate as peak hours. Cloudflare Workers only charge when someone actually visits.

Cloudflare also runs your site across 300+ data centers worldwide by default. On AWS, a single region is the baseline, and global performance requires multi-region setup, which means writing Terraform modules or juggling Route 53 routing policies across regions.


What Is Cloudflare D1 and Are There Any Limits?

Cloudflare D1 is the database EmDash uses on Workers. It's a serverless SQLite database that requires no schema migrations or connection pooling on your end. On the free tier, you get 5 million rows read per day, 100,000 writes, and 5 GB of storage.

Upgrade to the $5/month Workers Paid plan and those limits jump: 25 billion rows read and 50 million rows written per month are included, with additional storage at $0.75/GB. After that, reads cost $0.001 per million and writes cost $1.00 per million.

The one to watch is the write count if you have an automated content pipeline — lots of scheduled posts or programmatic updates add up on that side. For normal CMS use, D1 is effectively free until you're operating at real scale.


The Hidden Costs of Hosting EmDash on AWS

If you run EmDash on ECS (AWS's container service), you almost always need a load balancer. That's a fixed ~$16/month just for the load balancer to exist, before a single traffic charge appears.

Data egress at $0.09/GB comes next. A site with 10 GB of monthly traffic might see under $1. A media site serving video or large image files can add $50–$100.

AWS's managed database (RDS) starts around $15–$25/month for the smallest instance, and unlike D1, it doesn't scale to zero. You pay whether or not anyone is querying it. Running in multiple availability zones for reliability roughly doubles your compute costs, but it's what you need to match Cloudflare's built-in uptime story.


Is Cloudflare Workers Faster Than AWS for a Global Audience?

Generally, yes. The gap is most obvious for visitors far from the primary server.

When someone in Tokyo visits a site on Cloudflare Workers, they're hitting a server in Tokyo (or close). On a standard AWS setup in us-east-1, that same visitor hits a server in Virginia. The extra distance adds latency you can feel. In typical benchmarks, Cloudflare Workers delivers pages in under 50ms globally; a single-region AWS setup often runs 150–300ms for visitors in Asia or Europe.

If your audience is spread across multiple countries, this is worth factoring in.


When Does AWS Make More Sense?

Most of the time, the honest reason to stay on AWS is that your team already lives there. If you have existing infrastructure, AWS expertise, and backend systems running inside a VPC, the cost of switching context to Cloudflare may outweigh the savings.

The main technical case for AWS is database flexibility. D1 is SQLite, which handles most CMS workloads comfortably. But if you're building something with complex table relationships, heavy reporting queries, or PostgreSQL-specific features, AWS RDS or Aurora is the better fit. D1 also has a 10 GB per-database cap on paid plans. That's fine for most sites but a hard ceiling for large content archives.

Some third-party integrations and GPU-dependent pipelines also assume a standard Node.js environment, which Lambda or ECS provides without the V8 isolate constraints of Workers. If your content pipeline needs model training or tight integration with SageMaker or Bedrock, AWS is the natural home.


Quick Guide: Which Platform Should You Choose?

Your situation Best choice
Personal blog or portfolio Cloudflare Workers — free tier covers it
Small business website Cloudflare Workers — under $15/month
Global audience, any size Cloudflare Workers — edge-native speed
Mid-sized publisher, standard content Cloudflare Workers — $15–30/month
Complex database needs or large content archive AWS
Already on AWS with an existing team AWS
High-traffic media site Either — costs converge here; compare your DB needs
Edge delivery + heavy backend Both — Cloudflare in front, AWS behind

Frequently Asked Questions

Is EmDash free to host? The software itself is free and open source (MIT license). On Cloudflare Workers, personal blogs and light-traffic sites run for free under the Workers free tier. Paid plans start at $5/month.

How does D1 compare to MySQL or PostgreSQL? D1 is SQLite. It handles most content sites without issue. It doesn't support every advanced query type and has a 10 GB per-database cap on paid plans. If you need Postgres features or a very large content library, AWS RDS is the better fit.

What happens when you exceed Cloudflare's free tier? Your site stays up. Requests above the free tier bill at $0.30 per million. Upgrading to the $5/month Workers Paid plan gets you 10 million requests included, which covers most small-to-medium sites entirely.


If you're starting fresh, just use Workers. Not managing servers is worth more than the cost difference for most people, and the free tier is generous enough to get a real site running before you spend anything. The sites that outgrow D1 know it because they're running reports against millions of rows. If you're not sure whether that's you, it isn't.

Comments

Loading comments...
emdash cloudflare workers hosting costs aws comparison serverless web hosting
Share: Twitter LinkedIn