Here's the deal: AWS S3 has been bleeding developers dry with egress fees for years. You upload your files for cheap, then get hit with $0.09/GB every time someone downloads them. Your cute little side project that goes viral? Congrats, you're now bankrupt.
R2 fixes this shit. It's S3-compatible storage that doesn't charge egress fees. Ever. Your boto3 code works unchanged, your existing AWS CLI tools work fine, but suddenly your bills don't make you want to cry.
How R2 Actually Works
R2 has four main pieces: the gateway that handles auth and routing, a metadata layer that keeps everything in sync using Durable Objects, a cache tier for speed, and the actual storage backend. It's spread across Cloudflare's 330+ data centers, so your files are close to users everywhere.
Performance is solid - Cloudflare claims 20-40% faster than S3, which sounds like marketing bullshit, but I tested it with a few hundred MB of images and yeah, it's noticeably faster. The strong consistency model means you get immediate read-after-write consistency across all regions.
They finally added event notifications - triggers Workers or queues when your objects change. Actually useful for real-time processing instead of polling like a caveman. The new infrequent access storage class cuts costs even further for archival data.
R2's event notification system triggers Workers or queues when objects are created, updated, or deleted, enabling real-time processing workflows.
The Real Cost Difference
Here's where it gets expensive. S3 charges $0.09/GB for egress. R2 charges nothing. Zero. Zilch.
I migrated a client's media storage from S3 to R2 last year. They were spending $1,200/month on AWS egress fees alone. After moving to R2? $18/month total. The client thought I'd made a mistake on the invoice.
Storage costs are similar - R2 is $0.015/GB/month vs S3's $0.023/GB - but that's not where the savings happen. It's the egress fees that murder your budget. Use the R2 pricing calculator to see your potential savings. Most developers using object storage for media delivery save 70-90% on their total storage costs.
The free tier includes 10GB storage monthly, plus 1 million Class A operations and 10 million Class B operations - more generous than AWS S3's free tier.
What You Need to Know Before Migrating
R2 isn't perfect. The S3 compatibility is about 90% - some edge cases with boto3 operations fail silently. Cross-region replication doesn't exist yet. Advanced S3 features like Intelligent Tiering aren't available.
But if you're serving files to users (images, videos, downloads, backups), R2 will save you a fortune. Sure, no egress fees sound great until you realize you're stuck. Want to leave Cloudflare later? You'll pay those egress fees to move your data out. But honestly, after seeing what AWS charges, that future pain seems worth it.
The migration tools work well, though plan for 2-3x longer than estimated because of rate limiting. Super Slurper handles one-time migrations up to 1TB per object (finally), while Sippy provides ongoing incremental sync from S3.
Canva uses R2 for their image storage - makes sense when you're serving millions of user uploads. The S3 compatibility means you can drop it in without rewriting your entire app. MosaicML uses R2 for AI model training data, and Prisma saved 98% on distribution costs. Real companies are using this in production.