DEV Community

Mustafa
Mustafa

Posted on

How to Find Wasted Azure Resources in Your Subscription (With Real Examples)

Azure bills are frustrating because the waste is almost never obvious. It hides in places you forget to check. This post covers the most common sources of wasted Azure spend I've seen across multiple subscriptions — with the exact CLI commands to find them.

Unattached Managed Disks

When you delete a VM in Azure, the disks are not automatically deleted unless you explicitly checked the box at creation time. Most teams don't. The result: dozens of orphaned disks billing you every month for nothing.

Find them:

az disk list --query "[?diskState=='Unattached'].{Name:name, Size:diskSizeGb, SKU:sku.name, RG:resourceGroup}" -o table
Enter fullscreen mode Exit fullscreen mode

A Premium SSD P30 (1 TB) costs around €130/month. A P20 (512 GB) around €65/month. Run this command on a subscription that has been active for 2+ years and the results are usually surprising.

Oversized VMs Running at Low CPU

Pull 14 days of average CPU for all your VMs:

az monitor metrics list \
  --resource /subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.Compute/virtualMachines/{vm-name} \
  --metric "Percentage CPU" \
  --interval PT1H \
  --aggregation Average \
  --start-time 2026-04-17T00:00:00Z \
  --end-time 2026-05-01T00:00:00Z \
  --output table
Enter fullscreen mode Exit fullscreen mode

Any VM averaging under 10% CPU with peaks under 40% is a strong candidate for downsizing. A D8s_v3 → D4s_v3 saves ~50% of that VM's cost with no performance impact for low-utilisation workloads.

Unused Public IP Addresses

Static IPs are €3–5/month each. Subscriptions accumulate them.

az network public-ip list --query "[?ipConfiguration==null].{Name:name, RG:resourceGroup, SKU:sku.name}" -o table
Enter fullscreen mode Exit fullscreen mode

Dev/Test VMs Without Auto-Shutdown

Any VM that runs overnight and on weekends when nobody uses it is burning ~65–70% of its cost for nothing. Enable auto-shutdown:

az vm auto-shutdown -g {resource-group} -n {vm-name} --time 1900
Enter fullscreen mode Exit fullscreen mode

Set the time in UTC. This single command can cut a dev VM's monthly cost by more than half.

Storage Accounts Still in Hot Tier

Old backups, log archives, and export files sitting in Hot tier cost 3–9x more than they should.

az storage account list --query "[].{Name:name, Kind:kind, AccessTier:accessTier, RG:resourceGroup}" -o table
Enter fullscreen mode Exit fullscreen mode

Check each storage account's actual access patterns in Azure Monitor. Anything accessed less than once a month belongs in Cool or Archive tier.


I built Prunr to automate all of this — it runs scanners across your Azure subscription and surfaces the specific resources wasting money with savings estimates, in about 30 seconds. Free tier available. But the CLI commands above will get you started without any tooling.

What waste patterns have you found in Azure subscriptions? Curious what others are seeing.

Top comments (0)