Azure bills are notoriously hard to predict. You spin up a VM for a test, forget about it, and three months later you are paying $300/month for a server nobody is using.
I have helped organisations cut their Azure spend by 30 to 60 percent without decommissioning anything critical. Here are the eight changes that deliver the fastest results.
1. Delete Orphaned Resources Immediately
The fastest win in any Azure cost audit is finding and deleting resources that are no longer attached to anything.
In the Azure Portal, navigate to Cost Management + Billing → Cost Analysis. Filter by resource type and sort by cost descending. Look for:
- Unattached managed disks — Disks that were created with a VM but the VM was deleted. The disk keeps billing even with no VM attached. Typical cost: $10 to $80/month per disk.
- Unused public IP addresses — Static IPs that are reserved but not assigned to any resource. Cost: $3.65/month each. Sounds small, but organisations often have dozens.
- Empty resource groups — Not a direct cost, but a signal that cleanup is needed.
- Stopped (deallocated) VMs — The compute is free when stopped, but the managed disk, public IP, and NIC still bill.
Action: Run this query in Azure Resource Graph Explorer to find all unattached disks:
Resources
| where type == "microsoft.compute/disks"
| where properties.diskState == "Unattached"
| project name, resourceGroup, properties.diskSizeGB, location
| order by properties.diskSizeGB desc
2. Right-Size Your Virtual Machines
Most VMs in Azure are over-provisioned. An organisation buys a D4s_v3 (4 vCPUs, 16GB RAM) because it sounds safe, but the actual CPU utilisation averages 8 percent.
In Azure Monitor, check the CPU percentage and Available Memory Bytes metrics for all your VMs over the last 30 days. If average CPU is below 20 percent and memory utilisation is below 50 percent, the VM is a candidate for downsizing.
Downsizing a D4s_v3 ($140/month) to a D2s_v3 ($70/month) saves $70/month per VM. In a 20-VM environment, this single change can save $1,400/month.
Tool: Azure Advisor automatically identifies right-sizing opportunities. Check it at Advisor → Cost in the Azure Portal.
3. Switch Dev/Test VMs to B-Series
Development and test environments do not need consistent high CPU performance. They need occasional bursts.
The B-series (burstable) VMs are 40 to 60 percent cheaper than equivalent D-series VMs because they use CPU credits rather than dedicated compute. A B2s (2 vCPU, 4GB RAM) costs $34/month versus $70/month for a D2s_v3.
For any VM that is used for development, testing, staging, or non-production workloads, switch to B-series. The performance is identical for most workloads.
4. Use Azure Hybrid Benefit
If your organisation has existing Windows Server or SQL Server licences with Software Assurance, you can apply them to Azure VMs through Azure Hybrid Benefit — saving up to 40 percent on Windows VMs and up to 55 percent on SQL Server VMs.
This is one of the most commonly missed savings in enterprise Azure environments. Check your licence entitlements and apply Hybrid Benefit in the VM settings.
5. Reserve Instances for Stable Workloads
For any VM or SQL Database that runs 24/7 and will continue to do so for at least a year, Reserved Instances offer 30 to 60 percent savings versus pay-as-you-go pricing.
A 1-year reservation for a D4s_v3 VM saves approximately $840/year. A 3-year reservation saves approximately $1,680/year.
Rule of thumb: If a resource has been running for 3+ months with no plans to decommission it, buy a reservation.
6. Enable Auto-Shutdown for Dev/Test VMs
Development VMs that run overnight and on weekends are pure waste. A VM running 730 hours/month costs 3x more than one running 250 hours/month (business hours only).
Enable Auto-shutdown on all dev/test VMs (VM settings → Auto-shutdown). Set shutdown for 7pm and require manual restart each morning. This alone typically cuts dev/test compute costs by 60 percent.
7. Move Cold Data to Cool or Archive Storage
Azure Blob Storage has three tiers:
- Hot: $0.018/GB/month — for frequently accessed data
- Cool: $0.01/GB/month — for data accessed less than once per month
- Archive: $0.00099/GB/month — for data accessed less than once per year
Most organisations store everything in Hot tier by default. Audit your storage accounts and move backups, logs, and old data to Cool or Archive. For 10TB of cold data, moving from Hot to Archive saves $170/month.
8. Set Budget Alerts
None of the above matters if costs creep back up over time. Set budget alerts in Azure Cost Management to notify you when spending exceeds thresholds.
Create alerts at 80 percent and 100 percent of your monthly budget. Add a forecast alert at 100 percent of budget to catch runaway costs before the month ends.
The Audit Checklist
If you want a structured approach to finding all of these savings (and more) in your Microsoft 365 and Azure environment, I have put together a comprehensive audit checklist:
Microsoft 365 Tenant Audit Checklist — $12
It covers Azure cost optimisation, M365 licence management, security settings, and compliance — 47 checkpoints that most IT admins complete in under two hours.
AutomateHQ publishes practical Azure and Microsoft 365 cost guides for IT professionals and finance teams.
Top comments (0)