When we run cost audits on enterprise Azure estates, the waste we find clusters around the same nine places — and it consistently lands between 20% and 40% of monthly spend. The 31% figure in the title is not a marketing number; it is a median. Here is the checklist we use, in the order of effort-to-savings ratio, so you can run it on your own environment this week.
1. Non-production environments running 24/7
Dev, test and staging environments rarely need nights and weekends. Running them around the clock means paying for 168 hours a week when the team uses at most 50. Auto-shutdown schedules on VMs and scale-to-zero on AKS node pools routinely cut non-prod compute cost by 60–70% with zero impact on developers.
2. Oversized virtual machines
The classic pattern: a VM sized during a panic in 2022 and never revisited. Pull 30 days of CPU and memory percentiles from Azure Monitor; anything under 20% average utilization is a right-sizing candidate. One size down is a 50% saving on that resource, and Azure Advisor will hand you the list for free.
3. Idle GPU nodes
GPU node pools are the single most expensive idle resource in modern estates. An unused ND-series node burns more per month than most teams’ entire dev environment. If you run AI workloads on AKS, KEDA-driven scale-to-zero on GPU pools is the highest-leverage FinOps change available in 2026 — inference workloads spin nodes up on demand and release them when queues drain.
4. Orphaned disks, IPs and snapshots
Deleting a VM does not delete its managed disks, public IPs or old snapshots. Estates that have never been swept typically carry 5–10% of storage spend in pure orphans. A resource graph query finds them in minutes; a policy that tags resources with owners prevents the pile from re-forming.
5. Missing reservations and savings plans
Steady-state production workloads running on pay-as-you-go rates leave 30–65% on the table. The math is not subtle: identify anything that has run continuously for 90 days, and cover it with reserved instances or a savings plan. Start with one-year terms; the three-year discount is rarely worth the flexibility loss for a growing company.
6. Premium storage on non-critical data
Premium SSD for logs, blob hot tier for archives, ZRS for disposable test data — storage class mismatches are invisible line by line and expensive in aggregate. Lifecycle management policies that age blobs from hot to cool to archive are a one-time setup with compounding returns.
7. Untagged resources nobody can attribute
You cannot fix what you cannot attribute. If more than 20% of your bill is untagged, every other item on this list gets harder, because nobody owns the waste. Enforce a minimal tag set (owner, environment, product) with Azure Policy in audit mode first, deny mode after 30 days.
8. Cross-region and cross-zone data transfer
Chatty services split across regions, log pipelines shipping to a workspace in another geography, backups replicating further than compliance requires — egress is the line item nobody planned. Co-locating chatty components and reviewing Log Analytics data flows often shaves meaningful percentages.
9. LLM token spend without budgets
The newest leak: Azure OpenAI and Bedrock consumption growing unmonitored. Uncached prompts, oversized context windows, GPT-class models doing work a small model handles — token cost control (caching, model routing, per-workload budgets with alerts) is where FinOps practice is heading, and almost nobody has it in place yet.
Run this list top to bottom and most teams find their 20–40%. If you want a second pair of eyes, our free platform audit covers exactly this checklist against your actual estate — findings and a prioritized savings plan in five business days.