Upload/download latency and throughput benchmarks for object storage providers. 10 MB file size, 100 iterations.
Powered byProvider | Score | Upload (med) | Download (med) | Throughput (med) | Success |
|---|---|---|---|---|---|
| Archil | 99.6 | 205ms | 43ms | 1943 Mbps | 100% |
| Azure Blob | 99.6 | 127ms | 73ms | 1150 Mbps | 100% |
| AWS S3 | 97.6 | 439ms | 121ms | 692 Mbps | 100% |
| Tensorlake | 97.4 | 302ms | 137ms | 611 Mbps | 100% |
| Tigris | 97.3 | 349ms | 127ms | 660 Mbps | 100% |
| Mosaic | 95.5 | 752ms | 207ms | 405 Mbps | 100% |
| Vercel Blob | 94.8 | 279ms | 385ms | 218 Mbps | 100% |
| Neon | 94.2 | 707ms | 262ms | 320 Mbps | 99% |
| Cloudflare R2 | 93.8 | 1073ms | 354ms | 237 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.