If you’re choosing cloudflare r2 vs s3 for a VPS-hosted app, you’re really choosing what kind of pain you want: egress bills, operational complexity, or ecosystem lock-in. Both are “S3-compatible enough” to store objects, but they behave very differently once you put them behind a VPS and real traffic starts flowing. The cost model: egress is the whole game For most VPS_HOSTING workloads, storage cost is boring; bandwidth is not. Your VPS (on digitalocean , hetzner , or similar) will happily serve requests all day—until your object store invoice shows you the real bottleneck. AWS S3 pricing is predictable but not forgiving: You pay for storage, requests, and (often painful) data transfer out. Cross-region and internet egress can dominate total cost. If you use CloudFront or keep traffic inside AWS, you can reduce some of the sting—but you’re now designing around AWS networking. Cloudflare R2 is opinionated in one big way: zero egress fees (to the public internet).…