Product/Benchmarks

Requests per second on the same server, with the same data. Measured, published, and yours to repeat.

Benchmarks

Requests per second on the same 2 vCPU server, with the same data and no response cache.

Measured by the project on one server, with about ±10% between runs. Fromcode and Payload were held to one CPU core, the others could use two. Run your own load before you choose. Method and data

2.0×times the throughput of Strapi on a list of 20 records
Fromcode203.4
Payload137.5
Directus109.6
Strapi99.5
Compared

FromcodeWordPressStrapiPayloadGhost, DirectusNestJS, Express
Plugin isolationSandboxed, signedLoose hooksLooseLooseLooseNone
Zero-downtime deploysRolling, built inMaintenance modeManualManualManualManual
Roles and permissionsIn the kernelPluginBasicBasicBasicManual
Two-factor sign-inBuilt inPluginPluginPluginPluginManual
Real timeBuilt inThird partyThird partyThird partyThird partyManual
Background queuesBuilt inWP-CronCustomCustomManualManual
CacheManaged by the kernelPluginsManualManualPartialManual
AI hooksBuilt inPluginCustomCustomManualManual
Vendor lock-inNoneHighMediumMediumMediumLow

From the project's own comparison. Read it in full

Repeat it

The method, the data and the scripts' settings are in the repository.

Method and data

The full comparison

WordPress, Strapi, Payload, Ghost, Directus, NestJS and Express, line by line.