Upload/download latency and throughput benchmarks for object storage providers. 10 MB file size, 100 iterations.
Provider | Score | Upload (med) | Download (med) | Throughput (med) | Success |
|---|---|---|---|---|---|
| Archil | 97.1 | 431ms | 134ms | 628 Mbps | 100% |
| AWS S3 | 96.3 | 603ms | 164ms | 510 Mbps | 100% |
| Azure Blob | 96.2 | 146ms | 219ms | 383 Mbps | 100% |
| Tensorlake | 96.0 | 459ms | 152ms | 552 Mbps | 100% |
| Tigris | 95.1 | 426ms | 309ms | 271 Mbps | 100% |
| Neon | 94.0 | 983ms | 152ms | 550 Mbps | 100% |
| Vercel Blob | 92.9 | 244ms | 1097ms | 76 Mbps | 100% |
| Mosaic | 86.2 | 902ms | 264ms | 318 Mbps | 99% |
| Cloudflare R2 | 86.1 | 865ms | 535ms | 157 Mbps | 100% |
| GCS | 0.0 | 0ms | 0ms | 0 Mbps | 0% |
Want to see a provider added?
The benchmark uploads and then downloads files of configurable size (1 MB, 4 MB, 10 MB, and 16 MB) to a bucket in each provider, measuring the time for each operation independently. This page displays the 10 MB results.
Three metrics are captured per iteration: upload latency, download latency, and throughput (Mbps, computed from download timing).
Each provider is tested with 100 iterations per run. Benchmarks run automatically via GitHub Actions on a recurring schedule. All results are committed to the public benchmarks repo.
The Composite Score is a weighted blend of upload and download latency metrics plus throughput, multiplied by the success rate. Latency is scored against a fixed 30-second ceiling: 100 × (1 − value / 30,000ms); throughput is scored on a 1–1000 Mbps scale.
The weighted score is multiplied by the success rate (0–1), so providers that fail frequently are penalized proportionally.