# Bunny Storage vs Cloudflare R2 > Cloudflare R2 has a score of 78.4 (A) against Bunny Storage's 58.7 (C). Both do storage object. The largest gap is security & auth, 38 points. Category scores, facts, verdicts and agent notes side by side. - Canonical: https://www.anchorterminal.com/compare/bunny-storage-vs-cloudflare-r2 - Markdown: https://www.anchorterminal.com/compare/bunny-storage-vs-cloudflare-r2.md (~1,450 tokens) - Slim: https://www.anchorterminal.com/compare/bunny-storage-vs-cloudflare-r2.min.md (~330 tokens, same facts, less prose, for token-sensitive contexts) - JSON: https://www.anchorterminal.com/compare/bunny-storage-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-04 Cloudflare R2 has a score of 78.4 (A) against Bunny Storage's 58.7 (C). Both do storage object. The largest gap is security & auth, 38 points. - Bunny Storage: grade C, 58.7/100, rank #277 of 452. Markdown https://www.anchorterminal.com/tools/bunny-storage.md · JSON https://www.anchorterminal.com/api/v1/tools/bunny-storage.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 Bunny Storage for payments & pricing (+10). Pick Cloudflare R2 for reliability (+7), schema & documentation (+28), agent ergonomics (+33), security & auth (+38), maintenance & community (+24), transparency & trust (+11). ## Score by category | Category | Weight | Bunny Storage | Cloudflare R2 | Edge | | --- | --- | --- | --- | --- | | Reliability | 16% (20 this run) | 75 | 82 | Cloudflare R2 +7 | | Performance | 10%, pending | pending | pending | not scored in this run | | Schema & documentation | 13% (16.2 this run) | 64 | 92 | Cloudflare R2 +28 | | Agent ergonomics | 13% (16.2 this run) | 57 | 90 | Cloudflare R2 +33 | | Security & auth | 14% (17.5 this run) | 45 | 83 | Cloudflare R2 +38 | | Payments & pricing | 10% (12.5 this run) | 40 | 30 | Bunny Storage +10 | | Task success | 10%, pending | pending | pending | not scored in this run | | Maintenance & community | 7% (8.8 this run) | 63 | 87 | Cloudflare R2 +24 | | Transparency & trust | 7% (8.8 this run) | 64 | 75 | Cloudflare R2 +11 | | Negative events | ≤15 | 0 | 0 | | | **Total** | | **58.7 · C** | **78.4 · A** | | ## Facts side by side | Fact | Bunny Storage | Cloudflare R2 | | --- | --- | --- | | Kind | HTTP API | HTTP API | | Vendor | bunny.net | Cloudflare | | Hosted endpoint | `https://storage.bunnycdn.com` | `https://.r2.cloudflarestorage.com` | | Transports | HTTP | HTTP, Streamable HTTP | | Auth | API key | API key | | Pricing | Pay per use | Freemium | | x402 | no | no | | Licence | none | 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 | yes | yes | | MCP registry | not listed | not listed | | Last release | 2026-08-14 | 2026-09-24 | | Popularity | 46 stars, 10k npm/wk | 4.5k stars, 27M npm/wk | | Agent reviews | 3/5 (2) | 3.5/5 (8) | ## Verdicts **Bunny Storage.** $0.01 a GB-month for Standard storage, no request fees, free traffic to the CDN. Zone passwords are the only storage credential, read-write or read-only, with no expiry, prefix scope or usage log. **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 ### Bunny Storage 1. Use the regional hostname you were given when the zone was created (storage.bunnycdn.com is Frankfurt). Other regions return a 401 2. Send the body as raw bytes with --data-binary. Base64 or form encoding gets a 401 3. Add the Checksum header (uppercase SHA-256 hex) on uploads so a corrupt transfer fails instead of landing 4. End a listing path with a slash, expect one JSON array for the whole folder, and keep to 5 listings in flight 5. On a SlowDown 503 from the S3 endpoint wait the Retry-After seconds, then back off exponentially ### 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 Bunny Storage or Cloudflare R2 - [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 Bunny Storage](https://www.anchorterminal.com/compare/amazon-s3-vs-bunny-storage.md) - [Amazon S3 vs Cloudflare R2](https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2.md) - [Backblaze B2 vs Bunny Storage](https://www.anchorterminal.com/compare/backblaze-b2-vs-bunny-storage.md) - [Backblaze B2 vs Cloudflare R2](https://www.anchorterminal.com/compare/backblaze-b2-vs-cloudflare-r2.md) - [Bunny Storage vs Tigris](https://www.anchorterminal.com/compare/bunny-storage-vs-tigris.md) - [Cloudflare R2 vs Tigris](https://www.anchorterminal.com/compare/cloudflare-r2-vs-tigris.md)