Measured on the same machine, both uncached

Your WordPress sites.
50× faster.
A fraction of the cost.

BookPress serves WordPress sites from a compiled native engine instead of the PHP stack. Same themes, same admin, same URLs. Every page renders from scratch in well under a millisecond, with no cache in front of it, and an idle site costs megabytes, not gigabytes.

Request early access See how it works
0.33 ms
to render the front page, uncached. The same page on the WordPress stack: 42 ms
9.5 MB
memory for the whole site. The WordPress stack beside it: 229 MB
10,000+
sites per server, most idle for the price of storage
1-click
migration for supported stacks, URLs preserved
The benchmark

Same machine. Same theme. Same content. One of them now has a cache.

Naive WordPress runs the official Docker image: Apache, mod_php, OPcache, MariaDB, no page cache. Optimized WordPress is the same stack with a real page cache added, WP Super Cache, installed and switched on, with every cache hit below verified by response headers, by WP Super Cache's own markers, by a page-generation timestamp that stays frozen across repeat requests, and by the cache file on disk. BookPress runs BookPress. All numbers are keep-alive p50 latencies from the same benchmarking client, at the same settings, on one machine, each stack measured with the other two shut down.

Methodology: one machine, identical Twenty Twenty-Five theme and seed content, each stack measured with the other two stopped so they cannot compete for it. Naive WordPress is the official Docker image, Apache and mod_php with OPcache, MariaDB, no page cache. Optimized WordPress is the same stack, the same compose file, plus WP Super Cache, configured the way a competent host would configure it: search excluded from caching, everything else cached, anonymous visitors only, and the hit proven before a single sample is taken. Keep-alive p50, one connection, 200 requests per run, median of three runs. The whole thing is one script: tools/wp-bench/run.sh, which writes the table below into RESULTS.md along with the hardware, the date and the spread between runs. Numbers here were measured on a 2021 laptop (i5-1135G7) under WSL2, and they are that machine's numbers, not a claim about your server.

The capacity chart is a different measurement with a different client: 16 concurrent keep-alive connections, one request outstanding on each, driven at every stack in turn. A per-second figure taken on one connection is just one divided by the latency, so it is not a capacity at all, and we no longer publish one. Nothing is pinned to particular cores in that test, because the WordPress legs run inside a Docker VM and cannot be, so pinning only BookPress would be comparing a constrained engine with an unconstrained one. The load generator is on the same four cores as whatever it is driving, which makes every capacity number here a floor for both engines rather than this hardware's ceiling.

A word on the honest limits: both WordPress legs are reached through Docker's port forwarding and BookPress over plain loopback, and that transport costs 0.40 ms on both WordPress paths and 0.21 ms on ours before either engine does anything. It is in the table so you can subtract it. At 42 ms it changes nothing; against the 0.98 ms cache hit it is most of the gap, which is why we do not headline that comparison. Absolute numbers also move with the machine's mood far more than people expect: an earlier published run of this same script, on this same laptop and the same WordPress image, measured the front page at 99 ms rather than 42 ms simply because the box was busier. That is why the ratios are the claim, why the script prints the spread for every cell, and why it now refuses to run at all when the machine is loaded.

A note on bytes: every stack here compresses. Apache's mod_deflate ships enabled in the official WordPress image, and BookPress compresses natively, no plugin, no server config. WordPress produces 67 KB of markup for this page and ships it as 11.6 KB gzipped. BookPress produces 21 KB of markup for the same page and ships 4.0 KB. Compressing costs BookPress about 0.44 ms, already included in the gzip row below.

Numbers as a table
WordPressOptimized WordPressBookPress
Front page, cache miss (p50)41.8 ms42.2 ms0.33 ms
Front page, cache hit (p50)41.8 ms0.98 ms0.33 ms
Blog post, cache miss (p50)48.5 ms49.5 ms0.41 ms
Blog post, cache hit (p50)48.5 ms0.99 ms0.40 ms
Search ?s=hello (p50)43.2 ms42.9 ms0.38 ms
Transport floor, subtract to compare engines0.40 ms0.40 ms0.21 ms
Pages/s, 16 concurrent, front page1024,0888,843
Pages/s, 16 concurrent, page the cache can't serve103795,693
Memory, whole stack~229 MB~165 MB~9.5 MB
Transfer size, front page (gzip)11.6 KB11.7 KB4.0 KB
Front page, gzip on (p50)41.7 ms4.7 ms0.77 ms
Compatibility

