Compare R2's zero-egress storage plus Class A and Class B operation charges against S3 storage plus per-GB egress.
R2 removes the egress meter entirely and replaces it with two operation meters, so its bill is driven by how often you touch objects rather than how many bytes leave. The break-even line is where the operation charges plus any storage price difference equal what the comparison provider would have billed in egress — at zero egress a read-heavy bucket can still favour R2 because storage itself is cheaper. Egress is usually the largest line on an object-storage bill for anything user-facing, so a zero-egress store changes architecture decisions, not just cost. Operation prices, storage prices and free tiers all move, so confirm both providers' current rates before you migrate.
Cloudflare R2 Storage
R2 = stored GB × storage price + Class A millions × Class A price + Class B millions × Class B price, with no egress charge; the comparison = stored GB × storage price + egress GB × egress price.
R2 = stored GB × storage price + Class A millions × Class A price + Class B millions × Class B price, with no egress charge; the comparison = stored GB × storage price + egress GB × egress price. R2 removes the egress meter entirely and replaces it with two operation meters, so its bill is driven by how often you touch objects rather than how many bytes leave. The break-even line is where the operation charges plus any storage price difference equal what the comparison provider would have billed in egress — at zero egress a read-heavy bucket can still favour R2 because storage itself is cheaper.
Egress is usually the largest line on an object-storage bill for anything user-facing, so a zero-egress store changes architecture decisions, not just cost. Operation prices, storage prices and free tiers all move, so confirm both providers' current rates before you migrate.
This calculator takes 9 inputs: Data stored, R2 storage price, Class A operations (writes, lists), Class A price per million, Class B operations (reads), Class B price per million, Data read out to the internet, Comparison storage price, Comparison egress price. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Every GET is a Class B operation. Forty million reads at $0.36 per million is around $14, which is trivial next to per-GB egress but is not zero — and a chatty client that lists a bucket on every request generates Class A operations, which cost more than ten times as much.