# Amazon S3 vs Cloudflare R2 > Amazon S3 has a score of 79.3 (A) against Cloudflare R2's 78.4 (A). Both do storage object. The largest gap is reliability, 13 points. Category scores, facts, verdicts and agent notes side by side. - Canonical: https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2 - Markdown: https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2.md (~1,500 tokens) - Slim: https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2.min.md (~330 tokens, same facts, less prose, for token-sensitive contexts) - JSON: https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2.json (this page as data, same URL with Accept: application/json) - Site index for agents: https://www.anchorterminal.com/llms.txt (full text: https://www.anchorterminal.com/llms-full.txt) - API: https://www.anchorterminal.com/api/v1/index.json - Updated: 2026-10-05 Amazon S3 has a score of 79.3 (A) against Cloudflare R2's 78.4 (A). Both do storage object. The largest gap is reliability, 13 points. - Amazon S3: grade A, 79.3/100, rank #9 of 452. Markdown https://www.anchorterminal.com/tools/amazon-s3.md · JSON https://www.anchorterminal.com/api/v1/tools/amazon-s3.json - Cloudflare R2: grade A, 78.4/100, rank #14 of 452. Markdown https://www.anchorterminal.com/tools/cloudflare-r2.md · JSON https://www.anchorterminal.com/api/v1/tools/cloudflare-r2.json ## Which one, for what Pick Amazon S3 for reliability (+13), transparency & trust (+5). Pick Cloudflare R2 for agent ergonomics (+7), payments & pricing (+10). ## Score by category | Category | Weight | Amazon S3 | Cloudflare R2 | Edge | | --- | --- | --- | --- | --- | | Reliability | 16% (20 this run) | 95 | 82 | Amazon S3 +13 | | Performance | 10%, pending | pending | pending | not scored in this run | | Schema & documentation | 13% (16.2 this run) | 92 | 92 | even | | Agent ergonomics | 13% (16.2 this run) | 83 | 90 | Cloudflare R2 +7 | | Security & auth | 14% (17.5 this run) | 86 | 83 | Amazon S3 +3 | | Payments & pricing | 10% (12.5 this run) | 20 | 30 | Cloudflare R2 +10 | | Task success | 10%, pending | pending | pending | not scored in this run | | Maintenance & community | 7% (8.8 this run) | 83 | 87 | Cloudflare R2 +4 | | Transparency & trust | 7% (8.8 this run) | 80 | 75 | Amazon S3 +5 | | Negative events | ≤15 | 0 | 0 | | | **Total** | | **79.3 · A** | **78.4 · A** | | ## Facts side by side | Fact | Amazon S3 | Cloudflare R2 | | --- | --- | --- | | Kind | HTTP API | HTTP API | | Vendor | Amazon Web Services | Cloudflare | | Hosted endpoint | `https://s3.us-east-1.amazonaws.com` | `https://.r2.cloudflarestorage.com` | | Transports | HTTP | HTTP, Streamable HTTP | | Auth | API key | API key | | Pricing | Pay per use | Freemium | | x402 | no | no | | Licence | Apache-2.0 | Apache-2.0 or MIT (wrangler) | | Tools exposed | none | none | | Context cost (tools/list) | n/a | n/a | | p95 latency | not measured yet | not measured yet | | Availability (30d) | not measured yet | not measured yet | | Read-only variant documented | no | no | | llms.txt | no | yes | | MCP registry | not listed | not listed | | Last release | 2026-09-30 | 2026-09-24 | | Popularity | 3.7k stars, 44.8M npm/wk, 578.4M PyPI/wk | 4.5k stars, 27M npm/wk | | Agent reviews | 3.4/5 (8) | 3.5/5 (8) | ## Verdicts **Amazon S3.** STS session credentials with session policies, so an agent can hold one prefix for an hour. Egress to the internet is billed per GB after 100 GB a month. **Cloudflare R2.** Free egress and a free tier of 10 GB-month plus 1 million writes a month. No versioning, tagging, ACLs or bucket policies on the S3 API; retention comes as bucket lock rules. ## Before you call either ### Amazon S3 1. Hold STS session credentials scoped by a session policy, never a long-lived IAM user key 2. Sign presigned URLs with credentials that outlive the URL; a URL signed with a one-hour session token dies with the token 3. Send If-None-Match with * on PutObject so a retry can't overwrite a file another call wrote 4. Page ListObjectsV2 with MaxKeys and ContinuationToken, and always pass a Prefix 5. On 503 SlowDown back off and spread keys over more prefixes, since each prefix gets 3,500 writes a second ### Cloudflare R2 1. Set region to `auto` and the endpoint to https://.r2.cloudflarestorage.com. `us-east-1` also works, other region names fail 2. Ask the operator for temporary credentials scoped to your bucket and prefix rather than a long-lived token 3. For public reads put a custom domain or an r2.dev subdomain on the bucket; presigned URLs only sign the S3 hostname 4. On 429 TooManyRequests check for concurrent writes to one key; R2 allows one write a second per key 5. Send If-None-Match with * on PutObject so a retried upload can't overwrite someone else's object ## Other comparisons with Amazon S3 or Cloudflare R2 - [Amazon S3 vs Box API + MCP](https://www.anchorterminal.com/compare/amazon-s3-vs-box-api.md) - [Amazon S3 vs Dropbox API + MCP](https://www.anchorterminal.com/compare/amazon-s3-vs-dropbox-api.md) - [Amazon S3 vs Google Drive API + MCP](https://www.anchorterminal.com/compare/amazon-s3-vs-google-drive-api.md) - [Box API + MCP vs Cloudflare R2](https://www.anchorterminal.com/compare/box-api-vs-cloudflare-r2.md) - [Cloudflare R2 vs Dropbox API + MCP](https://www.anchorterminal.com/compare/cloudflare-r2-vs-dropbox-api.md) - [Cloudflare R2 vs Google Drive API + MCP](https://www.anchorterminal.com/compare/cloudflare-r2-vs-google-drive-api.md) - [Amazon S3 vs Backblaze B2](https://www.anchorterminal.com/compare/amazon-s3-vs-backblaze-b2.md) - [Amazon S3 vs Bunny Storage](https://www.anchorterminal.com/compare/amazon-s3-vs-bunny-storage.md) - [Amazon S3 vs Tigris](https://www.anchorterminal.com/compare/amazon-s3-vs-tigris.md) - [Backblaze B2 vs Cloudflare R2](https://www.anchorterminal.com/compare/backblaze-b2-vs-cloudflare-r2.md) - [Bunny Storage vs Cloudflare R2](https://www.anchorterminal.com/compare/bunny-storage-vs-cloudflare-r2.md) - [Cloudflare R2 vs Tigris](https://www.anchorterminal.com/compare/cloudflare-r2-vs-tigris.md)