Still WordPress. Just without the weight.

Every WordPress request today spins up a PHP interpreter, loads core, theme, and plugins, and talks to a MySQL server. Then it does it all again for the next visitor. BookPress replaces that machinery with a compiled engine and keeps everything your site actually is: the content, the theme, the admin.

Your theme renders for real

Block themes like Twenty Twenty-Five render natively. Templates, template parts, patterns, and global styles produce the same HTML and CSS WordPress produces, from the same unmodified theme files.

Your admin keeps working

Log in at /wp-admin like always. Dashboard, posts, pages, editor, settings. Your existing WordPress password verifies as-is after migration. No resets, no new accounts.

Your data, unchanged

Migration streams your WordPress content straight in. Everything imports losslessly and exports back out just as cleanly. It stays your data, in both directions.

Your URLs stay put

Permalinks, pagination, archives, even ?p=123 redirects behave exactly like WordPress. Your SEO never notices the engine swap.

Scope

Built for the sites most of the web is made of

BookPress doesn't try to run every WordPress site on day one. It targets the sites that make up the bulk of the web: brochure and business sites, blogs, portfolios, and agency-built sites on a supported stack. WooCommerce and heavy custom PHP aren't supported yet. A free compatibility scan gives you a per-site verdict before anything moves. Clean fit: migrate in one click. Not a fit: nothing changes for you.

FAQ

Questions people ask first

Is BookPress a WordPress fork?

No. It's an independent engine that implements WordPress behavior in native code: the theme system, the admin, the URLs. Your content and themes stay portable in both directions.

How fast is “fast”, honestly?

Measured, not estimated, across three stacks on the same machine: naive WordPress (the official Docker image, no page cache), optimized WordPress (the same stack plus a real page-caching plugin, proven to actually hit before anything is timed), and BookPress. The front page: 41.8 ms on naive WordPress, 42.2 ms on optimized WordPress when its cache can't serve, 0.98 ms on a verified cache hit, and 0.33 ms on BookPress. Search, a page no cache can serve: 43.2 ms, 42.9 ms, and 0.38 ms.

So: 126× against an uncached front page and 114× against search on that run, and 97× and 52× on the run we published before it. The floor across every run we have taken is about 50×, which is what the headline says. Those are the cases that matter, because they are most of what a real site serves: first visits, anything after an edit, search, logged-in sessions. Against WordPress's genuine best case, an anonymous repeat visit landing on a warm cache, the gap is small: about 3× on the front page, and much of even that is network transport rather than either engine. We are not going to dress that up. A good page cache is fast at the one thing it does, and replaying a stored file is hard to beat. The argument for BookPress is that it needs no cache to be fast at everything else, and that an idle site costs 9 MB instead of 200. The benchmark is one script in the repo, tools/wp-bench/run.sh; run it and you get your own numbers on your own hardware.

What about my plugins?

Common functionality (SEO, forms, utility plugins) is being reimplemented natively, and supported stacks are validated plugin by plugin. The free compatibility scan reports exactly which of your plugins are covered before any migration happens. Heavily custom PHP is out of scope initially, and we'll tell you so up front.

How does migration work?

You install a temporary plugin on your existing WordPress site. It runs a free compatibility scan, then streams your database, uploads, and theme across. URLs and domains are preserved, and existing passwords keep working. Only sites that pass the scan cleanly are accepted. If yours doesn't, nothing changes for you.

What does it cost?

The economics follow from the engineering: an idle site costs almost nothing to keep online, so hosting it can cost almost nothing too. For agencies and hosts, wholesale pricing lands around €1–3 per site per month. More for agencies →

Be first in line

BookPress is in active development, with early access opening for agencies managing portfolios of brochure sites. Tell us about your stack.

hello@bookpress.io