Build1 publisher2 min readPublished
Cloudflare runs its main blog on pre-1.0 EmDash, load-tested to 7,000 requests per second
Cloudflare moved its main blog from WordPress to EmDash, its own TypeScript CMS, on a Worker stack tested to 7,000 requests per second. The test ran on a cached blog built from Cloudflare services, so the figure carries over only to sites whose pages cache as well.
The Engineer · Build desk

What happened
- EmDash, Cloudflare's open source TypeScript CMS, first shipped as a v0.1.0 developer preview in April, pitched as a successor to WordPress.
- In production the blog runs EmDash on a Worker behind Workers Cache and a KV-based object cache, with Hyperdrive connecting it to a PlanetScale database.
- The blog usually serves about 75 requests per second, and its traffic spikes go above 5,000.
- A proxy Worker moved readers from WordPress to EmDash, starting at 1% of traffic and reaching 100% within a single day.
- Editors reported early problems with the editing experience and scheduled posts, and Cloudflare has not set a date for EmDash v1.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- constraint Teams hosting EmDash off Cloudflare have no production reference to plan against, since the one documented deployment depends on Workers, KV and Hyperdrive.
- decision A team leaving WordPress for EmDash now has to choose between running pre-v1 code in production and waiting for a v1 release that has no date.
- capability The cookie-routed proxy with per-request fallback can be copied for any CMS cutover where a Worker sits in front of both old and new sites, whatever the new CMS is.
The load-test result depends on how much traffic the caches absorb. The report does not say what share of the 7,000 requests per second in the load test got past Workers Cache and the KV object cache to PlanetScale, or what the hit rate was [2][4].
Measured against the blog's own traffic, the test is about 93 times typical load [1] but only 1.4 times the level its spikes exceed [2]. The second ratio is the one a blog plans around, because spikes are the load it has to survive. For the 7,000 figure to transfer to another site, that site's pages would need to be read far more often than they change, and served mostly from cache.
The latency evidence is a p95 chart, green for the old platform and yellow for EmDash [7]. Its authors are Kody Jackson, senior manager of content engineering, systems engineer Diogo Carneiro and senior design engineer Amy Dutton [14]. "Where the previous platform experienced periodic latency spikes under load, the new system maintains a remarkably flat, consistent response profile," they wrote [8]. They credit the result to "running EmDash on Cloudflare Workers alongside our new caching layers" [9]. By that account the chart compares two whole architectures, so it cannot isolate what EmDash contributes apart from the caches.
The cutover is the best-engineered part of the write-up. "This Worker set a version cookie on requests, which then let us route incoming traffic to the new or legacy experience accordingly," the team wrote. "Additionally, this strategy allowed us to fall back to the legacy blog if the new site experienced any 500 errors." [11] When EmDash failed with a 500, the reader got the WordPress page. The trigger is narrow, though. A page that renders wrongly with a 200 status passes straight through, and so does a stale cache entry. The fallback also required WordPress to stay up for the whole rollout.
Cloudflare calls itself "Customer Zero" for EmDash [6]. Customer Zero has one advantage no outside adopter gets: the CMS is developed in-house, so the editors' bug reports went to colleagues [1][13]. Scheduling, one of the problem areas, is also among the actions the new EmDash MCP server gives authors, along with browsing, creating, editing and publishing [12][13].
What to watch
- An EmDash v1 release date, and whether it includes fixes for the editing and scheduled-post issues Cloudflare's editors reported.
- A production EmDash deployment outside Cloudflare, particularly one not running on Workers, KV and Hyperdrive.
- Cache hit rates or PlanetScale request counts from the 7,000 RPS load test.