Bytes do not count requests
One request can transfer a large object, or it can return a small amount of metadata. A list operation may return one page of many objects. A multipart upload makes several calls for one file. Keep operation count and transfer volume as separate inputs; neither can reliably be derived from the other without knowing the application.
For example, reading a million 10 KB objects transfers about 10 GB if every request returns one full object. Reading ten 1 GB objects also transfers 10 GB, but the request count is drastically different. These are simplified application examples, not statements about a particular provider’s object-size limits or batching behavior.
Classify the actual operations
The launch model uses ordinary write/list and read classes. On S3, the modeled rates correspond to PUT/COPY/POST/LIST and GET-class usage. R2 uses Class A and Class B and rounds usage to billable units after allowances. Providers with included standard calls still have service limits and may charge separately for specialized products.
Inspect an application trace. Count list pagination, upload parts, HEAD-like checks where relevant, and retry behavior. If a specialized API cannot be mapped to the modeled classes, exclude it from the estimate and add a separate budget line rather than silently pricing it at zero.
Test the allowance boundary
R2’s published rounding creates a useful edge case: with the Class A allowance available, one million writes are included, but one million and one writes add one paid million-operation unit. A linearly prorated calculator would miss that jump. The site’s test suite checks this boundary in the shared engine.
Account allowances also have a scope. If another application has already used the shared free capacity or transfer allowance, turn it off for this workload. B2’s contractual multiple-of-storage egress allowance stays active because it is tied to the modeled stored capacity, not the generic allowance toggle. See the methodology for the precise rules.
Make egress a route, not a slogan
Write the source and destination next to every transfer rate. Direct internet delivery, same-region service access and storage-to-CDN partner transfer can have different treatment. “No egress charge” may describe only one leg. It does not establish that a Worker, image transformer or CDN on the route is also free.
A download-heavy month stresses per-byte charges. A polling-heavy application can create many operations without transferring much data. Model both and identify which meter is sensitive. The download guide shows a transfer-heavy preset, while S3 versus R2 examines how the two dimensions interact.
Improve the estimate with evidence
Once the application is running, collect aggregate usage counts and compare them with the assumptions. Avoid sending sensitive object names into a cost worksheet when totals are sufficient. Investigate large gaps between successful application actions and storage operations. Retries, pagination and duplicate work may explain them.
Use the calculator to save a normal-month scenario and a high-traffic scenario. The shared URL records quantities, not a permanently frozen price quote; record the dataset version beside it.