Replies: 7 comments 5 replies
-
Maintainer reference baseline (2026-05-07 / 08)Before opening this issue I ran the same matrix on every saved profile on the development host. Posting the result here as a starting point so the community can compare and contrast their own runs. Attachments
Coverage
Rough top-3 from this baseline (1 GiB payload, p50)
Full per-payload tables in Honest disclosureThis baseline is a single-host, single-uplink, single-timezone sample (Western Europe fiber, Linux x86_64). It is published as a starting point, not as a population-level benchmark. The future protocol comparison page on How to add yoursThen comment below with the JSON pasted between the BEGIN / END markers, or open the issue template linked in the body above. Even one report from a different region or connection type is genuinely useful. |
Beta Was this translation helpful? Give feedback.
-
|
The baseline is now also browsable on the docs site, with all 188 throughput data points rendered as inline bar charts (no PDF download needed): docs.aeroftp.app/test-reports/community-benchmark/2026-05-07
Same content as the PDF and zip already attached, just laid out for the browser. The page lives under a new "Performance and benchmarks" section in the test-reports index, separate from the existing capability matrices. Future rounds will land under |
Beta Was this translation helpful? Give feedback.
-
Follow-up: cross-validation against rclone (and a bug we found in ourselves)After publishing the baseline I ran a head-to-head between The cross-check surfaced a real bug on our side, which I want to flag honestly before pointing at any chart:
On a 100 MiB GET this showed up as a -56% download gap against rclone on Storj. Cross-tool A/B confirmed it was the upload side, not the download side:
Same download code, different file: the slowness lived in who uploaded, not who downloads. The fix is Post-fix numbers (100 MiB, 3 timed runs, p50)
*R2 download: Cloudflare R2 sits behind an edge cache that is server-side and applies to any HTTP client. Verified symmetric across both tools — aeroftp on a warm path: 0.6 s (~1.4 Gbps); rclone on a fresh aeroftp-uploaded path: 2.1 s (~390 Mbps). The numbers in the table reflect the path-warmth profile of each harness, not a client-side limitation. Methodology
Take-away for anyone running their own roundYou can absolutely run this comparison yourselves with both clients side by side. With v3.7.5 the numbers should land at parity or in aeroftp's favour on every S3 backend in this round. If you find a backend where they don't, please post the raw JSON and the rclone config, I'd rather hear about a real gap than a ghost one. If you want to script it, the new |
Beta Was this translation helpful? Give feedback.
-
|
I ran some benchmarks using the GUI Speed Test button in v3.8.5 on Windows 10. It only allows me to compare WebDAV and S3. I ran 100MB with SHA-256 and 2 parallel runs twice. For some reason, only Filen WebDAV but not S3, S3Drive and MEGAcmd withstood this in both runs without failing. Not sure what to make of this, other than the fact that we already know that OpenDrive fails on 100MB files and bigger for free-tier accounts: https://www.opendrive.com/pricing. If some of these failed due to the file size, it'd be interesting to add this to the list of max file sizes in the docs on Chunking: #272 (comment). The 2nd run felt stuck like it was going to take forever so I stopped it. Here are the results of the first: aeroftp-speedtest-1780055306040.json I then changed to 10MB and more cloud drives managed to not fail, though Koofr and YandexDisk still failed. OpenDrive passed barely.
Here are the results: aeroftp-speedtest-1780058076787.json I then re-ran the 10MB test and got almost the same results: aeroftp-speedtest-1780059475678.md Then 2 runs of 1MB tests: aeroftp-speedtest-1780059689844.json aeroftp-speedtest-1780060459789.md I conducted these benchmarks with pretty good internet non-fiber cable connection from western Europe. I decided to reply here so there'll be some discussion here, and also to ask if you think it'll be beneficial for me to repeat this benchmark elsewhere, namely the CLI, and I can then open a dedicated Community Benchmark Report issue. Not sure if you want to move those to the Discussions tab, though I do expect some issues at first like Koofr WebDAV not working. By the way, I still need to zoom out/decrease the font a lot to be able to reach the bottom of the Speed Test window to be able to reach the 'Export' and 'Run again' buttons. Recall #133 (comment). The vertical scrollbar helps, but doesn't solve the issue. |
Beta Was this translation helpful? Give feedback.
-
Your benchmark chart seems interesting. I wonder if benchmarks like this can actually be used by cloud providers in the future to decide whether to develop their own custom API or use a standard protocol like S3. |
Beta Was this translation helpful? Give feedback.
-
Follow-up round (2026-06-07): DAG smoke + Filen S3 re-test, CLI 4.0.4A second maintainer round, this time focused on the DAG transfer engine and on functional coverage rather than on throughput rankings. The honesty caveat from the baseline applies again, and it is worth restating because it matches @EhudKirsh's setup almost exactly: this ran on a domestic, non-fiber, asymmetric line (upload bandwidth far below download). So the raw speed numbers are not a provider ranking. The useful signal is functional and regression coverage: connect, scratch dir, upload, download, list, stat, delete, cleanup, and DAG routing under current code.
Reading speed on a slow line: normalize it awayOn a capped line the absolute bars are misleading to the eye: every download looks dramatically faster than every upload, but that is the connection, not the providers. So instead of plotting Mbps, the charts below show each provider's percentage deviation from the round average, upload and download separately. That removes the line and leaves only what actually differs between providers. Cloud S3 / Azure backends (Filen and iDrive shown separately): Upload differences are tiny: every S3 backend lands within ~7 points of the average, because on a slow uplink they all hit the same line ceiling, so the provider barely matters. Download spread is wider and driven almost entirely by Azure Blob at -13%; the rest sit within about +/-3% of each other. Overall, with Filen S3 folded in: The direct cloud backends still cluster tightly. Filen S3 sits well below the pack (-51% upload, -31% download), which is expected and not a defect: it is a local end-to-end-encrypted bridge, so the numbers carry on-device crypto plus the localhost hop to Filen Desktop, costs a plain S3 PUT never pays. iDrive S3 is excluded from both charts because it ran under a tighter per-profile timeout and is not comparable. Raw absolute numbers (100 MiB, line-limited, sanity only)
The ~18-20 Mbps upload ceiling vs ~75-90 Mbps download is the line, not the providers. Same shape Ehud reported from his cable line. S3/Azure matrix: passedAWS, S3 Backblaze, iDrive S3, Cloudflare R2, Alibaba OSS, Azure Blob, S3 Storj, Tencent, Mega S3, Google, S3Drive, Mega Dev S4, axpbuntu lab MinIO, Oracle, Backblaze Dev. Skipped by instruction: Wasabi and Quotaless S3 (trial/access expired). DAG coverage and the multipart caveat
Threshold unit checks passed: Cross-confirmation with @EhudKirsh: Filen S3 local bridgeIn the first pass Filen S3 failed because the local bridge To close the loop I brought Filen Desktop up (Network Drive > S3 enabled, port 1800) and re-ran the full matrix with
So Filen S3 is confirmed healthy end to end (upload, download, list, stat, delete) once the bridge is running. The earlier failures, both Ehud's and mine, were purely "bridge not up", and the throughput shape is the usual asymmetric-line skew, not a provider trait. Worth a docs note: the Filen S3 preset does nothing without Filen Desktop live, which is easy to forget. S5 FileLu: overwrite-on-PUT sensitivity (new finding)Initial CLI result looked like a DAG failure (
Conclusion: this is not a generic DAG failure. The benchmark was overwriting the same aeroftp-cli --profile "S5 FileLu" benchmark custom \
--sizes 1M,10M,100M --runs 1 \
--operations upload,download,list,stat,delete \
--pre-delete --report s5-filelu.jsonAdditional S5 FileLu provider behavior worth recording: large-object rename is slow (48 MB rename took ~48 s), and delete/batch-delete can intermittently return 500/502 though retry/fallback may still complete. Next selective tests
|
Beta Was this translation helpful? Give feedback.
-
|
Random thought on this topic: I've heard that where S3 shines over WebDAV and even FTP is when it comes to many small files, |
Beta Was this translation helpful? Give feedback.





