Skip to content

Benchmarks ​

This page compares the default transfer settings, other fixed settings and transfer-tuning: auto on 3 providers and 3 cache sizes. See Performance for what the settings do and how to select them.

How the numbers were measured ​

  • Run 39906947417 of the Transfer benchmark workflow, on 2026-10-23.
  • Runner: ubuntu-latest, linux x64, 4 CPUs, 16 GiB RAM, node v24.21.0.
  • Each configuration ran 2 times. The tables show the median transfer rate in MiB/s.
  • The payload is random bytes, so the archive is about as large as the payload.
  • The transfer rate is the S3 transfer alone. It does not include tar, compression or the sha256 check.
  • Bold is the fastest fixed configuration in that column, and the auto row when it is as fast or faster.
  • The auto rules come from an earlier sweep, run 39905131759. This page uses a different run, so the auto rows are not the data the rules were fitted to.
  • The jobs for the three providers ran at the same time. The numbers depend on the region, the runner and the time of day. The same configuration can change by more than 30% between runs. Compare rows inside one table, not numbers between runs.

transfer-tuning: auto against the defaults ​

A value above 1 means that auto was faster than the defaults.

RestoreAmazon S3Cloudflare R2Google Cloud Storage
128 MiB1.13×3.22×1.60×
512 MiB1.25×2.08×2.05×
2 GiB1.46×2.89×2.62×
SaveAmazon S3Cloudflare R2Google Cloud Storage
128 MiB1.75×1.82×1.58×
512 MiB1.34×1.20×1.11×
2 GiB1.40×1.86×1.30×

128 MiB cache ​

Restore ​

DownloadAmazon S3Cloudflare R2Google Cloud Storage
defaults: 8 x 8 MiB1214767
8 x 16 MiB129126101
16 x 8 MiB13413380
16 x 16 MiB129115108
32 x 8 MiB14112585
32 x 16 MiB131115100
32 x 32 MiB1207595
transfer-tuning: auto136150108

Save ​

UploadAmazon S3Cloudflare R2Google Cloud Storage
defaults: 8 x 64 MiB572760
8 x 16 MiB1084387
16 x 16 MiB1014488
16 x 32 MiB744378
32 x 16 MiB1085394
transfer-tuning: auto994995

512 MiB cache ​

Restore ​

DownloadAmazon S3Cloudflare R2Google Cloud Storage
defaults: 8 x 8 MiB23010282
8 x 16 MiB278159144
16 x 8 MiB278224151
16 x 16 MiB303182188
32 x 8 MiB283216181
32 x 16 MiB266217171
32 x 32 MiB275201196
transfer-tuning: auto288211168

Save ​

UploadAmazon S3Cloudflare R2Google Cloud Storage
defaults: 8 x 64 MiB161102186
8 x 16 MiB13178117
16 x 16 MiB22798186
16 x 32 MiB238136210
32 x 16 MiB130142198
transfer-tuning: auto216123206

2 GiB cache ​

Restore ​

DownloadAmazon S3Cloudflare R2Google Cloud Storage
defaults: 8 x 8 MiB2499689
8 x 16 MiB330227162
16 x 8 MiB338268183
16 x 16 MiB386258227
32 x 8 MiB377273226
32 x 16 MiB352271258
32 x 32 MiB371277269
transfer-tuning: auto364278233

Save ​

UploadAmazon S3Cloudflare R2Google Cloud Storage
defaults: 8 x 64 MiB265122245
8 x 16 MiB16272130
16 x 16 MiB289139239
16 x 32 MiB351176317
32 x 16 MiB401241315
transfer-tuning: auto370226318

Run the benchmark yourself ​

sh
gh workflow run benchmark.yml -f size-mb=128,512,2048 -f matrix=sweep -f repeats=2
gh run download <run-id> --dir bench
node tests/ci/benchmarkPage.ts bench docs/guide/benchmarks.md [rules-run-id]