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
Compared
| Fromcode | WordPress | Strapi | Payload | Ghost, Directus | NestJS, Express | |
|---|---|---|---|---|---|---|
| Plugin isolation | Sandboxed, signed | Loose hooks | Loose | Loose | Loose | None |
| Zero-downtime deploys | Rolling, built in | Maintenance mode | Manual | Manual | Manual | Manual |
| Roles and permissions | In the kernel | Plugin | Basic | Basic | Basic | Manual |
| Two-factor sign-in | Built in | Plugin | Plugin | Plugin | Plugin | Manual |
| Real time | Built in | Third party | Third party | Third party | Third party | Manual |
| Background queues | Built in | WP-Cron | Custom | Custom | Manual | Manual |
| Cache | Managed by the kernel | Plugins | Manual | Manual | Partial | Manual |
| AI hooks | Built in | Plugin | Custom | Custom | Manual | Manual |
| Vendor lock-in | None | High | Medium | Medium | Medium | Low |
From the project's own comparison. Read it in full