Headless CMS Benchmarks 2026

Self-measured API performance for SveltyCMS — point reads, projected list streams, writes, and the four production database adapters. Every figure names its harness and can be reproduced on your hardware.

Latest recorded runs: 2026-10-12 · production mode · single host · updated 2026-10-29

Headline results

Warm HTTP point read (findById)

16,236 RPS

0.07 ms avg

Random point read (findByIdRandom)

14,737 RPS

0.13 ms avg

Projected REST list (listProjected)

14,059–15,464 RPS

0.45 ms avg

Concurrent creates (8c)

5,266 RPS

HTTP production mode

Concurrent updates (8c)

6,745 RPS

0.51 ms avg

Seed burst

12,406 docs/s

500 docs in 40 ms

Test estate

5,801 tests

637 files in 14.9 s

What the numbers measure

These are HTTP end-to-end results from the in-repo competitive replica. The read lane measures warm requests after cache warm-up; the write lane uses eight concurrent clients. The projected list path streams only the requested fields directly to the wire, bypassing unnecessary JSON serialization. The point-read path uses the generational admission cache described in the October 2026 performance work.

The current ledger also records distance-to-driver: reads reach 114% of the bare-HTTP floor for findById and 213% for listPlain; writes reach 47% (create) and 57% (update) of the bare-HTTP floor, and 35% of the raw in-process driver ceiling at 100k rows.

PostgreSQL competitive replica

8 workers, 10,000 documents, production Node with the full security stack, PostgreSQL 18 container, 2026-09-20. This is the workload a buyer can run against any competing CMS on the same host — not competitor RPS borrowed from a different harness.

WorkloadRPSAvgp95
findById4,5551.75 ms2.45 ms
findByIdRandom1,9874.00 ms5.67 ms
listPlain5,4041.46 ms1.82 ms
listFilterSort5,7131.38 ms1.67 ms
listLarge3,8432.05 ms2.67 ms
findMissing5,9411.33 ms2.48 ms
graphql2,8282.79 ms3.51 ms
create1,2596.31 ms8.28 ms
update1,3006.07 ms7.94 ms
mixed1,7744.37 ms9.65 ms

60-second soak on the same 8 workers: 2,020 avg RPS (min 1,826, max 2,224). Docker Desktop on Windows is not a production PostgreSQL host; treat these as single-host orientation.

Distance to the raw driver

Same host, 2026-10-10, 100k rows, 8 workers. “Raw HTTP floor” is driver + node:http + JSON without the CMS; “raw driver” is the engine without HTTP. CMS ÷ floor is the honest middleware tax.

Op (8-worker)CMS replicaHTTP floorRaw driverCMS / floorCMS / driver
findById8,5277.5k12.2k114%70%
listPlain7,6793.6k6.6k213%116%
create2,9506.3k10.8k47%27%
update3,6786.5k10.6k57%35%
seedBurst13,120 docs/sn/a10.8kn/a122%

Four production adapters

The same benchmark suite runs against SQLite, PostgreSQL, MariaDB, and MongoDB. Engine-specific work is deliberate: SQLite uses WAL mode, group commit, and prepared statements; PostgreSQL uses JSONB with GIN indexing and socket pipelining; MariaDB uses skipReturning and TTL cleanup; MongoDB uses write concern and wire compression.

SQLite

Production-ready

PostgreSQL

Production-ready

MariaDB

Production-ready

MongoDB

Production-ready

Reproduce the runs

Competitive replica

bun test tests/benchmarks/competitive-workload-replica.test.ts

Full matrix

bun run scripts/benchmark-matrix/index.ts

Raw driver ceiling

bun run scripts/benchmark-matrix/raw-db-ceiling.ts --db=postgresql --scale=100000

What we do not claim

  • We do not claim a global speed ranking or a same-harness victory over Strapi, Payload, or Directus.
  • These are self-measured results on a single host, not a third-party certification.
  • Run-to-run spread is up to ±10% for a single run and up to 24% between two identical runs.
  • Your content model, query mix, indexes, and hardware will change the absolute numbers.

Benchmark FAQ

What is the fastest headless CMS API in 2026?

There is no neutral, same-harness ranking across vendors. In our own reproducible harness, SveltyCMS records 16,236 RPS warm point reads at 0.07 ms, 14,059–15,464 RPS projected list reads, 5,266 RPS concurrent creates, and 6,745 RPS updates on a single host. Payload, Strapi, and Directus publish numbers under different conditions, so compare them on your own workload rather than on a single headline figure.

How does SveltyCMS benchmark against Strapi, Payload, and Directus?

We do not claim a same-harness victory over competitors. Our ledger measures SveltyCMS against its own bare-HTTP floor and raw driver ceiling; competitor figures are taken from their public documentation or reported community measurements. The honest comparison is workload-specific: run the same content model, query mix, and hardware before choosing.

What hardware were these benchmarks run on?

The latest headline runs were recorded on 2026-10-12 on a single developer host in production mode. Run-to-run spread on that host is up to ±10% for single runs and up to 24% between two identical runs. Every table names its harness and conditions, and the reproduction commands are published below.

Can I reproduce the SveltyCMS benchmarks?

Yes. Clone the repository and run bun test tests/benchmarks/competitive-workload-replica.test.ts for the HTTP workloads, or bun run scripts/benchmark-matrix/index.ts for the full 4-database matrix. The raw-driver ceiling script is included for distance-to-driver measurements.

Read the full benchmark ledger

The documentation includes per-adapter results, methodology, and the raw run artifacts.