The short answer
Roughly 27% to 30% of cloud spend is wasted, and the FinOps Foundation puts avoidable waste as high as 30% to 50% once unused storage and oversized resources are counted. Idle compute is the largest single category at around 35% of waste, followed by overprovisioned instances at 25%. Smaller companies waste a higher percentage; larger ones waste more money. Flexera's 2026 report found estimated waste rose to 29%, reversing a five-year downward trend.

Development and staging environments running through nights and weekends. Instances spun up for a migration two years ago that nobody switched off. This is consistently the single biggest category of waste.
An instance sized for a launch-day spike that never came, still running at four percent CPU. Rightsizing against multi-week data is where most of the recoverable money sits.
Snapshots, old backups, logs with no retention policy, and orphaned volumes left behind by instances that were terminated months ago.
Egress charges that nobody modelled. A chatty architecture moving data between availability zones can cost more than the compute doing the actual work.
Here is the structural reason waste persists, and it has nothing to do with technology. Engineering performance reviews rarely include cloud cost as a metric.
The developer who ships a feature that overprovisions by ten times is not penalised for it. The developer who spends a day rightsizing infrastructure often gets no recognition for that either. Without changing what gets noticed, behaviour does not change, and the waste regenerates as fast as you clear it.
Cost visibility that stops at the finance team fixes nothing, because the people who create the spend never see the consequence. The single highest-leverage change in most organisations is not a tool. It is showing engineers what their choices cost, in a dashboard they already look at.
This order matters. Committing to reserved capacity before rightsizing locks in the waste.
Scheduled shutdown for development and staging. Usually the single largest saving available, and it takes a day to implement. A staging environment running 168 hours a week when it is used for 45 is paying nearly four times what it needs to.
Unattached volumes, old snapshots, unused IP addresses, load balancers pointing at nothing. None of these show up as a problem, they just quietly bill every month.
Use multi-week p95 CPU and memory rather than averages, because averages hide the peaks that actually determine required capacity. Validate changes in staging before touching production.
Logs and backups without a retention rule grow forever. Decide how long each class of data needs to live and enforce it automatically rather than by memory.
You cannot allocate cost without tags, and you cannot fix what you cannot allocate. Enforce naming conventions before the estate gets larger, because retrofitting tags across hundreds of resources is miserable work.
Reserved instances and savings plans are real money, but only after the estate is the right size. Committing to oversized resources means paying a discounted rate for capacity you never needed.
Formal cloud cost programmes nearly doubled from 39% to 72% in a single year, which suggests this is becoming standard practice rather than an advanced discipline.
GPU spend is the fastest-growing cost category in cloud, and most of it goes to inference rather than training. That surprises teams who budgeted for a training run and then discovered the ongoing serving cost dwarfs it.
The same discipline applies, with one addition. An idle GPU instance costs considerably more per hour than an idle CPU instance, so autoscaling and shutdown scheduling matter more here than anywhere else in the estate. Check also whether a smaller model performs adequately, because the difference in serving cost between model sizes is usually larger than the difference in output quality for routine tasks.
We run our own servers rather than renting managed infrastructure per client, so our version of this discipline is different from a metered cloud bill. The constraint is capacity planning rather than a monthly surprise, and clients can take hosting on our infrastructure as a subscription.
The trade-off is worth stating openly rather than presenting as an advantage. Fixed cost means no bill shock, and it also means the capacity planning and the on-call responsibility sit with us. That suits a client who wants a predictable number and does not want to staff for infrastructure. It suits a client with unpredictable, spiky traffic less well, and we say so.
We run our own servers and clients can take hosting as a subscription, with capacity planning and monitoring included rather than billed by the hour.