Private preview · 2026-11-03

wp-rust.
The case.

Part 1: ten numbers. Part 2: how it does it. Part 3: why resellers make more. Part 4: how we take the market. Every number on these pages was measured on real sites or real WordPress stacks. Each one carries its fine print at the bottom, because a host that lies about speed lies about everything else.

↓ space or scroll

01 / 10
Uncached · vs SiteGround · real client sites
0×

faster than SiteGround to build a page from scratch.

Three live Elementor client sites that SiteGround hosts today, 15 pages, identical HTML. Median server time, network removed. Range across pages: 4.2× to 9.2×.

Fine print: one Intel i9-13900K performance core vs SiteGround's real serving path (experiment z). Much of the gain is modern hardware + a modern PHP stack; wp-rust's own levers add 1.07–1.30× on top. On a throttled "shared vCPU" profile the range is 1.56–4.3×.
02 / 10
Slowest visitors · p95 · vs SiteGround
up to 0×

faster for the unlucky visitor who hits the slow page.

The 95th percentile is where hosts hide. SiteGround's slow tail is long; ours is flat. Across all 15 pages the slowest-request gap was 6× to 38×.

Fine print: same z runs as 01, p95 server time. 2.3–16× on the throttled profile. Server time, not full page load.
03 / 10
Cached · real Cloudflare · 8 cities, 4 continents
0× faster

first visit than SiteGround's own cache. 71 ms vs 565 ms.

SiteGround cached
565 ms
satoriyoga.ca today
471 ms
wp-rust edge
71 ms

Median first byte 47 ms worldwide (2.7× SiteGround). Sydney 22 ms, Tokyo 26, Frankfurt 52. Distance stops mattering: SiteGround's Singapore visitor waits 1.16 s, ours 132 ms.

