AeroFTP classifies each supported provider with a Coverage Class (A, B, C, D) and a numeric score out of 100. The rubric is deterministic, speed-independent, and designed to reflect the end-to-end experience of running production workloads on AeroFTP + provider.
| Class | Label | Score | Meaning |
|---|---|---|---|
| A | Primary | 90-100 | Full matrix green, ready for critical workloads |
| B | Extended | 70-89 | Core operations solid, minor gaps on advanced features |
| C | Compatible | 50-69 | Base works, known non-blocking limitations |
| D | Observer | < 50 | Partially covered, not recommended for production |
| Dimension | Weight | What it measures |
|---|---|---|
| Core Operations | 30 | connect, ls, put, get, stat, mkdir, rm, mv |
| Data Integrity | 20 | SHA-256 end-to-end + hashsum parity |
| Navigation & Discovery | 15 | tree, find, head, cat, recursive stat |
| Advanced Features | 15 | share links, trash/restore, versions, server-side copy, quota detail |
| Encoding Robustness | 10 | unicode, spaces, special characters in file names |
| Reconciliation | 10 | check, sync-doctor, reconcile post-sync matches |
Speed is deliberately excluded: throughput depends on distance from the provider endpoint and on local network conditions, not on the client implementation.
Dated matrix
These scores were measured on 2026-04-18 and 2026-04-19 with AeroFTP 3.5. Client fixes for the S3 encoding failures have shipped since (see the notes below), and the totals on this page, on the detail pages and in their component columns do not agree in several places. They will be recomputed together at the next scored sweep; until then, read each score as the April result, not as the state of the current release.
Scores below reflect an encoding sweep completed 2026-04-18 on live accounts (Seafile, Jianguoyun and CloudMe pending), with SHA-256 end-to-end verification on 1 MB round-trip. Matrix refresh 2026-04-19:
cmd_check, cmd_reconcile, and cmd_sync now delegate to sync_core::scan_remote_tree + compare_trees, which track relative paths via the scan queue state instead of stripping the remote prefix from provider-returned absolute paths.⏳ pending to ✅ after tree --depth 2 and find returned the expected structure on live accounts.not exposed by API / not applicable entries use - instead of ⚠️ to avoid confusion with real partial-pass warnings.| Provider | Protocol | Class | Score | Integrity | Navigation | Advanced | Encoding | Reconcile |
|---|---|---|---|---|---|---|---|---|
| Dropbox API | A | 95 | ✅ | ✅ | ✅ | ✅ 10/10 | ✅ | |
| Infomaniak API | A | 93 | ✅ | ✅ | ✅ | ✅ 10/10 | ✅ | |
| Native API | A | 92 | ✅ | ✅ | ✅ | ✅ 10/10 | ✅ | |
| Native API | A | 92 | ✅ | ✅ | ✅ | ✅ 9/10 | ✅ | |
| WebDAV (Nextcloud) | A | 90 | ✅ | ✅ | ✅ | ◑ 7/10 | ✅ | |
| SFTP | A | 90 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| S3 | A | 90 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| S3 | A | 90 | ✅ | ✅ | ✅ | ◑ 7/10 | ✅ | |
| S3 | B | 89 | ✅ | ✅ | ✅ | ◑ 6/10 | ✅ | |
| S3 | B | 89 | ✅ | ✅ | ✅ | ◑ 6/10 | ✅ | |
| S3 Gateway | B | 89 | ✅ | ✅ | ✅ | ◑ 6/10 | ✅ | |
| S3 | B | 89 | ✅ | ✅ | ✅ | ◑ 6/10 | ✅ | |
| S3 | B | 88 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| S3 | B | 88 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| S3 (S5) | B | 88 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| S3 | B | 88 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| WebDAV | B | 86 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| WebDAV | B | 85 | ✅ | ✅ | ✅ | ◑ 8/10 | ✅ | |
| WebDAV | B | 83 | ✅ | ✅ | ✅ | ◑ 7/10 | ✅ | |
| WebDAV (seafdav) | B | 78 | ✅ | ✅ | ⏳ | ⏳ | ✅ | |
| WebDAV | B | 77 | ✅ | ✅ | ⏳ | ⏳ | ✅ | |
| WebDAV | B | 76 | ✅ | ✅ | ⏳ | ⏳ | ✅ | |
| S3 | B | 73 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ |
Legend: ✅ full pass · ◑ partial pass · ⏳ pending benchmark · ❌ fail · - not applicable
& ' # % ( ) +.???? in the listing (server-side transliteration).% signature mismatch, + reject, & / ' XML split in listing, # URL fragment truncation). These were AeroFTP client issues, not provider issues. Fixes shipped in v3.6.6 (XML entity decoding in listing keys), v3.7.7 (per-segment key encoding) and v4.1.7 (whitespace kept inside listing keys). The encoding column still shows the 2026-04-18 sweep and will be refreshed at the next scored sweep.⚠️ requires explicit path note referred to a client-side scan bug that has been eliminated; integrity of the transferred data was never affected.tree + find validated the full recursive surface.s3.rs debug preview now uses char-aware truncation instead of a raw byte slice). It shared the S3-family encoding gaps on %, &, ', # measured in April, for which client fixes have shipped since (see above).◑ (partial) is used for real partial passes (e.g. encoding 5-9/10). - is used for N/A / not exposed by API / not applicable structural gaps - these are not errors and should not be read as warnings.Several additional providers (pCloud, Filen, Internxt, MEGA, 4shared, Zoho WorkDrive, Drime, FileLu WebDAV, Box, OneDrive, Google Drive, Jottacloud) are covered in internal test runs with mixed status. They will enter the public matrix once their scoring stabilizes across the full rubric.
2026-04-19 note: the internal sweep validated ls / on 25 of 31 vault profiles post-fix batch. Jottacloud is now fully re-runnable (grant_type=refresh_token lowercase fix) but not yet scored on the full rubric.
The matrix is revisited after every significant test run consolidation. Scores may change when:
See methodology for the reproducibility protocol.