S3 is the reference implementation of object storage and the most feature-complete product in this category by a distance. Storage classes from Standard down to Glacier Deep Archive, Intelligent-Tiering, replication, lifecycle rules, event notifications into the whole AWS ecosystem, Object Lambda, S3 Select, Access Points, and IAM permissions granular enough to satisfy any auditor. If you need one of those things, nothing else on this page does it.
R2 does not try to match that. It implements the parts of the S3 API that most applications use, and it charges nothing for egress. That single pricing decision is the entire pitch, and for a large class of workloads it is decisive: serving five terabytes a month out of S3 costs hundreds of dollars, and out of R2 costs zero.
If your bucket is a public read path — images, video, downloads, static assets, a package registry — move to R2. The savings are large, immediate, and the migration is a data copy plus an endpoint change.
If your bucket is deep inside an AWS architecture — feeding Athena, triggering Lambdas, tiering to Glacier, replicating across regions under a compliance policy — stay on S3. The egress you're paying is probably intra-AWS anyway, and the integration is worth more than the storage rate.
The common architecture is both: S3 for the internal data lake, R2 for anything users download. That's not a hedge, it's just matching the tool to the traffic pattern.