On this page
What is EmDash? EmDash is Cloudflare’s open-source, MIT-licensed CMS, a full-stack TypeScript app built on Astro that runs serverless on Cloudflare’s edge. Cloudflare calls it a “spiritual successor to WordPress,” and it’s designed to run with no PHP server to patch, content you actually own, and no lock-in to a single host.
It launched on April 1, 2026, and no, it’s not a joke. Cloudflare moved its own high-traffic blog onto EmDash in August, and version 1.0 is arriving around Birthday Week in late September. If you build or run websites, it’s worth understanding what this thing actually is. Here’s the plain-English tour.
EmDash in one sentence
EmDash is a modern content platform that scales to zero on Cloudflare Workers, stores your content as portable data instead of HTML, and runs plugins in security sandboxes, but can also self-host on plain Node if you’d rather not touch Cloudflare.
That combination is the whole idea, and each piece is a deliberate reaction to a WordPress pain point.
The architecture, piece by piece
EmDash is built from boring, well-understood parts. Nothing here is exotic, that’s a feature.
Astro 6 as the framework
The site and admin are built on Astro 6 with TypeScript. Astro renders content-heavy pages fast and ships almost no JavaScript by default, which suits a CMS well. Themes are Astro components, not a bespoke templating language, if you know Astro, you already know how to theme EmDash.
Cloudflare Workers for compute
EmDash deploys to Cloudflare Workers in server-side-rendering mode, not static Pages. That distinction matters: it means dynamic routes, live previews, and an admin panel that all run at the edge. Because Workers scale to zero, you pay for CPU time when requests come in, not for a server idling at 3am.
D1 for the database
Content and structured data live in D1, Cloudflare’s serverless SQLite. When you first deploy, wrangler provisions the D1 database for you, and EmDash applies its migrations automatically on the first request. There’s no separate database server to stand up. (The deploy guide walks through this.)
R2 for files
Images, downloads, and other media live in R2, Cloudflare’s object storage. R2 has no egress fees, a real cost advantage over traditional hosts that meter bandwidth.
Worker isolates for plugin sandboxes
This is what separates EmDash from the CMSes that came before it. Plugins don’t run with full access to your server. Each one runs inside an isolated Worker and can only do what its manifest explicitly declares, more on that in how EmDash plugins work.
Content is JSON, not HTML soup
WordPress stores posts as HTML, frequently tangled with shortcodes and page-builder markup. EmDash stores content as portable JSON (Portable Text), structured, queryable data made of headings, paragraphs, images, and code blocks, not a blob of markup.
The practical wins:
- Re-theme without rewriting content. Presentation lives in the theme; content stays clean.
- One source, many outputs. Send the same content to a website, an app, or an API.
- Clean migrations and backups. You’re moving structured data, not scraped HTML.
The admin panel
EmDash ships a real admin, mounted at /_emdash/admin. Editors get a proper place to write and manage content, this isn’t a headless-only tool that assumes everyone’s a developer. Scaffold a new project with npm create emdash@latest and the admin is there from the first deploy.
Why Cloudflare built it
A few motivations line up:
- The web needs a modern default. WordPress runs a huge share of the web but carries decades of PHP baggage and a security surface big enough to sustain an entire “hardening” industry.
- It showcases the platform. EmDash is a flagship demonstration of Workers, D1, and R2 working together, and Cloudflare runs its own blog on it, so it has real skin in the game. That blog absorbed a 28,000 RPS DDoS and 5,000 RPS spikes on EmDash.
- AI-native content is coming. EmDash ships an MCP server and agent skills so AI agents can manage content and build themes directly. That’s a bet on where CMS work is heading, see EmDash for AI agents.
Who EmDash is for
Be honest about fit. EmDash suits you if:
- You want a modern, serverless content site without managing servers.
- You’re comfortable in the JavaScript/TypeScript world (or you have a developer who is).
- You value security and cost predictability over a giant plugin marketplace.
It’s a harder sell right now if:
- You depend on a specific mature WordPress plugin with no equivalent.
- You need a large ecosystem and polished docs today, the ecosystem is young and the docs are still being written.
- You want turnkey ecommerce; there’s no official store plugin yet.
If you’re weighing the switch directly, our EmDash vs WordPress comparison lays out the trade-offs category by category.
The honest state of things
EmDash is early. It’s in the 0.x → 1.0 window, the plugin ecosystem is small, and sandboxed plugins require a paid Cloudflare account (Dynamic Workers start at $5/month). But it’s real, it’s shipping, and Cloudflare is running production traffic on it. If you want to be early on a serverless CMS with serious backing, this is a good moment to learn it.
We cover this because our readers ask about it. What we actually do at 2emdash is rebuild ageing websites on Cloudflare and hand the owner a simple panel to run them from. We’re an independent service, not affiliated with Cloudflare or the EmDash project.