- My Resume
- My Bio
- My Operating Framework
- Speaking & AI training
- My Blog
- Privacy notice
- GitHub
- Skills for AI
Vercel vs Cloudflare benchmark data from Nairobi (Oct 2026)
Open data behind the blog post Vercel vs Cloudflare for a static Next.js site: what I measured from Nairobi. The same Next.js site ran on Cloudflare (kaikhalid.com, a static export) and on Vercel. I measured both from one Mac on one network in Nairobi, Kenya, on 16 October 2026: 1,200 curl time-to-first-byte requests, 280 Lighthouse 13.5.0 runs and a three-request multi-region check from public nodes.
Result
The hypothesis and the decision rule were written down in the pre-registration before any measurement. By that rule the verdict is partially supported: Cloudflare was faster on time to first byte and on mobile LCP, Vercel was faster on simulated desktop LCP, and Cloudflare cleared the 100 ms LCP bar in 2 of 4 cells, not 3.
| Headline medians | Vercel | Cloudflare |
|---|---|---|
| TTFB excl. DNS, round 1, home | 325 ms | 56 ms |
| TTFB excl. DNS, round 1, post | 328 ms | 59 ms |
| LCP home, mobile (Lighthouse, simulated) | 2954 ms | 2280 ms |
| LCP post, mobile | 3094 ms | 2563 ms |
| LCP home, desktop | 529 ms | 607 ms |
| LCP post, desktop | 519 ms | 595 ms |
Files
| File | Contents | Type | Size |
|---|---|---|---|
| ttfb.csv | Time to first byte, one row per curl request (1,200 requests: 2 rounds × 3 pages × 100 pairs × 2 hosts). | text/csv | 146 KB |
| lighthouse.csv | Lighthouse 13.5.0 metrics, one row per run (280 runs: main, A/A control, beacon blocked, unthrottled). | text/csv | 44 KB |
| multiregion.csv | check-host.net response times, one row per node and host (109 rows). | text/csv | 9.8 KB |
| dataset.jsonld | schema.org Dataset metadata, the same JSON-LD this page carries. | application/ld+json | 5.0 KB |
| README.md | Method, pre-registered rule, verdict, data dictionary and limitations. | text/markdown | 9.8 KB |
| PREREGISTRATION.md | Hypothesis and decision rule, written before any measurement. | text/markdown | 2.2 KB |
| REPORT.md | The full results report. | text/markdown | 4.9 KB |
| timing.py | The curl timing harness. | text/plain | 1.8 KB |
| analyse_timing.py | Analysis script for the timing data. | text/plain | 2.4 KB |
| analyse_lighthouse.py | Analysis script for the Lighthouse data. | text/plain | 1.8 KB |
| benchmark-2026-10-16.zip | Everything above in one download. | application/zip | 68 KB |
The raw Lighthouse JSON reports (about 170 MB) and the run logs are not published.
Licence
This dataset is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You may share and adapt it, including commercially, if you credit the author. Read the licence.
How to cite
Khalid, K. (2026). Vercel vs Cloudflare TTFB and Lighthouse benchmark from Nairobi [Data set]. https://kaikhalid.com/data/benchmark-2026-10-16
What this does not show
- One network, one location and one machine. Much of the gap is geography: Vercel's nearest edge to Kenya is Cape Town and Cloudflare's is Nairobi.
- No Safari, Firefox or real-visitor data, and no test of cost or behaviour under load.
- Every Cloudflare number was measured while Cloudflare was injecting its Web Analytics beacon into the HTML. That injection was switched off later the same day.
The README has the full method, the data dictionary and the remaining limits.
