EC2
t4g.xlarge
$98
- Configuration
- 4 vCPU · 16 GiB RAM
- List unit
- $0.134/hour
AWS Graviton Arm instance; application and image compatibility must be checked.
Work / Cloud FinOps
Compare normalized AWS, Azure, Google Cloud, Oracle Cloud, and DigitalOcean pricing across compute, object storage, managed databases, serverless, Kubernetes, GPUs, and network egress.
Product lane
Choose a product family first. Each lane uses its own billing unit and never ranks unlike services against one another.
one instance for the selected running hours. Linux on-demand instance compute that meets minimum vCPU and memory requirements.
Instant ranking
47 matching offers across 5 providers
Lowest estimate
$55
Oracle Cloud
Median match
$222
List-price screen
Catalog coverage
128
offers · 36 official sources
Best priced match by provider
One qualifying row per selected provider.
EC2
t4g.xlarge
$98
AWS Graviton Arm instance; application and image compatibility must be checked.
Virtual Machines
Standard_D4ps_v5
$112
Ampere Altra Arm Linux VM; verify image and binary compatibility.
Compute Engine
e2-standard-4
$98
On-demand baseline before sustained-use or committed-use discounts.
OCI Compute
VM.Standard.E4.Flex · 2 OCPU / 16 GB
$55
Modeled from OCI E4 OCPU plus memory resource rates; 1 x86 OCPU equals 2 vCPUs.
Droplets
Basic 8 vCPU / 16 GiB
$96
Basic shared-CPU Droplet; monthly cap is applied to the compute estimate.
Oracle Cloud
OCI Compute
VM.Standard.E4.Flex · 2 OCPU / 16 GB
Configuration
4 vCPU · 16 GiB RAM
Region
US East (Ashburn)
List unit
$0.0750/hour
Monthly estimate
$55
Oracle Cloud
OCI Compute
VM.Standard.A1.Flex · 4 OCPU / 24 GB
Configuration
4 vCPU · 24 GiB RAM
Region
US East (Ashburn)
List unit
$0.0760/hour
Monthly estimate
$55
DigitalOcean
Droplets
Basic 8 vCPU / 16 GiB
Configuration
8 vCPU · 16 GiB RAM
Region
Standard public price
List unit
$0.143/hour
Monthly estimate
$96
Google Cloud
Compute Engine
e2-standard-4
Configuration
4 vCPU · 16 GiB RAM
Region
Iowa (us-central1)
List unit
$0.134/hour
Monthly estimate
$98
AWS
EC2
t4g.xlarge
Configuration
4 vCPU · 16 GiB RAM
Region
US East (N. Virginia)
List unit
$0.134/hour
Monthly estimate
$98
Oracle Cloud
OCI Compute
VM.Standard.E4.Flex · 4 OCPU / 32 GB
Configuration
8 vCPU · 32 GiB RAM
Region
US East (Ashburn)
List unit
$0.150/hour
Monthly estimate
$110
Oracle Cloud
OCI Compute
VM.Standard.A1.Flex · 8 OCPU / 48 GB
Configuration
8 vCPU · 48 GiB RAM
Region
US East (Ashburn)
List unit
$0.152/hour
Monthly estimate
$111
Azure
Virtual Machines
Standard_D4ps_v5
Configuration
4 vCPU · 16 GiB RAM
Region
East US
List unit
$0.154/hour
Monthly estimate
$112
Google Cloud
Compute Engine
t2a-standard-4
Configuration
4 vCPU · 16 GiB RAM
Region
Iowa (us-central1)
List unit
$0.154/hour
Monthly estimate
$112
Azure
Virtual Machines
Standard_B4ms
Configuration
4 vCPU · 16 GiB RAM
Region
East US
List unit
$0.166/hour
Monthly estimate
$121
Catalog integrity
This checked-in catalog contains 128 representative offers from 5 providers. The selected VM compute lane was captured July 20, 2026; lanes refresh independently, and every row keeps its own verification date and official source.
Research snapshot
This is a representative screening catalog, not every cloud SKU, region, discount, or bill component. It contains 128 offers across seven separately normalized product lanes. Each benchmark below applies the same visible workload to the available rows, selects the lowest qualifying sampled offer for each provider, and links directly to the source used for that row.
89 sampled offers
Linux on-demand instance compute that meets minimum vCPU and memory requirements.
Unit: one instance for the selected running hours. Snapshot: Jul 20, 2026.
5 sampled offers
Standard or hot object capacity only; operations, retrieval and transfer remain outside the ranking.
Unit: stored GiB-month. Snapshot: Jul 20, 2026.
12 sampled offers
Representative managed MySQL or PostgreSQL compute tiers that meet minimum CPU and memory.
Unit: one database compute node for the selected hours. Snapshot: Jul 20, 2026.
5 sampled offers
Invocation and memory-duration charges for one normalized function workload.
Unit: monthly invocations plus GB-seconds. Snapshot: Jul 20, 2026.
5 sampled offers
Control-plane or cluster-management fees only; worker infrastructure is deliberately excluded.
Unit: cluster control plane for the selected hours. Snapshot: Jul 20, 2026.
7 sampled offers
Whole on-demand GPU instances screened by GPU count and memory, not ranked by performance.
Unit: one GPU instance for the selected running hours. Snapshot: Jul 20, 2026.
5 sampled offers
A narrow public-internet transfer component under each row’s named route and allowance.
Unit: outbound GiB per month. Snapshot: Jul 20, 2026.
The matrix keeps unlike services in separate rows, preserves the qualifying SKU and source date, and makes every supported product lane readable without operating the interactive filters. It is designed to create an auditable shortlist; provider calculators and account-specific quotes remain the purchasing authority.
Add the transfer path with the cloud egress calculator or estimate model calls with the LLM API cost calculator. Review the source methodology and Research Desk authorship standard.
Continue the calculation
Useful next checks commonly used alongside Cloud Product Cost.
The full guide
By TaprobaneFi Research Desk · Reviewed and updated July 20, 2026 · Global educational edition
A cloud-product comparison is only useful when the rows represent the same workload and billing boundary. Providers package compute, object storage, managed databases, serverless execution, Kubernetes, GPUs, and network transfer in different units. One service may bundle capacity and operations, another may meter them separately, and a third may include an allowance before charging overage. Region, architecture, performance tier, redundancy, operating system, and purchase model can change the rate even when two products have similar names.
This calculator turns a common requirement into a source-dated public list-price estimate across supported providers. It is designed for early budgeting and shortlist creation, not procurement or a universal provider ranking. Read each result as the outcome of the visible service category, normalized usage, location, billing unit, and catalog snapshot. A lower row does not prove that a product offers equivalent performance, reliability, support, ecosystem fit, or final invoiced cost.
Begin with a bill of materials, not a provider name. A web application might need application compute, an orchestration layer, a managed relational database, object storage, outbound delivery, logging, and backups. An analytics or AI system might add GPU-hours, high-performance disks, snapshots, and cross-region transfer. Price each material service separately, then combine the compatible rows. Comparing an isolated VM on one cloud with a managed application platform on another would omit work that one provider is performing for the customer.
Define the minimum usable resource and service level for every line. Compute needs vCPU, memory, architecture, operating system, instance count, and hours. Storage needs capacity, storage class, redundancy, operations, retrieval, and transfer. A database needs engine, compute, memory, storage, I/O, backup, and availability topology. Serverless needs invocation count, duration, allocated memory or CPU, and concurrency assumptions. Kubernetes needs control-plane fees plus worker nodes and adjacent network and storage resources.
Use ‘at least’ matching for capacity where overprovisioning is valid, but preserve the excess. A 4-vCPU, 32-GB machine can satisfy a 4-vCPU, 16-GB minimum, yet it is not an exact equivalent. For performance or resilience tiers, use explicit eligibility rules instead of assuming a larger number is always better. Multi-zone databases, infrequent-access objects, GPUs, and serverless runtimes can have constraints that a simple capacity comparison cannot express.
Inputs worth preserving with every result
Normalization converts like quantities into a common comparison unit while retaining the provider's raw unit, SKU, region, and terms. Time can be reduced to seconds or hours; data can be reduced to bytes before being displayed as GB or GiB; request prices can be converted to cost per thousand or million operations; and provisioned capacity can be expressed per GB-month. Do not equate decimal GB with binary GiB or a request with a read unit when the provider defines a more specific operation.
Compute needs additional care. A vCPU is commonly a schedulable hardware thread, but processor generation, clock behavior, simultaneous multithreading, sustained allocation, and shared-host contention differ. Oracle Cloud Infrastructure publishes many x86 shapes in OCPUs and explains that one x86 OCPU corresponds to two vCPUs. Arm OCPUs and shared-core products require their own mapping. Memory catalogs may use MB, GB, or GiB, and GPU rows must retain accelerator model, device count, memory, interconnect, and whether host compute is included.
Service tiers are categorical, not merely numeric. Standard object storage is not equivalent to archive storage; provisioned database I/O is not equivalent to an included baseline; serverless duration billed in one-second increments is not necessarily comparable with a platform that rounds differently. Normalization is a transparent catalog mapping, not a promise of performance or feature parity. The original SKU and unit must remain available so a reviewer can reconstruct every estimate.
| Category | Possible common unit | Detail that must be retained |
|---|---|---|
| CPU | vCPU count | OCPU mapping, shared or dedicated, architecture, generation |
| Object storage | GB-month plus operations | Class, durability, redundancy, retrieval and minimum duration |
| Serverless | Requests plus GB-seconds or vCPU-seconds | Rounding, free allowance, concurrency and runtime |
| Network | Transferred GB by path | Source, destination, direction, tier and processing products |
| Price | Modeled monthly cost | Currency, region, SKU, commitment and effective date |
For an hourly VM, database node, Kubernetes worker, or other continuously provisioned compute row, the simple estimate is hourly price multiplied by running hours and resource count. The default 730 hours is the average month implied by 365 days multiplied by 24 hours and divided by 12 months. It is a comparison convention, not the duration of every billing month. A 28-day month has 672 hours, a 30-day month has 720, and a 31-day month has 744.
At 730 hours, three instances priced at 0.10 currency units per hour produce a compute-only estimate of 219 currency units: 0.10 multiplied by 730 multiplied by 3. For a service that runs only during business periods, replace 730 with a measured schedule. If autoscaling changes the fleet size through the month, calculate instance-hours by size and add the results instead of entering the peak count for every hour.
Provider monthly prices and caps need provider-specific treatment. DigitalOcean's Sizes API returns both hourly and monthly prices, so the provider's monthly value should be retained rather than reconstructed blindly. Serverless functions and request-based databases should instead use measured executions and duration; object storage should use average stored capacity and operations. Reservations and commitments may quote an upfront or term price. Any derived effective hourly value must state its amortization period and utilization assumption. Actual bills can also use per-second or per-minute granularity and minimum-charge rules that a 730-hour estimate does not reproduce.
AWS EC2 and Azure Virtual Machines commonly expose fixed named sizes for comparison: a SKU identifies a defined processor and memory bundle, with additional dimensions for region, operating system, tenancy, and purchase option. DigitalOcean Droplet sizes similarly bundle vCPUs, memory, disk, transfer allowance, regional availability, and current hourly and monthly prices in its Sizes API. A normalized calculator can evaluate these rows after verifying their attributes and units.
Google Compute Engine often reports vCPU and memory usage as separate billable resources even when the user launches a predefined machine type. A correct adapter maps the machine type's guest CPU and memory specification to the relevant regional core and memory SKUs, then adds the components. Tiered rates, sustained-use treatment, custom-machine premiums, sole tenancy, GPUs, and premium operating-system images can require additional lines.
OCI flexible shapes let a user choose OCPUs and memory within published minimum, maximum, and per-OCPU constraints. Their estimate must be assembled from the applicable OCPU-hour and memory-GB-hour prices, after converting the requested vCPUs to the correct OCPU basis for that architecture. A flexible configuration that violates the shape's ratio or regional availability should be rejected, not priced as though it were launchable.
Managed Kubernetes is not a single compute SKU. Price the control plane if the provider charges for it, then add worker nodes, persistent volumes, load balancers, public addresses, observability, and network transfer. Serverless or autopilot-style Kubernetes modes can meter requested pod resources instead of fixed workers. GPU comparisons must match the exact accelerator and count, then determine whether CPU and host memory are bundled. GPU memory capacity alone does not establish equivalent training or inference throughput.
Object storage cost normally has several independent components: average stored capacity, storage class, operation counts, retrieval or early-deletion charges, replication, and data transfer. A low capacity rate for an archive tier is not comparable with a standard hot tier if the workload reads objects frequently or deletes them before a minimum storage duration. Model writes, reads, listings, lifecycle transitions, and retrieval volume using the operation categories in the exact provider rate card.
Network pricing begins with the path. Record the sending service and region, receiving destination, direction, volume, and any availability-zone, region, CDN, load-balancer, NAT, or private-connectivity hop. Inbound internet transfer is often treated differently from outbound delivery, and a response to an inbound request is still outbound data. Free allowances may aggregate at an account or service level and must not be applied independently to every row.
Normalize data from bytes rather than assuming equally labeled GB and GiB values represent the same volume. Apply progressive volume tiers band by band unless the provider states that one achieved rate applies to all usage. A zero-egress claim for one product does not remove storage operations, compute, CDN, or network-processing charges elsewhere in the architecture.
A managed database comparison must align engine and service level before price. Include provisioned or serverless compute, memory, primary storage, I/O or throughput, backup retention, replicas, multi-zone deployment, cross-region replication, and outbound transfer. One provider may bundle I/O and backups while another exposes separate meters. A single-node development database is not a valid substitute for a production high-availability topology merely because both run the same engine.
Serverless estimates usually combine requests with execution duration and allocated resources. Use measured invocation counts, duration distributions, memory or CPU allocation, architecture, and concurrency. Apply free allowances only at their documented aggregation scope. Cold starts, retries, background extensions, provisioned concurrency, orchestration steps, and connected API gateways can add usage that a request count alone misses.
For both categories, distinguish provisioned capacity from consumption pricing. Multiplying a serverless request price by 730 hours is wrong, while modeling an always-on database node for only its active query seconds understates the bill. Keep each meter in its native unit, calculate it separately, and add the components only after the workload boundary is consistent.
The cleanest cross-provider baseline is current public on-demand or pay-as-you-go pricing for the selected service, region, and configuration, without a long-term commitment. Reserved Instances, Savings Plans, committed-use discounts, reserved database capacity, enterprise agreements, private rate cards, credits, free tiers, and negotiated marketplace terms are excluded unless the result explicitly identifies and models them. A discounted rate without its term, payment timing, scope, and utilization assumption is not comparable with an uncommitted rate.
Spot, preemptible, and other interruptible products should also be excluded from a default ranking. Their lower prices come with interruption risk and, depending on the provider, prices or availability can change. AWS states that its Price List catalog does not contain EC2 Spot prices. Google notes that Spot pricing can change and that Spot VMs can be preempted. These products can be valuable for fault-tolerant batch workloads, but they belong in a separately labeled scenario with restart, checkpointing, and capacity-risk assumptions.
Do not stack discounts or free allowances mechanically. Eligibility, aggregation, and order-of-application rules vary, and Google documents that its VM discount types cannot simply be combined. For procurement, obtain account-specific quotes and compare total committed spend and uncovered usage, not only an advertised percentage reduction from list price.
A comparison grid should display the source and `price as of` timestamp for every row. AWS publishes anonymous Price List files across services and offers SNS notifications when those files change. Azure's unauthenticated Retail Prices API exposes public meters across services, while its authenticated Resource SKUs API supplies compute capabilities such as vCPU and memory. Google requires an API key for the public Cloud Billing Catalog API and says a latest-pricing response can be up to 12 hours old; machine specifications come from the authenticated Compute Engine machine-types API.
Oracle provides an anonymous JSON product-price endpoint, but regional compute-shape constraints and availability come from the signed ListShapes operation. DigitalOcean's authenticated Sizes API returns current Droplet configuration, region availability, and hourly and monthly prices together; other DigitalOcean categories may require their product documentation or separate APIs. No provider feed should be assumed to expose every discount, bundled feature, technical specification, or real-time capacity state.
Not every source publishes a changelog, effective date, or historical price. A production updater should retain immutable raw snapshots, follow pagination, compare hashes or catalog versions, validate unexpected row-count and price changes, and publish a new normalized catalog atomically. Separate adapters are needed because a generic price record cannot infer whether a meter means stored capacity, requests, transfer, provisioned compute, execution duration, or an add-on.
This guide was fact-checked on 20 July 2026. That date is not a promise that a displayed price remains current. Reopen the linked provider source before a purchasing decision, especially when a row lacks a recent successful refresh. If an updater fails, the application should show the last verified timestamp rather than silently presenting cached data as live.
A lower monthly estimate means only that the normalized candidate is cheaper under the entered workload and selected public list-price assumptions. It does not measure application throughput, latency, durability, recovery time, feature completeness, ecosystem fit, operational skill, carbon objectives, or migration cost. It also does not guarantee capacity, quota, service availability, or an equivalent SLA in the desired location.
Review overprovisioning and omitted components alongside price. A VM with twice the required memory may rank well but be wasteful; archive storage may look inexpensive until retrieval; a serverless function may exclude its gateway; and a database row may omit replicas or I/O. Test shortlisted products with representative load, then update the model with measured runtime, requests, data paths, and adjacent-service consumption. The useful outcome is an auditable shortlist whose assumptions can be changed, not a universal declaration that one cloud is cheapest.
A category result includes only the meters explicitly shown. VM rows may omit disks and network; object-storage rows may omit operations and retrieval; database rows may omit replicas and backups; serverless rows may omit gateways and orchestration; Kubernetes rows may omit workers, volumes, load balancers, and observability; GPU rows may omit host compute and storage. Public IPv4 addresses, NAT gateways, monitoring, logging, support plans, software licenses, taxes, and currency conversion can also materially change the total. Bundles and allowances must never be assumed across providers.
The calculator cannot model real-time capacity, quotas, SLA credits, outages, performance variance, burst limits, durability outcomes, sustained-use aggregation, invoice rounding, account-level discount eligibility, or every regional exception. Public catalogs generally show list pricing, not a customer's final rate. Reconcile the first production month against detailed billing exports and investigate differences by SKU, usage unit, and data path. Before committing meaningful spend, confirm the exact product, configuration, region, price type, billing unit, and terms in the provider console or a written quote.
Sources & further reading
This guide is educational. Calculator outputs depend entirely on the assumptions entered and do not predict investment returns, inflation, fees, taxes, or market conditions. Rules and product terms differ by country; verify any decision with current primary sources and an appropriately qualified professional. Nothing here is financial, tax, legal, or investment advice.
Interpret the number
Each lane has its own denominator: VM hours, stored gigabyte-months, database instance hours, function requests and execution, cluster hours, accelerator hours, or outbound gigabytes. The interface never ranks those unlike units in one list.
The monthly result includes only the cost components named in the selected lane. A database may still need storage, backups and transfer; a VM may need disks and public networking; a serverless workload may add gateway, logging and downstream-service charges.
Provider catalogs change independently and technically similar labels can hide performance or policy differences. Read the source and freshness marker, validate the shortlist in the provider calculator, and test the real workload before committing.
Before you act
No. The product selector creates a separate comparison lane with its own inputs and billing unit. A storage price is not ranked against a VM or function price because the resulting numbers answer different questions.
730 is a common planning average based on 8,760 hours per year divided by 12. Your invoice follows the provider’s actual metering rules, so use the runtime control for workloads that stop or scale down.
The initial comparison uses standard on-demand or pay-as-you-go list prices. Commitment and interruptible prices have different eligibility, payment, capacity and interruption assumptions and should be compared in separate modes.
No. Each lane names the included meters. Add connected services, requests, storage, backups, internal transfer, IP addresses, gateways, load balancing, observability, support, licenses, taxes and contract-specific adjustments.