HostlessWP
Open source · early preview v0.1

Your WordPress, running on Cloudflare Workers.

One command moves a running WordPress site onto Cloudflare's serverless platform. The same WordPress, the same plugins and theme, your existing MySQL database. No server to look after, no rewrite, no new CMS.

$npx hostlesswp

Open the live demo → A real WordPress with WooCommerce on Workers. Log in with demo / demo; it resets every 3 hours.

Guided setup for first-timersYour current site keeps runningTop 30 plugins testedRuns on the Workers Free plan
HostlessWP in 36 seconds. Every screen in it is a real page of the live demo.

Why it exists

WordPress without the server

A WordPress site today means a server someone rents, sizes, patches and watches, mostly idle and still sized for the busiest hour. Static exports and headless rewrites remove the server but also the checkout, the logins and half the plugins. HostlessWP keeps WordPress whole and takes the server away.

What the command does

Run it in the folder that holds wp-config.php, on your server over SSH or on a copy of the site. It explains each step before it takes it.

1

Checks your site

Reads wp-config.php and your database, lists your plugins against the tested list, and tells you up front what will not work. Read-only.

2

Connects your database

Your MySQL stays where it is. Cloudflare reaches it through Hyperdrive, over the internet with SSL or through a Cloudflare Tunnel if it is private.

3

Deploys a copy

Packages WordPress, your theme and plugins, copies your media to your bucket, precompiles the PHP, and deploys to a test address. You switch your domain when you are happy.

$ npx hostlesswp ┌ hostlesswp v0.1.0 Move your WordPress site to Cloudflare Workers ◇ Connected to the database ◇ Active plugins (2) │ ✔ WooCommerce │ ? hello not in the tested list yet ◆ How should Cloudflare reach your database? │ ● Over the internet (SSL) │ ○ Through a Cloudflare Tunnel from this server ◇ Database is in Virginia Beach, US: the Worker will run near aws:us-east-1 ◇ Packaged: 2 code bundles, 3877 static files (112.0 MB) ◇ Precompiled 1711 PHP scripts ◇ Your site is live on Workers: HTTP 200 └ Test it: https://wp-example.you.workers.dev

Step-by-step guide →

How it runs

PHP 8.3 compiled to WebAssembly runs inside a Worker. WordPress core is not modified; a small runtime layer connects it to Workers.

VisitorStatic files and cached pages for logged-out visitors are answered without starting PHP.
→
Worker running WordPressphp-wasm with OPcache and precompiled scripts. Placed next to your database, because a page runs dozens of queries one after another.
→
Your MySQLThrough Hyperdrive (connection pooling), over SSL or a Cloudflare Tunnel.

Under the hood →

Our test results

Measured in October 2026 with WordPress 7.1.3 and MySQL 8.0 in US East. Times are PHP processing per page (warm), including database waits; cached pages for logged-out visitors skip PHP entirely. The full method is on the benchmarks page.

SetupPer queryCore home pageWooCommerce home page
Worker near the visitor (Singapore), database in Virginia~230 ms7.7 s19.6 s
Worker next to the database (what hostlesswp sets up)~33 ms~1.2 s~3 s
Next to the database, direct connection without Hyperdrive in progress~2 ms0.07 s0.19 s

Placement is the biggest factor, so hostlesswp finds where your database is and runs the Worker there: that alone made pages 6 times faster. Hyperdrive added about 30 ms per query; the direct connection in the last row removes that and is what we are working on next.

Works today, and what does not

The 30 most-installed plugins load and work at page level. Five had their main flows tested end to end, including a real WooCommerce checkout.

Works

Tested
  • Pages, posts, comments, search and feeds
  • Admin and loginsExisting sessions stay valid
  • REST API and block editor
  • WooCommerce checkoutTested end to end, 14 steps
  • Elementor editor and Yoast sitemaps
  • Your media library and new uploadsKept in your S3-compatible bucket (R2, S3, B2, MinIO)
  • Page cache for visitorsLogged-out pages answered from Workers KV without starting PHP
  • WP-CronFrom a Cron Trigger every 15 minutes

Not yet

Known limits
  • Email through PHP mail()Use a mail plugin that sends over an HTTP API
  • Installing plugins from the adminChange them on your source site and redeploy
  • Multisite
  • Redis or Memcached object cachesWordPress uses its built-in cache
  • ImagickImages are processed with GD

See the full compatibility list →

What you need

Accounts and services you likely have already. hostlesswp checks each one and explains what to change.

A Cloudflare account

The Free plan runs a site in our tests. Workers Paid ($5/month) lifts the Free plan's daily limits of 100,000 requests and 100,000 database queries, for busier sites.

MySQL with SSL

Hyperdrive only connects over SSL. Most managed databases have it on; hostlesswp tells you how to turn it on if not.

An S3-compatible bucket

For your media library, because a Worker has no lasting disk. Cloudflare R2, AWS S3, Backblaze B2 or MinIO all work.

Node.js 20+

Where you run the command. Node 24 or newer also precompiles PHP for faster cold starts.

Questions

Can WordPress really run on Cloudflare Workers?

Yes. Workers have no PHP of their own, so HostlessWP runs PHP 8.3 compiled to WebAssembly inside the Worker and connects it to your MySQL through Hyperdrive. WordPress core is not modified. Cloudflare Pages, by contrast, can only host a static export. The longer answer.

Is it a static export?

No. Real PHP runs for every request that is not answered from the page cache, so checkout, comments, search, forms and logins keep working. See static export vs dynamic WordPress.

Does it change my current site?

No. hostlesswp reads your files and database and deploys a copy to a workers.dev test address. Your current host keeps serving your domain until you add the domain to the Worker yourself. The only database writes are the normal ones any visitor causes when the copy renders a few pages.

Where does my data live?

In your MySQL database, where it is today. Cloudflare connects to it through Hyperdrive with caching turned off. Code goes to your own Cloudflare account and media to your own bucket. hostlesswp keeps no copy anywhere else.

What if a plugin is not on the list?

Most plugins that only use WordPress APIs work. Plugins that write files to disk, need PHP extensions php-wasm does not have, or run long background jobs are the likely problems. Run npx hostlesswp check for a report, then try it on the test address; the source site is untouched either way.

How do I update plugins or WordPress?

Update them on your source site (or the copy you ran hostlesswp on), then run npx hostlesswp deploy. Installing from the Worker's admin is disabled because its file system does not persist.

Is it fast?

Pages for logged-out visitors come from the page cache in milliseconds, without starting PHP. Pages that do run PHP (the admin, carts, checkout) depend mostly on where the Worker runs relative to the database, which is why hostlesswp places it next to the database. See our test results above.

What does it cost?

hostlesswp is free and open source (GPL-2.0-or-later, like WordPress). The Workers Free plan runs a site; Workers Paid ($5/month) raises the daily request limits. You keep paying for your database where it is, and for media storage (R2 has a free tier). What the free tiers cover.

How do I go back?

Point your domain back to your old host. Your database never moved, so nothing needs to be copied back. Media uploaded while the site ran on Workers is in your bucket.

Try it on a copy of your site

Nothing changes on your current host. If you do not like the result, delete the Worker.