Fine print: experiment g2 (PR #24), measured 2026-11-03 via Globalping, datacenter probes, new connection each test, 4 runs per city per page. Synthetic 31-plugin store vs two real SiteGround client home pages (cache HIT). In NA, SiteGround's first byte alone ties ours (servers nearby); the gap is first visits and everywhere else.
04 / 10
Freshness · after 4 ordinary edits
0 stale

pages served. Caching plugins served 97 to 317.

typical page cache: 0–0 stale
wp-rust: 0

Instant cached pages that are never out of date. We purge exactly the pages an edit touches, so editors never hear "clear your cache".

Fine print: satoriyoga.ca clone (WooCommerce + Divi, 26 plugins), 1,500-request replay of its real traffic mix, experiment s, tag purges v1.2. 97 = 10 h TTL plugin, 317 = 24 h.
05 / 10
Flagship · a real store, as it runs today
🐢production today · 2,646 ms
🚀wp-rust · 611 ms
0×

faster uncached on satoriyoga.ca, same site, same plugins.

Fine print: production's uncached path vs wp-rust on amdo-server, measured on the box (no network). The cause is the host and its configuration, not WordPress; production also has Varnish for cached views.
06 / 10
vs a typical cPanel shared host · same CPUs
0×

faster first byte, uncached (best URL). 2.8× less CPU per page.

Shared TTFB
657 ms
wp-rust TTFB
226 ms
Shared CPU/page
580 ms
wp-rust CPU/page
208 ms
Fine print: experiment f, the three most-installed wordpress.org themes on a 31-plugin WooCommerce store; range 2.4–3.1× across 12 URLs; bars show the Hello + Elementor builder page (TTFB) and Astra (CPU). A shared host that resized its OPcache would close most of this gap; most don't.
07 / 10
Database work per request
0× fewer

database queries per page. 4.5× fewer in wp-admin.

shared: 296–318 / pagewp-rust: 59–66
shared: 515–543 / admin screenwp-rust: 115–123

A persistent object cache comes standard on every site, so WordPress stops asking MySQL the same question 300 times.

Fine print: experiment f. Per-site SQLite object cache (experiment h). Shared host measured with no object cache, as cPanel ships it.
08 / 10
Machine resources per site
0 MB

of PHP memory per busy site, against 249 MB on a well-tuned shared host.

WordPress core and popular plugins are byte-identical across sites, so their compiled code lives once in memory and every site maps it read-only. 2.6× less RAM per site, same response times, identical HTML.

Fine print: experiments p/r, 12 identical heavy stores under load (best case for sharing). A single unique site gets no sharing benefit. Prototype; production hardening listed in p.
09 / 10
Idle sites cost nothing
0 MB

held by a sleeping site. Wakes in 0.68 s, not 3.1 s.

Cold PHP start
3.1 s
wp-rust wake
0.68 s

Most agency sites are quiet most of the day. Ours sleep, and anonymous visitors are served from the edge cache while they do.

Fine print: experiments b and p: first request after start with the shared code image (nothing left to compile) vs empty OPcache.
10 / 10
Density → price
~0

small sites per $304/month server. About $1.35 a site, all-in.

That's what lets us sell at half SiteGround's price and still leave the agency a margin, white-label from the first tier.

Fine print: modelled in PR #7 on a Hetzner AX102 (16 cores, 128 GB). Disk is the binding limit; the active/warm/asleep mix is an assumption until real agency sites run on it.
Part 2

How it
actually works.

No rewrite of WordPress. No forked PHP. Every site runs unmodified, on official PHP. wp-rust just makes PHP do far less work. Five moves.

HOW · 1 / 5
Move 1 · the edge answers first

Most visitors never touch our server.

👤VisitorEdmonton
⚡Cloudflarenearest city · cached HTML
🦀wp-rustonly on a miss

Anonymous pages are cached in Cloudflare's 300+ cities. When an editor hits Save, we purge exactly the pages that edit touched, not the whole site and not "wait for it to expire". That's why it's instant and 0 stale.

Fine print: cache policy tested against a 31-plugin WooCommerce store (experiment g): carts, checkout, logins and anything with a session cookie always bypass. Purge accuracy from experiment s.
HOW · 2 / 5
Move 2 · compile WordPress once, for everyone

500 sites run the same WordPress. Why compile it 500 times?

WordPress core and popular plugins are byte-identical across sites. We compile them once into a read-only image every site maps. Each site only keeps its own little bit. 97 MB per busy site instead of 249 MB.

Fine print: experiments p/r. The blocks are illustrative; the 97 vs 249 MB is measured on 12 identical heavy stores (best case for sharing). Prototype; hardening listed in p.
HOW · 3 / 5
Move 3 · quiet sites go to sleep

A site nobody is visiting costs zero memory.

Most agency sites get a handful of uncached hits an hour. Ours unload when idle and wake in 0.4–0.7 s because nothing needs recompiling. Meanwhile the edge keeps serving their cached pages.

Fine print: experiments b, p, r (0.39–0.68 s first request after start vs 2.3–3.1 s cold). The awake/asleep mix of real agency sites is an assumption until we run some.
HOW · 4 / 5
Move 4 · stop asking the database the same question

300 database queries a page → 60.

Shared host
296–318
wp-rust
59–66

Every site gets a persistent object cache and a code cache sized for real WordPress (most shared hosts give all sites 128 MB combined, which a single heavy site overflows). Boring, but it's where most of the uncached speed comes from.

Fine print: experiment f. Honest note: a shared host that configured this properly would capture most of the gain. Most don't, because it costs them memory per account; our sharing (move 2) is what makes it affordable.
HOW · 5 / 5
Move 5 · a PHP build trained on WordPress

Official PHP, compiled knowing what WordPress does all day.

+3–6% on every requestno code changesPHP 5.6–8.5 + ionCube

Profile-guided optimisation: we run real WordPress traffic through PHP, then rebuild PHP to favour those code paths. Small, free, everywhere. We tested ~15 more exotic ideas (JIT, custom allocators, native hot paths, snapshots) and killed every one that didn't hold up.

Fine print: experiments q and x-engine: PGO 1.055× front / 1.033× admin vs official PHP 8.4. Killed list in experiments/README.md.
Part 3

Why resellers
make more.

Speed sells the client. Efficiency is what pays the agency.

RESELL · 1 / 3
More sites on the same server

Busy sites that fit in 104 GB of RAM:

Well-tuned shared host
0
wp-rust
0

2.6× more busy sites per server, and sleeping sites don't count at all. In practice disk, not RAM, becomes the limit: about 500 typical small sites per $304/month box.

Fine print: 104 GB ÷ 249 MB vs ÷ 97 MB per active site (experiment r, 12 identical stores = best case). Each square = 10 sites. 500/box is modelled in PR #7, disk-bound.
RESELL · 2 / 3
When everyone shows up at once
0×

faster at p95 with 12 heavy sites busy on one server, vs a default cPanel host.

cPanel host: 21% of requests failedwp-rust: 0 failed4.5× less CPU per request

Packing sites only works if they don't take each other down. This is the "one client's sale tanks everyone else's site" problem, and it's where shared hosting falls over.

Fine print: experiment f phase 2, 12 heavy sites, 3 req/s Poisson, Zipf popularity. Against a shared host whose OPcache is tuned to match, it's 1.6×/1.8× and equal CPU: again, configuration is most of it.
RESELL · 3 / 3
Where the money goes · one small site, per month
SiteGround StartUp (renewal)
$17.99
Client pays (wp-rust retail)
$8.99
Agency pays us (wholesale)
$4.00
Our cost, all-in
$1.35
client saves 50%agency keeps $4.99 (56%)we keep $2.65 (66%)
Fine print: PR #7 target prices (not yet offered to anyone); cost modelled on Hetzner AX102 + Cloudflare + R2 backups. Honest gap: an agency packing 40 tiny sites into one GoGeek plan pays ~$1.12/site, about what our pool costs; we win there on speed and white-label, not price.
Part 4

How we
take the market.

MARKET · 1 / 3
Who we sell to

Agencies, not site owners. One sale = dozens of sites.

The targetWeb agencies with 20–200 client sites sitting on SiteGround GoGeek / reseller or a pile of cPanel accounts.
Their painRenewal price jumps, slow wp-admin complaints, "clear your cache" tickets, migrations that eat a day each.
The offerWhite-label from the first tier, half the price, faster, never stale, billed monthly with no renewal hike.

WordPress runs roughly 4 in 10 websites. We don't need a sliver of that; a few hundred agencies is a real business.

Fine print: WordPress share per W3Techs. Agency segment sizing and willingness to switch are not surveyed yet.
MARKET · 2 / 3
The wedge

Make leaving SiteGround a one-command job.

1PointAgency connects its SiteGround sites
2CopyFiles + DB pulled read-only, PHP version matched
3VerifyEvery page crawled on both; HTML must match
4SwitchDNS flips only after it passes

Migration is the #1 reason agencies stay put. If moving 40 sites is an afternoon with proof nothing broke, price and speed do the rest.

Fine print: the migrator is designed (MIGRATION.md) and its read-only copy path ran on 3 real SiteGround sites in experiment z; the one-command product is not built yet. Target: under 5 minutes hands-on per site.
MARKET · 3 / 3
Straight talk · what's still to prove

What's proven, and three things left to build.

Real Cloudflare ✓Done: 47 ms first byte from 8 cities, 8× SiteGround on a first visit. Measured.
Real cloud serverEvery speed number so far is on our own hardware, not a rented box.
The migratorDesigned, partly exercised. Needs building.
HardeningThe shared code image needs its security fixes before multi-tenant use.

None of these are research risks anymore. They're build work.

The pitch, honestly

4× faster uncached.
8× faster cached, worldwide.
Never out of date.

Official PHP 5.6–8.5 with ionCube, so every site runs unmodified. A Rust control plane, Cloudflare at the edge, and a one-command verified migrator. Half SiteGround's price.

Cooked up by Andy Doucet. Coded by Gerald.