Uh oh!
There was an error while loading. Please reload this page.
-
Why we are doing this
When AeroFTP says "protocol X is faster than protocol Y on provider Z", that claim should be defensible. Real-world transfer speed depends on your ISP, your distance from the provider region, time of day, your TLS stack, even your MTU. No single test machine can cover that space.
So we are turning the protocol comparison page into a community effort. This issue is the entry point.
What is shipping
A new CLI subcommand,
aeroftp-cli benchmark, available since AeroFTP v3.7.3 and stabilized in v3.7.4. It runs a standardized matrix of upload, download, list, stat and delete operations against any saved profile you choose (your own account, your own credentials, your own bandwidth) and emits a strictly anonymized JSON report you can paste into a benchmark report Issue.We then aggregate the reports (median, p95, stddev, never the misleading arithmetic mean), filter outliers, and publish a public protocol comparison page based on what real users measure, not what one developer measures.
Full contributor guide:
docs/COMMUNITY-BENCHMARK.md. It explains every level, every field of the report, what is collected, what is not, and how to submit.What we collect, what we do not
The CLI runs a sanitization pass before writing the report. If the pass cannot anonymize a field, it refuses to produce the report rather than risk a leak.
Collected:
morning,afternoon,evening,night)linux x86_64 x64-modern)amazon-s3-eu-west-1)Never collected, ever:
If you want to contribute even more privately, the
--anonymize-extraflag will hash the provider hint as well, so even "this person uses S3" is not visible in the published comparison page.A first reference dataset is already published
Before asking other people to run the matrix, the maintainer ran it on every profile saved on the dev host. The result is a 32-report dataset you can read alongside this issue:
upload-targetrace, Drimelist()mutatingcurrent_path).The dataset bundle, the rankings, the per-profile JSON reports and the maintainer-side
REPORT.mdlive indocs/dev/benchmarks/2026-05-07_community-benchmark-v3.7.3/(see the repo). The raw JSON is intentionally gitignored: it is attached to this issue thread instead, alongside community submissions, so we can curate them together.The dataset is explicitly a single-host, single-uplink, single-timezone sample. It is not a population-level benchmark. Selection bias and the rationale are spelled out in §9 of the maintainer's report.
How to submit
Three steps, all inside GitHub, no third-party form.
1. Run the benchmark locally
aeroftp-cli --profile "Your Profile" benchmark standard \ --consent-publish --report benchmark.json--consent-publishwraps the JSON inBEGIN AEROFTP BENCHMARK REPORT/END AEROFTP BENCHMARK REPORTmarkers and runs the sanitization sweep. Levels:quick(~30 s),standard(~5 min),deep(~30 min, more useful but consumes more quota).2. Open the benchmark report issue template
Click here to open a pre-filled benchmark report issue.
The template asks for two pieces of coarse metadata the CLI cannot infer:
Western Europe,Eastern Europe,North America (East/West),South-East Asia, ...). No country, no city, no postcode.fiber,DSL,mobile,corporate,data center,unknown). No ISP name, no plan tier.Then there is one big text area: paste the contents of
benchmark.json(everything between the BEGIN / END markers). Submit.3. That is it
The issue lands in this repo with the
benchmark-reportlabel. A maintainer reads it, runs the sanitization grep again as a second-pass safety check, and merges the report into the aggregation set that feeds the future public comparison page. You can comment further or close the issue right after, your call. Your GitHub handle is the only thing tying you to the report; if you want even that off the record, file the issue from a throwaway account.Honest disclaimers
deepagainst a free-tier account, please use a non-critical bucket. We are not responsible if a provider rate-limits you, although in practice this is unlikely at the limits we set.wontfixand the page reverts to a manual qualitative comparison. We would rather be honest than maintain dead infrastructure.What is already known to work and what is not
Validated by the maintainer's reference round (full results in
dataset/rankings/rankings-custom1g.md):Want to sign up before you run it?
Optional, just helps us know who is interested before v3.7.4 packages reach every distribution channel. Comment with this template (every field is optional):
That signup is not a binding commitment. It just helps us ping you when v3.7.4 packages are live everywhere.
Timeline
We will update this issue as the timeline firms up.
Questions?
Drop them in the comments. The most common ones (privacy, time commitment, what gets shared, what does not) we will fold into a FAQ section right under this section.
Thanks for considering this. AeroFTP is built in the open, and a community-validated benchmark page is rare in file-transfer tooling. Your data, even one report, makes it possible.
Beta Was this translation helpful? Give feedback.
All reactions